Сделай Сам Свою Работу на 5

Кодирование состояний автомата





Самарский государственный архитектурно-строительный университет

Факультет информационных систем и технологий

Кафедра прикладной математики и вычислительной техники

 

Осенний семестр 2011/12 учебного года

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ

 

по дисциплине:

«Информационные технологии»

на тему:

«СИНТЕЗ КОНЕЧНЫХ АВТОМАТОВ» вариант № 18

 

ВЫПОЛНИЛ студент Группы ГИП-111 Досов Я. А.
   
Преподаватель – д.т.н., профессор Прохорова О. В.
оценка  
дата  

 

 

Самара 2012

Оглавление

 

Введение. 3

1. Задание на курсовое проектирование. 3

2. Построение и преобразование грамматик. 6

3. Построение детерминированного конечного автомата. 8

4. Минимизация автомата. 10

5. Работа с сетями Петри. 12

6. Кодирование состояний автомата. 15

7. Структурный синтез автомата. 20

Литература. 36

 

Введение

Синтез конечных автоматов является важным разделом в изучении вопросов организации вычислительных процессов и структур. Необходимость в построении теории автоматов возникла с развитием вычислительной техники, с появлением теории формальных языков и грамматик - теории, позволяющей описывать и анализировать синтаксические свойства языков программирования и других формальных языков. Потребовалось решение вопросов преобразования грамматик в автоматы, которые бы распознавали и транслировали множества, задаваемые грамматиками.



Основой изучения данного раздела теории является

· построение базовых формальных моделей описания логических структур, динамики поведения вычислительных структур;

· выработка навыков проектирования вычислительных систем;

· формирование представления о методах, используемых при решении задач анализа, синтеза организации функционирования вычислительных структур и системного программного обеспечения.

Задание на курсовое проектирование

1. Построение право-линейной грамматики по полученным данным.

 

2.Переход от право-линейной грамматики к автоматной. Результат -

Право-линейная и автоматная грамматики.

3.Построение недетерминированного распознающего автомата.

4.Результат - таблица переходов и граф переходов автомата.



5.Переход от недетерминированного автомата к полностью опреде-

ленному детерминированному автомату. Результат - таблица перехо-

дов и граф переходов автомата, проверка эквивалентности автоматов.

6.Минимизация автомата. Построение таблиц переходов на основе

эквивалентных преобразований. Построение разбиения множества

состояний на классы эквивалентности. Результат - таблица переходов

и граф переходов минимального автомата.

7.Выполнение предыдущего этапа с использованием сети Петри. Результат - сеть Петри, соответствующая автоматной грамматике, и минимальная сеть Петри. Сравнение полученной минимальной сети с таблицей переходов минимального автомата.

8.Кодирование состояний автомата. Результат - логические функции переключения элементов памяти; логические функции состояния ошибки и состояния, подтверждающего принадлежность анализируемой формальной цепочки входных символов формальному языку заданной грамматики.

9. Построение комбинационной схемы автомата.

Для синтеза конечного автомата задана формальная грамматика

G = < V , W , S , R >,

где V = {c1, c2,..., c18} - словарь терминальных символов;

W = {S, A, B, C, D, E, F} - словарь нетерминальных символов;

S - начальный символ грамматики; R - множество правил вывода:

 

S ® c1 c2 c3 A С ® c8 E

S ® c1 c4 c5 B C ® c9

S ® c6 C D ® c10 S

S ® c7 F D ® c11

A ® c8 D E ® c10 S

A ® c9 E ® c11

B ® c8 E F ® c12 c13 c14 c15

B ® c9 F ® c10 c13 c14 c15

F ® c17 c18 c15

 

Задача курсовой работы - синтезировать конечный автомат, распознающий цепочки входного языка на принадлежность заданной грамматике.

 



Для выполнения индивидуальной работы требуется перейти к новому терминальному словарю, используя табл. 1 и 2.

 

Таблица 1

 

А Б В Г Д Е Ж З И Й К Л М Н О П
x1 x5 x2 x4 x6 x6 x4 x3 x3 x0 x7 x0 x3 x7 x4 x5
Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Э Ю Я  
x0 x4 x5 x7 x2 x5 x4 x2 x2 x0 x6 x1 x1 x3 x7 x5

 

Таблица 2

 

c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18
д о с о в   я р о с л а в   а л е к
x6 x4 x4 x6 X2 x5 x7 x0 x4 x4 x0 X1 x2 x5 X1 X0 X6 X7

Построение и преобразование грамматик

На основе использования табл.1 и 2 составляется грамматика индивидуальная для конкретного студента. Например,

 

1. S ® x6 x4 x4 A 9. C ® x0 E

2. S ® x6 x6 x2 B 10. C ® x4

3. S ® x5 C 11. D ® x4 S

4. S ® x7 F 12. D ® x0

5. A ® x0 D 13. E ® x4 S

6. A ® x4 14. E ® x0

7. B ® x0 E 15. F ® x1 x2 x5 x1

8. B ® x4 16. F ® x4 x2 x5 x1

17. F ® x6 x7 x1.

 

Грамматика называется праволинейной, если правая часть каждого правила содержит не более одного нетерминала, причем этот нетерминал является самым правым символом.

Грамматика называется автоматной, если ее правила имеют вид:

 

A ® x B ; A ® x , где x Î V , В Î W.

 

Для сведения праволинейной грамматики к автоматной используют следующий прием (в качестве примера возьмем одно из правил приведенной выше грамматики, а именно, правило S -> x7 x0 x1 A). Перепишем левую часть правила и первый слева символ правой части, а оставшуюся от правой части цепочку обозначим новым нетерминальным символом, который дополнительно будет вводиться в грамматику, например , S1. В результате получим следующее новое правило:

 

S ® x7 S1; S1 ® x0 x1 A.

 

Затем, аналогичным способом преобразуем правило для S1 (получим правила вида S1 ® x0 S2 и S2 ® x1 A). Правило S2 не требует дальнейших преобразований, так как оно удовлетворяет требованиям правил автоматной грамматики.

Данным образом преобразуются все правила грамматики, которые имеют в правой части цепочку терминальных символов.

Продолжим пример. Из праволинейной грамматики, записанной выше, получаем автоматную грамматику G’ с правилами вывода вида:

1. S ® x6 S1 16. D ® x0

2. S1® x4 S2 17. E ® x4 S

3. S2® x4 A 18. E ® x0

4. S ® x6 S3 19. F ® x1 S5

5. S3® x6 S4 20. S5®x2 S6

6. S4®x2 B 21. S6® x5 S7

7. S ® x5 C 22. S7® x1

8. S ® x7 F 23. F®x4 S6

9. A ® x0 D 24. F ® x6 S8

10. А ® x4 25. S8 ® x7 S7.

11. B ® x0E

12. B ® x4

13. C ® x0 E

14. C ® x4

15. D ® x4 S

 

Построение детерминированного конечного автомата

 

Для автоматной грамматики строится таблица переходов недетерминированного автомата (в таблице по строкам расположены состояния, а по столбцам - входные символы, в клетках на пересечении i-й строки и j-го столбца проставляется состояние, в которое переходит автомат из состояния i по приходу входного символа j ). Для этого каждому нетерминалу ставится в соответствие некоторое состояние автомата. Затем по грамматике таблица заполняется следующим образом: на пересечении строки состояния, соответствующего нетерминалу левой части правила, и столбца, соответствующего терминальному символу, ставится состояние, соответствующее нетерминальному символу правой части правила. Если нетерминал в правой части отсутствует, то в клетке таблицы ставится заключительное состояние, которое вводится дополнительно к уже имеющимся состояниям.

 

Приведение недетерминированного автомата

к детерминированному виду

Детерминированным конечным автоматом называется конечный автомат, любая клетка таблицы переходов которого не содержит несколько состояний. В пустой клетке подразумеваем состояние ошибки.

Процедура приведения недетерминированного конечного автомата к детерминированному (по таблице переходов) сводится к следующему:

 

1. Определяется клетка, в которой содержится 2 или более состояний

( например, qi и qj).

2. Строка i и строка j накладываются друг на друга, и в таблице переходов появляется новая склеенная строка, соответствующая новому состоянию qi, j.

3. Если состояние qi или qj стоит отдельно или в комбинации с другими состояниями еще в какой-либо клетке таблицы, то соответствующая строка i или j сохраняется в таблице, иначе - убирается из таблицы после склеивания.

Продемонстрируем изложенное на примере:

Таблица 3

  Состояние x0 x1 x2 x3 x4 x5 x6 x7
q0 S (нач. сост.)         q15 q3 q7 ,q9 q6
q1 A q4       q15      
q2 B q5       q15      
q3 C q5       q15      
q4 D q15       q0      
q5 E q15       q0      
q6 F   q11     q12   q14  
q7 S1         q8      
q8 S2         q1      
q9 S3             q10  
q 10 S4     q2          
q 11 S5     q12          
q 12 S6           q13    
q 13 S7   q15            
q 14 S8               q13
q 15 закл. сост.                
                     

 

Склеиваем состояния q7 и q9 в состояние q7,9 . В итоге, получаем таблицу 4:

 

Таблица 4

  Состояние x0 x1 x2 x3 x4 x5 x6 x7
q0 S (нач. сост.)         q15 q3 q7 ,9 q6
q1 A q4       q15      
q2 B q5       q15      
q3 C q5       q15      
q4 D q15       q0      
q5 E q15       q0      
q6 F   q11     q12   q14  
q7,9 S1         q8   q10  
q8 S2         q1      
q 10 S4     q2          
q 11 S5     q12          
q 12 S6           q13    
q 13 S7   q15            
q 14 S8               q13
q 15 закл. сост.                
                     

Минимизация автомата

Теорема. Для любого автомата существует минимальный автомат единственный с точностью до изоморфизма.

Рассмотрим алгоритм минимизации автомата по методике Мура:

 

1. В таблице переходов автомата отыскиваются строки, у которых имеются рабочие состояния в одинаковых столбцах. Под рабочим состоянием будем понимать состояние, отличное от состояния ошибки. Состояние ошибки на таблице переходов обозначено пустой клеткой. Состояния, соответствующие таким строкам, заносятся в группы.

 

2. Рабочие состояния внутри группы проверяются на эквивалентность.

Два состояния qi и qj называются эквивалентными, если для любого

входного символа Xk функции выходов и функции переходов пар

( qi, Xk ) , ( qj, Xk ) будут равны.

 

3. Если среди рабочих состояний групп через ряд проверок устанавливается эквивалентность, то такие состояния также считаются эквивалентными.

Удаляем из таблицы строку состояния q9, так как на состояние q9 нет больше переходов. Cтроку состояния q7 заменяем на склеенную строку q7,9, так как на состояние q7 нет больше переходов. Состояния

q1, q2, q3 - эквивалентны, удаляем строки q2 и q3. Заменяем в таблице 5 все q2 и q3 на q1. Состояния q4 и q5 - эквивалентны, удаляем строку q5, соответственно q5 в таблице 4 заменяем на q4. В итоге, получаем таблицу 5:

 

Таблица 5

  Состояние x0 x1 x2 x3 x4 x5 x6 x7
q0 S (нач. сост.)         q15 q1 q7 ,9 q6
q1 A q4       q15      
q4 D q15       q0      
q6 F   q11     q12   q14  
q7,9 S1         q8   q10  
q8 S2         q1      
q 10 S4     q1          
q 11 S5     q12          
q 12 S6           q13    
q 13 S7   q15            
q 14 S8               q13
q 15 закл. сост.       q0        

 

Продолжим рассматривать решение в соответствии с обозначенным алгоритмом.Анализ делаем по табл. 4. Группы состояний, проверяемые на эквивалентность, следующие:

( q1;q2;q3), (q4; q5,).

Проведем анализ этих состояний по переходам. Устанавливаем, что состояния q1, q2 и q3, а также состояния q4 и q5 являются эквивалентными по определению. Обозначив эквивалентные состояния одним состоянием, введем новые нетерминальные символы r вместо q. Будем иметь:

r0 = q0; r1 = q1; r2 = q4; r3 = q6; r4 = q7,9;

r5 = q8; r6 = q10; r7 = q11; r8 = q12; r9 = q13, r10= q14,

r11=q15;

Введем полученные замены и подстановки в табл.5 переходов автомата. Будем иметь новую таблицу 6 эквивалентную с точностью до изоморфизма таблице переходов 5.

Таблица 6

Соответствие нетерминалов Терминалы
Х0 Х1 Х2 Х3 Х4 Х5 Х6 Х7
r0 -нач.сост. q0         r11 r1 r4 r3
r1 q1 r2       r11      
r2 q4 r11       r0      
r3 q6   r7     r8   r10  
r4 q7,9         r5   r6  
r5 q8         r1      
r6 q10     r1          
r7 q11     r8          
r8 q12           r9    
r9 q13   r11            
r10 q14               r9
r11- закл. сост q15       ro        
                                 

Работа с сетями Петри

Сеть Петри определяется как формальная система, характеризуемая 4 формальными объектами: S = < P, T, E, M0 >, где

· P - конечное множество позиций;

· T - конечное множество переходов;

· E - конечное множество дуг;

· M0 - начальная маркировка.

 

Графически сеть Петри изображается двудольным графом с двумя типами вершин P и T. При переходе от грамматики к сети Петри позиции ассоциируют с нетерминальными символами, а переходы - с терминальными. Позиции могут иметь несколько входящих и исходящих дуг, а переходы - одну входящую дугу и не более одной исходящей дуги для автоматных сетей .

Процедура минимизации конечного автомата с использованием сети Петри:

1. На сети выделяются 2 позиции, имеющие одинаковое количество одинаковых входных переходов.

2. Позиции склеиваются. При этом множества входящих и исходящих дуг этих позиций объединяются без дублирования.

3. На сети выделяются 2 позиции, имеющие одинаковое

количество одинаковых выходных переходов.

4. Позиции склеиваются. При этом множества входящих и

исходящих дуг этих позиций объединяются без дублирования.

5. Если на найденные позиции есть ссылки из других позиций, то они остаются в сети, иначе удаляются после склеивания вместе с входными и выходными дугами и соответствующими переходами.

6. Если из некоторой позиции по одинаковому переходу xi существует более одной выходной позиции, то такие выходные позиции должны быть склеены.

Процедура повторяется с п. 1 до тех пор, пока позиции сети могут быть склеены.

Рассмотрим построение сети Петри для автоматной грамматики. Выполняя все необходимые правила построения сети и минимизации автомата по сети, последовательно получим сети, приведенные на рис.1 -3. На последней сети Петри проставлены ri, по разметке которых легко сравнить результаты минимизации автомата по сети Петри с минимизацией автомата по методике алгоритма Мура (См. табл. 6).

 

 

Рис. 1. Сеть Петри, составленная по автоматной грамматике

Применяя выше названные правила минимизации сети Петри, можно объединить вершины {D, E} и {A,B,C} согласно правилам 3-4. У них имеется на выходе одинаковое количество одинаковых переходов. Затем объединяются вершины {S1,S3} согласно правилам 1-2. Построим сеть после преобразования, получим:

 

 

Рис. 2. Минимизированная сеть Петри

Если провести параллель между состояниями минимизированного детерминированного автомата и минимальной сетью Петри, то можно установить соответствие:

r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11
S A,B,C D,E F S1,S3 S2 S4 S5 S6 S7 S8 Z

Кодирование состояний автомата

Кодирование автомата определяет обеспечение одного из важнейших свойств автомата, а именно устойчивость автомата по отношению к состязаниям элементов памяти. Переходам автомата из одного состояния в другое сопоставим изменение состояний элементов памяти.

Если на входы двух элементов памяти подать одновременно один сигнал, то на выходе сигнал возникнет не одновременно. Это явление называется состязаниями элементов памяти.

Считается, что автомат работает устойчиво, если в процессе его работы не возникает критических состязаний. Критическим считаем такое состязание элементов памяти, когда автомат под действием одного и того же входного воздействия может перейти в разные состояния. Поэтому первоочередной задачей кодирования является обеспечение устойчивости автомата.

Существует 2 способа кодирования автомата. Первый характеризуется устранением всех состязаний элементов памяти. Для этого всем внутренним

состояниям, для которых существуют переходы, приписываются соседние кодовые комбинации, отличающиеся друг от друга одной переменной.

Второй способ кодирования связан только с устранением критических состязаний. Методы первой и второй групп имеют свои преимущества и свои недостатки.

Чтобы приступить к кодированию, которое необходимо выполнить для построения в последующем структурной схемы автомата, введем в табл. 6 переходов автомата символ конца цепочки входных символов, например, символ x3, который оказался неиспользуемым в рассматриваемой грамматике. Соответственно, необходимо в таблицу переходов ввести переход из заключительного состояния r11 в начальное состояние r0 по входному символу x3. Новая таблица переходов примет вид, показанный табл. 7, в которой последний столбец отведен для формируемых кодов состояний автомата.

Число внутренних переменных кода, изменяющих свои значения при переходе автомата из одного состояния в другое, есть расстояние по Хеммингу между этими кодами .

Наименьшее число переменных, необходимое для кодирования синхронного автомата с N внутренними состояниями определяется формулой:

n = ] log2 (N) [

] [ - ближайшее сверху к log2 (N) целое число. Например, при N=13 n

будет равно 4.

 

Число кодовых переменных, необходимое для кодировки состояния автомата соседними кодами определяется по формуле:

n = 2 · ] log2 (N) [ - 1.

Знаком · обозначена операция умножения.

Чем меньше внутренних переменных изменяется при любом переходе, тем проще реализация функций переходов, т.е. проще структурная реализация автомата.

В курсовой работе используется код минимальной длины. В связи с этим может возникнуть ситуация, когда все соседние коды заняты, а состояния автомата еще не закодированы в полном объеме. Это требует увеличения расстояния по Хеммингу на следующем шаге кодирования. Кодирование будем осуществлять методом проб и ошибок.

 

Таблица 7

  x0 x1 x2 x3 x4 x5 x6 x7 Код
r0 нач. сост.         r11 r1 r4 r3
r1 r2       r11      
r2 r11       r0      
r3   r7     r8   r10  
r4         r5   r6  
r5         r1      
r6     r1          
r7     r8          
r8           r9    
r9   r11            
r10               r9
r11 закл. сост.       r0        

 

 

Таблица 8

  x0 x1 x2 x3 x4 x5 x6 x7 Код
r0 нач. сост.         r11 r1 r4 r3
r1 r2       r11      
r2 r11       r0      
r3   r7     r8   r10  
r4         r5   r6  
r5         r1      
r6     r1          
r7     r8          
r8           r9    
r9   r11            
r10               r9
r11 закл. сост.       r0        

 

 

Таблица 9

  x0 x1 x2 x3 x4 x5 x6 x7 Код
r0 нач. сост.         r11 r1 r4 r3
r1 r2       r11      
r2 r11       r0      
r3   r7     r8   r10  
r4         r5   r6  
r5         r1      
r6     r1          
r7     r8          
r8           r9    
r9   r11            
r10               r9
r11 закл. сост.       r0        

 

 

При этом используем направления кодирования состояний, представленные на рис. 4.

 


r10 r3 r0 r11

 

r8 r7 r4 r1 r2

r9 r5 r6

 
 


Рис. 4

 

 

Выполним три варианта кодирования (Таблицы 7, 8, 9), из которых выберем наилучший на основе критерия Махалонобиса. Критерием кодирования автомата считаем минимум функционала Махаланобиса.

,

 

где M - число переходов. Через (ri , rj) обозначено расстояние между кодами ri и rj по Хеммингу.

В результате получим, что в первом случае суммарное расстояние по Хеммингу для 20 переходов равно 32, а во втором и третьем случае - 26. Выберем третий вариант.

 

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.