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

Построение праволинейной грамматики.

Исходными заданиями для курсовой работы являются две таблицы - табл. 1 и

2-й правила вывода R, приведенные ниже.

В табл. 1 в первую строку записывается перечисление 18 Символов Сi, во

вторую строку записываются первые 18 символов фамилии, имени и отчества

студента, а в третью - заносится для каждого из 18 символов строки символ

из алфавита {х1, х2, х3, х4, х5, х6, х7} в соответствии с табл. 2.

 

Таблица 1

ci C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18
si                                    
xi X X X X X X X X X X X X X X X X X X

Таблица 2

 

А Б В Г Д Е Ж З И Й К Л М Н О П
X1 X5 X2 X4 X6 X6 X4 X3 X3 X0 X7 X0 X3 X7 X4 X5
Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я -
X0 X4 X5 X7 X2 X5 X1 X2 X2 X0 X6 X1 X1 X3 X7 X5

Для курсовой работы задана формальная грамматика G=(Vt, Vn, S, R), где Vt={c1, c2, c3, ... , c8} - терминальный словарь; Vn= {S,A,B,C,D,E,F } - нетерминальный словарь; S, принадлежащее множеству Vn - начальный символ грамматики; R - множество правил вывода, которые имеют следующий вид:

Sc1 c2 c3 A; Sc1 c4 c5 B; Sc6 C; Sc7 F; Ac8 D; Ac9;

Bc8 E; Bc9; Cc8 E; Cc9; Dc10 S; Dc11; Ec10 S;

Ec11; Fc12 c13 c14 c15; Fc16 c13 c14 c15; Fc17 c18 c15;

Эта грамматика, являющаяся праволинейной, приводится к виду

G’=(V’t,V’n, S, R’), где V’t={x0, x1,х2, ... , х7} - новый терминальный словарь;

R' - множество правил вывода, получаемых из заданных заменой символов

из алфавита Vt символами из алфавита V’t в соответствии с табл. 1.

 

В данном примере они имеют вид

Sx4 x0 x1A | x4 x7 x7B | x4C | x5F; Ax4D | x6; Bx4E | x6; Cx4E | x6;

Dx0S | x4; Ex0S | x4; Fx6 x0 x5 x2 | x0 x0 x5 x2 | x1 x2 x2

Здесь | - металингвистический символ (связка), читаемый как «или».

Переход от праволинейной грамматики к автоматной.

Этот этап выполняется путем расширения нетерминального словаря способом, вытекающим из возможности преобразования праволинейной грамматики в автоматную G’’=(Vt’, Vn’’, S, R’’). Для рассматриваемого примера получим множество R’’ правил вывода:

Sx4 S1; S1x0 S2; S2x1 A; Sx4 S3; S3x7 S4; S4x7 B; Sx4 C; Sx5 F;

Ax4 D; Ax6; Bx4 E; Bx6; Cx4 E; Cx6; Dx0 S; Dx4;

Ex0 S; Ex4; Fx6 F1; F1x0 F2; F2x5 F3; F3x2; Fx0 F4; F4x0 F5;

F5x5 F6; F6x2; Fx1 F7; F7x2 F8; F8x2

Таким образом, нетерминальный словарь теперь имеет вид

Vn’’ = {S1, S2, S3, S4, А, В, С, D, E, F, F1, F2, F3, F4, F5, F6, F7, F8} и его

мощность | Vn | равна 19.

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

Рассмотрим недетерминированный конечный распознающий автомат

A=(Q, х, , q0, qk), где Q - множество внутренних состояний; х - входной алфавит; - отображение :x*QP(Q); P(Q) - множество подмножеств из Q; q0, принадлежащее Q - начальное состояние; qk, принадлежащее Q - заключительное состояние, qkq0.

Этот автомат зададим следующим образом. Поставим в соответствие символам нетерминального словаря Vn’’ состояния из Q, в том числе нетерминалу S - начальное состояние q0, и добавим заключительное состояние qk, в котором автомат оказывается, если цепочка предъявляемых ему символов принадлежит L(G’’). Таким образом, мощность | Q | множества Q равна | Q | = | Vn’’ | +1=20.

 

В данном примере нетерминальным символам, указанным в строках 1 и 3 таблицы 3, соответствует состояния автомата, перечисленные в строках 2 и 4.

 

Таблица 3

 

S S1 S2 S3 S4 A B C D E
q0 q1 q2 q3 q4 q5 q6 q7 q8 q9
F F1 F2 F3 F4 F5 F6 F7 F8 -
q10 q11 q12 q13 q14 q15 q16 q17 q18 q19

Заключительное состояние обозначено через q19.

Поставив правилам вывода в соответствие переходы автомата, получим таблицу переходов недетерминированного конечного автомата (табл. 4) и граф переходов (рис. 1).

 

Таблица (4) переходов недетерминированного конечного автомата.

 

Рисунок 1

 

 

Таблица 4

 

q x0 x1 x2 x3 x4 x5 x6 x7
q0         q1,q3,q7 q10    
q1 q2              
q2   q5            
q3               q4
q4               q6
q5         q8   q19  
q6         q9   q19  
q7         q9   q19  
q8 q0       q19      
q9 q0       q19      
q10 q14 q17         q11  
q11 q12              
q12           q13    
q13     q19          
q14 q15              
q15           q16    
q16     q19          
q17     q18          
q18     q19          
q19                

 

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

Недетерминированность автомата локально проявляется в том, что из
некоторого его состояния qi исходят несколько дуг, помеченных одним и тем
же символом Xj. В этом случае она устраняется склеиванием двух состояний
в одно. В результате применения этого алгоритма от автомата на рис.1 можно
перейти к эквивалентному детерминированному автомату, таблица
переходов которого приведена в табл. 5, а соответствующий ей граф
переходов - на рис. 2. Таблица 5

 

q x0 x1 x2 x3 x4 x5 x6 x7
q0         q1,3,7 q10    
q1,3,7 q2       q9   q19 q4
q2   q5            
q4               q6
q5         q8   q19  
q6         q9   q19  
q8 q0       q19      
q9 q0       q19      
q10 q14 q17         q11  
q11 q12              
q12           q13    
q13     q19          
q14 q15              
q15           q16    
q16     q19          
q17     q18          
q18     q19          
q19                

Рисунок 2

 

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

Построение минимального (но числу состояний) автомата, эквивалентного полученному в предыдущем разделе полностью определенному детеминированному конечному автомату, осуществляется в два этапа. На первом находится разбиение состояний автомата на классы эквивалентности, а на втором строится минимальный (иначе - приведенный) автомат. В начале составляется треугольная таблица (табл.6), клетки которой соответствуют всем парам (qi, qj), ij рабочих состояний. Она заполняется следующим образом. Если для рабочих состояний qi и qj в таблице существует входной символ хk, при котором переход из qi осуществляется в одно из рабочих состояний, а из qj - в состояние ошибки, то состояния qj и qj не эквивалентны, и соответствующая им клетка помечается крестом. Иначе, если какие-либо две строчки табл.5 содержат разное число рабочих состояний или отличаются позициями, занимаемыми рабочими состояниями, то обозначающие это строки состояния не эквивалентны. В противном случае в клетку таблицы 6 с координатами qi, qj запишем каждую пару состояний (qv, qw), в которые автомат может перейти из qi и qj при подаче одного и того же входного символа.

Таблица 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1,3,7 X                                        
X X    
X X X    
X X X X    
X X X X      
X X X X X X    
X X X X X X      
X X X X X X X X    
X X X X X X X X X    
X X X X X X X X X X    
X X X X X X X X X X X    
X X X X X X X X X X X X    
X X X X X X X X X X   X X      
X X X X X X X X X X X   X X      
X X X X X X X X X X X X X X X      
X X X X X X X X X X X   X X   X    
X X X X X X X X X X X X X X X X X  
  1,3,7  

Витоге невычеркнутые клетки табл. 6 соответствуют всем парам

эквивалентных состояний. Класс эквивалентности образуется состояниями,

которые попарно эквивалентны. В данном случае получается 4 класса

эквивалентности: {q5, q6}, {q8, q9,}, {q12, q15},{q13, q16, q18}. Каждое

состояние, не вошедшее ни в один класс эквивалентности, эквивалентно

лишь само себе и само образует этот класс. В нашем примере к

перечисленным классам необходимо добавить еще 9 классов

эквивалентности: q0, q1,3,7, q2, q4, q10, q11, q14, q17, q19,

Состояния минимального автомата обозначим буквами r с индексами:

r0={q5, q6}, r1={q8, q9}, r2={q12, q15}, r3={q13, q16, q18}, r4={q1,3,7},

r5={q2}, r6={q4}, r7={q10}, r8={q11}, r9={q14}, r10={q17}, r11={q19}, r12={q0}.

 

 

Минимальный автомат содержит, таким образом, 13 состояний, не считая состояния ОШИБКА. Граф переходов этого автомата приведен на рис. 3, а таблица переходов - в табл. 7

Рисунок 3



 


Таблица 7