Professional Documents
Culture Documents
АУТОМАТИ
ПРОГРАМСКИ ПРЕВОДИОЦИ
Проф. др Ненад Јовановић
© N. Jovanović, 2017-2021 1
Аутомат
Аутомат је модел дискретног математичког
система који читањем знак по знак одлучује да
ли је прочитани низ елемент задатог језика.
Аутомат може да се представи као машина која
чита улазне карактере и која има коначан скуп
стања.
• На почетку, аутомат се налази у почетном стању.
• Када се учита следећи знак врши се промена
стања.
• Ако се на крају аутомат нађе у завршном стању,
прихвата се низ знакова, у супротном реч се не
прихвата.
© N. Jovanović, 2017-2021 2
Аутомат
© N. Jovanović, 2017-2021 3
Аутомат
Аутомати се могу поделити на Тјурингове
машине, линеарно ограничене аутомате,
магацинске аутомате и коначне аутомате.
Посебну важност у проучавању
програмских преводиоца имају коначни
аутомати јер они могу да служе за
препознавање регуларних језика.
Регуларни изрази описују тачно исти скуп
језика као и коначни аутомати.
© N. Jovanović, 2017-2021 4
Коначни аутомати
Нема меморију
© N. Jovanović, 2017-2021 5
Коначни аутомати
Скуп свих речи које аутомат прихвата
зовемо ЈЕЗИК који аутомат прихвата.
Коначни аутомати се деле на:
• детерминистичке коначне аутомате (ДКА) и
• недетерминистичке коначне аутомате
(НКА).
© N. Jovanović, 2017-2021 6
Детерминистички коначни аутомати
© N. Jovanović, 2017-2021 7
Детерминистички коначни аутомати
© N. Jovanović, 2017-2021 8
Детерминистички коначни аутомати
© N. Jovanović, 2017-2021 9
Граф прелаза
Коначни аутомат се приказује и помоћу
графа прелаза (графа транзиције).
Граф прелаза је директни граф чији су
чворови означени стањима, а гране
знацима алфабета.
Чворови представљају стања, а гране
представљају функције транзиције.
Постојање гране означене са а која иде од
чвора S0 ка чвору S1 значи да у
одговарајућем коначном аутомату важи:
T(S0, a) = S1
© N. Jovanović, 2017-2021 10
Граф прелаза
© N. Jovanović, 2017-2021 11
Функција прелаза
Функција прелаза коначног аутомата може бити представљена и
табелом транзиције.
У табели, врсте представљају стања коначног аутомата, а
колоне симболе азбуке.
У пресеку врсте и колоне дефинисан је прелаз у стање из стања
дефинисаног у врсти, а под дејством симбола означеног у
колони
© N. Jovanović, 2017-2021 12
Пример
© N. Jovanović, 2017-2021 13
Минимизација аутомата
Минимизација коначног аутомата је
поступак трансформације коначног
аутомата у аутомат који прихвата исти
језик, а који садржи што је могуће мањи
број стања.
© N. Jovanović, 2017-2021 14
Минимизација аутомата
Сувишна стања аутомата стања у која се
не може стићи под дејством улазних
симбола и ова стања је могуће избацити
из табеле прелаза.
Проналажење скупа сувишних стања
састоји се у томе да се одреде која стања
аутомата су достижна.
Скуп сувишних стања се онда добија као
разлика скупа стања аутомата и скупа
достижних стања.
© N. Jovanović, 2017-2021 15
Минимизација аутомата
Поступак за одређивање скупа
достижних стања је следећи:
• Скуп достижних стања означити са D
• Додати стартно стање у скуп D и означити
га као необрађено.
• Док постоји необрађено стање S у D
понављати следеће кораке:
• Убацити у D (као необрађена) сва стања која се
појављују у реду S табеле прелаза.
• Означити S као обрађено у D.
© N. Jovanović, 2017-2021 16
Минимизација аутомата
Стање S1 коначног аутомата А = (S, Σ, T, s, F)
је еквивалентно стању S2 коначног аутомата
А’ = (S’, Σ’, T’, s’, F’) ако и само ако аутомат А
у стању S1 прихвата исти скуп као и аутомат
А’ у стању S2.
Релација еквиваленције је транзитивна, па
ако су стања S1 и S2 еквивалентна и стања S2
и S3 еквивалентна онда су еквивалентна и
стања S1 и S3.
© N. Jovanović, 2017-2021 17
Еквивалентна стања
Стања S1 и S2 су еквивалентна ако су
испуњени:
• Услов компатабилности: или су стања
прихватања или стања одбијања.
• Услов пропагације: прелази из ових стања
за сваки улазни симбол морају бити
међусобно еквивалентна стања.
Аутомати су еквивалентни ако су
еквивалентна њихова почетна стања.
© N. Jovanović, 2017-2021 18
Метода партиције
Скуп стања се дели на међусобно
дисјунктне скупове (скупови чији
је пресек празан скуп ).
У сваком подскупу, стања су међусобно
еквивалентна.
Скуп са еквивалентним стањима може
да се замени новим стањем.
Поступак је итеративан.
© N. Jovanović, 2017-2021 19
Algoritam
1. Eleminisati nedostižna stanja
2. Nacrtati tabelu tranzicija
3. Teorema ekvivalencije
1. k=0
2. Podeliti skup stanja na dva skupa, skup prihvatljivih stanja i skup neprihvatljivih
3. Označiti ovu particiju sa P0
4. k =k+1
5. Naći particiju Pk deleći različite skupove u Pk-1
6. U svakom skupu u Pk-1,
• uzmite u obzir sve moguće parove stanja unutar svakog skupa i ako se ta dva stanja razlikuju,
podelite skup izdvajajuci taj par u novi skup u Pk.
• Dva stanja q1 iq2 su različita u particiji Pk ako za svaki ulazni simbol a važi da su δ (q1, a) i δ
(q2, a) u različitim skupovima u particiji Pk-1.
© N. Jovanović, 2017-2021 20
Пример
Дат је ДКА дефинисан са А = (S, Σ, T, s,
F).
• S = { S0, S1, S2, S3, S4, S5}
• Σ = {a, b, c, d, e}
• s = S0
• F = {S1}
© N. Jovanović, 2017-2021 21
Пример
© N. Jovanović, 2017-2021 22
Пример
© N. Jovanović, 2017-2021 23
Пример
Поступак минимизације овог аутомата почиње
иницијално, поделом скупа стања на две подскупа,
скупа у коме су сва прихватљива стања и скупа у
кому су сва неприхватљива стања:
P0: {S1 } {S0 , S2 , S3 , S4 , S5 }
© N. Jovanović, 2017-2021 24
Пример
Затим, посматра се партиција P0 за улаз а
и уочава се да су стања S0 и S2 различита
зато што под дејством симбола а, аутомат
из ових стања, која припадају скупу
неприхватљивих стања, прелази у стање
које припада скупу прихватљивих стања.
Сада је могуће добити партицију P1
поделом скупа {S0 , S2 , S3 , S4 , S5 } на два
скупа {S3 , S5 , S4 } {S0 , S2}, па имамо
P1:{S1 } {S3 , S5 , S4 } {S0 , S2}
© N. Jovanović, 2017-2021 25
© N. Jovanović, 2017-2021 26
Добијена партиција P1 се посматра за улаз d и
уочава се да стање S4 под дејством симбола d,
аутомат преводи у стање S1, које припада
различитом скупу па је могуће добити
партицију P2: {S1} {S3 , S5 } {S0 , S2} {S4 }.
© N. Jovanović, 2017-2021 27
Пример
Разматрањем партиције P2 за улаз b добија се
P3: {S1 } {S3 , S5 } {S0 , S2} {S4}.
То је и коначна партиција.
Сада је могуће обележити нова стања и нацртати табелу
транзиције.
A= {S0 , S2} B = {S4 } C = {S3 , S5 } D = {S1 }
© N. Jovanović, 2017-2021 28
Пример
© N. Jovanović, 2017-2021 29
Пример
© N. Jovanović, 2017-2021 30
Пример
Нови, еквивалентни коначни аутомат је
приказан на слици.
© N. Jovanović, 2017-2021 31
НКА
Коначни аутомат у коме за сваки пар
(стање, улазни знак) може постојати
више могућих следећих стања назива
се недетирминистичи коначни аутомат
(НКА).
Код недетирминистичког коначног
аутомата може се десити да на исти
улазни знак постоје вишеструки прелази
из тренутног стања.
© N. Jovanović, 2017-2021 32
Дефиниција
Формално, недетирминистички коначни аутомат
описан је уређеном петорком (S, Σ, Т, I, F) где:
• S представља скуп стања аутомата.
• Σ представља скуп улазних симбола (азбуку аутомата),
• Т: S x (Σ {}) А(S) представља функцију прелаза;
за свако стање и сваки улазни симбол дефинише скуп
могућих нових стања у које аутомат може прећи из
стања s за улазни симбол u или за
• I је скуп стартних, иницијалних стања аутомата,
• F представља скуп стања прихватања или коначна
стања. Стања из скупа S-F називају се стањима
одбијања.
© N. Jovanović, 2017-2021 33
Пример
На пример, нека је дат
недетирминистички коначни аутомат
(S, Σ, T, I, F), где су:
• S = {S0, S1, S2, S3, S4}
• Σ = {a, b}
• I = {S0},
• F = {S1, S3},
© N. Jovanović, 2017-2021 34
Пример
© N. Jovanović, 2017-2021 35
Конверзија НКА у ДКА
Генерално, идеја је да свако стање
конструисаног ДКА кореспондира скупу
стања НКА
Почетно стање ДКА одговара скупу
стања у која је могуће прећи из почетног
стања НКА пратећи преласке.
Стање ДКА је завршно ако се бар једно
завршно стање НКА налази у новом
скупу.
© N. Jovanović, 2017-2021 36
Операције
Ако је s појединачно стање аутомата, и Т скуп
стања аутомата, тада се дефинишу следеће
операције:
• -затварање(s) (енг. -closure(s)) – Скуп стања НКА
доступних од стања s само применом - прелаза.
Формално се дефинише као: (s) = {q | s→ q}
• -затварање(Т) – Скуп стања НКА доступних од
неког стања s у скупу Т само применом -прелаза.
• move(Т, а) – Скуп НКА стања у коме постоји прелаз
на улазни симбол а из неког стања s у Т.
© N. Jovanović, 2017-2021 37
Алгоритам
1. Нека је s0 стартно стање НКА.
2. Одредити s0 = -closure (s0) које постаје стартно
стање ДКА
3. ново_стање_ДКА = {}
4. За свако s из s0,
5. За свако из улазне азбуке:
ново_стање_ДКА = ново_стање_ДКА -
closure (Т(s, ))
6. Означити ново_стање_ДКА као стање прихватања,
ако у свом скупу садржи бар једно стање
прихватања НКА
Итеративно понављати тачке 3-6 за сва добијена
стања, док постоји промена у скупу стања ДКА.
© N. Jovanović, 2017-2021 38
Алгоритам
© N. Jovanović, 2017-2021 39
Пример
Стартно стање НКА означено је симболом 1.
Поступак конверзије почиње налажењем скупа
стања НКА применом операције -closure({1}).
Имајући у виду дефиницију операције -closure,
добија се:
-closure({1}) = {1,2,3,4,8}
© N. Jovanović, 2017-2021 40
Пример
Скуп добијен применом операције -closure({1})
представња стање од ДКА означено са:
А = {1,2,3,4,8}
Међу стањима из скупа {1,2,3,4,8}, само стање
3 има транзицију на симбол а, према стању 5
па се примењује операција moveDFA(A, a).
moveDFA(A, a) = -closure(moveNFA(A, a))
kako je: moveNFA(A, a) = {5}
moveDFA(A,a) = -closure({5}) = {5,7,2,3,4,8}
© N. Jovanović, 2017-2021 41
Пример
Скуп стања који је добијен применом операције moveDFA(A,a)
дефинише ново стање ДКА и означава се са B.
B = {5,7,2,3,4,8}
Почетни дијаграм за ДКА, са ова два стања приказан је на
слици.
© N. Jovanović, 2017-2021 42
Пример
Следеће стање ДКА одређује се
разматрањем прелаза из стања А, на
улазни симбол b.
Прво се одређује move(A,b) = {6}, а затим
се одређује -closure({6}).
move(B,b) = {6}
-closure({6}) = {6,7,2,3,4,8}
Добијени скуп представља ново стање
ДКА означено са C.
C = {6,7,2,3,4,8}
© N. Jovanović, 2017-2021 43
Пример
Затим се посматра прелазак из скупа стања
означеног са C, на улазни симбол a:
move(C,a) = {5}
-closure({5}) = {5,7,2,3,4,8} = B
У наставку, одређује се скуп НКА стања у
коме постоји прелаз на улазни симбол ‘.’ из
неког стања s у А.
move(A,.) = {9}
© N. Jovanović, 2017-2021 44
Пример
-closure({9}) = {9,10,11,12,16} = D
Затим, скуп НКА стања у коме постоји
прелаз на улазни симбол ‘.’ из неког
стања s у B одређује се:
move(B,.) = {9}
-closure({9}) = {9,10,11,12,16} = D
© N. Jovanović, 2017-2021 45
Пример
Прелазак из скупа стања означеног са C,
на улазни симбол ‘.’ је дефинисан са:
move(C,.) = {9}
-closure({9}) = {9,10,11,12,16} = D
У наставку, налази се скуп НКА стања у
коме постоји прелаз на улазни симбол a из
неког стања s у D одређује се:
move(D,a) = {13}
-closure({13}) = {13,15,10,11,12,16} = E
© N. Jovanović, 2017-2021 46
Пример
Скуп НКА стања у коме постоји прелаз
на улазни симбол b из неког стања s у D
одређује се:
move(D, b) = {14}
-closure({14}) = {14,15,10,11,12,16} = F
© N. Jovanović, 2017-2021 47
Пример
Дијаграм добијеног ДКА конвертованог
из НКА је приказан на слици.
© N. Jovanović, 2017-2021 48
Пример
© N. Jovanović, 2017-2021 49
Конверзија регуларног израза у НКА
© N. Jovanović, 2017-2021 50
Глушковљев алгоритам
1. Линеаризује се регуларни израз
додавањем секвенцијалног индекса
сваком симболу у регуларном изразу.
• Дефинише се по једно стање Глушкова за
сваки симбол, плус једно почетно стање.
2. Додају се прелази тако што се одреди:
• Скуп почетних симбола регуларног израза I.
• Скуп завршних симбола регуларног израза F.
• Скуп парова симбола који се могу појавити
узастопно P.
3. Уклоне се индекси.
© N. Jovanović, 2017-2021 51
Пример
Посматра се, на пример, регуларан израз a(b|c)*a.
У првом кораку врши се линеаризација тако што се
изврши додавање узастопних бројева позиција
сваком симболу , на следећи начин:
a1(b2|c3)*a4
Аутомат ће имати једно стање за сваки симбол у
линеаризованом изразу, плус почетно стање So.
Дакле, стања су:
S = {S0, a1, b2, c3, a4}
Алтернативно, свакo стање могуће je представити
само индексом позиције:
S = {0, 1, 2, 3, 4}
© N. Jovanović, 2017-2021 52
Пример
Скуп почетних симбола је скуп симбола који се
могу појавити први у низу који се подудара са
регуларним изразом:
I = {a1}
Скуп коначних симбола је скуп симбола који се
могу појавити последњи у низу који се подудара са
регуларним изразом:
F = {a4}.
Скуп парова симбола су симболи који се могу
појавити узастопно у низу који се подудара са
регуларним изразом:
P={(a1,b2),(a1,c3),(b2,b2),(c3,c3),(b2,c3),(c3,b2),
(c3,a4), (b2,a4)}.
© N. Jovanović, 2017-2021 53
Пример
Oбзиром на информације о скуповима I, F и P, могуће је конструисати
НКА дијаграм. За свако стање креира се један чвор.
Креира се по једна стрелица од почетног стања до сваког почетног
симбола, при чему је ознака на стрелици ознака стања.
За сваки пар из скупа P се додаје по једна стрелица, која се протеже од
стања које одговара првој компоненти пара до стања које одговара
другој компоненти.
© N. Jovanović, 2017-2021 54
Пример
Затим, уклањају се индекси из ознака и
добија се коначни аутомат.
© N. Jovanović, 2017-2021 55
McNaughton-Yamada-Thompson algoritam
© N. Jovanović, 2017-2021 56
Основна правила
За израз r = ε конструише се НКА:
i f
© N. Jovanović, 2017-2021 57
Основна правила
За сваки израз r = a из S, конструише се
НКА:
a
i f
© N. Jovanović, 2017-2021 58
s|t
Нека су N(а) и N(b) НКА за регуларне изразе
а и b.
Ако је r =a|b(или a+b), тада N(r), НКА се
конструише као:
N(а)
i f
N(b)
© N. Jovanović, 2017-2021 59
a
S1 S2
S0 S5
S3 S4
b
© N. Jovanović, 2017-2021 60
s|t
Овде је i почетно стање из кога аутомат
преко ɛ- прелаза може да пређе у
иницијално стање аутомата N(a) или N(b) и
од њихових стања прихватања постоји е-
транзиција до стања прихватања f.
© N. Jovanović, 2017-2021 61
NKA za a | b
a
S1 S2
S0 S5
b
S3 S4
© N. Jovanović, 2017-2021 62
r = ab
Ако је r = ab онда се N(r) конструише као:
i N(a) N(b) f
a b
S0 S1 S3 S4
© N. Jovanović, 2017-2021 64
r = a*
Нека је r = a*, N(r) се конструише као:
i f
N(a)
Од i до f могуће је пратити путању ɛ (путања за
стринг L(а)0), или је могуће ићи до стартног стања од
N(а), затим од стања прихватања назад до стартног
стања нула или више пута.
© N. Jovanović, 2017-2021 65
r = s*
Ова опција омогућава прихватање свих
стрингова L(а)1, L(а)2 итд. тако да је за N(r)
прихватљиво L(а*).
© N. Jovanović, 2017-2021 66
NKA за a *
a
S0 S1 S3 S4
© N. Jovanović, 2017-2021 67
Пример: r = a(b|c)*
NKA за a je
a
S0 S1
NKA за b|c je b
S4 S5
S3 S8
S6 c S7
© N. Jovanović, 2017-2021 68
NKA за (b|c)* je
b
S4 S5
S8 S9
S2 S3
c
S6 S7
© N. Jovanović, 2017-2021 69
NKA за a(b|c)*
b
S4 S5
a
S0 S1
S2 S3 S8 S9
S6 c S7
© N. Jovanović, 2017-2021 70
Конструкција ДКА директно из регуларног израза
© N. Jovanović, 2017-2021 71
Синтаксно стабло
Синтаксно стабло регуларног израза се
конструише тако што чворови представљају
операторе и операнде.
© N. Jovanović, 2017-2021 72
Поништива позиција
Листови нису поништиви (осим ε)
Чвор конкатенације (.) је поништив ако су
оба наследника поништива
Чвор уније (|) је поништив ако је бар један
од налседника поништив
Чвор звездастог затварања (*) је увек
поништив.
© N. Jovanović, 2017-2021 73
Прва позиција
За a·b се израчунава као:
if(ponistiva(a)){
prvaPoz(a·b) = prvaPoz(a) prvaPoz(b)
} else {
prvaPoz(a·b) = prvaPoz(a)
}
© N. Jovanović, 2017-2021 74
Прва позиција
За a|b се израчунава као:
prvaPoz(a|b) = prvaPoz(a) prvaPoz(b)
За a* се израчунава као:
prvaPoz(a*) = prvaPoz(a)
© N. Jovanović, 2017-2021 75
Последња позиција
За a·b се израчунава као:
if(ponistiva(b)){
poslednjaPoz(a·b)=poslednjaPoz(b)poslednjaPoz(a)
} else {
poslednjaPoz(a·b)=prvaPoz(a)
}
© N. Jovanović, 2017-2021 76
Последња позиција
За a|b се израчунава као:
poslednjaPoz(a|b) =
poslednjaPoz(a)poslednjaPoz(b)
За a* се израчунава као:
poslednjaPoz(a*) = poslednjaPoz(a)
© N. Jovanović, 2017-2021 77
Следећа позиција
Следећа позиција sledecaPoz(p) дефинише се
за сваку позицију листа p као скуп позиција
које могу следити посматрану позицију p у
произвољној секвенци знакова изведеној из
датог регуларног израза.
Ако чвор · има лево дете c1 и десно дете c2,
тада за сваку позицију i из poslednjaPoz(c1),
све позиције из prvaPoz(c2) су у sledecaPoz(i).
Ако је n чвор *, и i је позиција у
poslednjaPoz(n), тада свака позиција у
prvaPoz(n) је sledecaPoz(i)
© N. Jovanović, 2017-2021 78
Пример конверзије регуларног израза у ДКА
© N. Jovanović, 2017-2021 79
Синтаксно стабло за (a|b)*abb$
© N. Jovanović, 2017-2021 80
Позиције
© N. Jovanović, 2017-2021 81
© N. Jovanović, 2017-2021 82
Следећа позиција
© N. Jovanović, 2017-2021 83
Алгоритам
© N. Jovanović, 2017-2021 84
Пример
Стартном стању аутомата придружује се скуп
prvaPozicija(koren) = {1,2,3}
Прави се табела прелаза, у првој врсти се наводи
добијено стање {1,2,3} и разматра се врста за то стање.
За колону а, одређују се позиције из скупа {1,2,3} које
одговарају симболу а. То су позиције 1 и 3, па је прелаз у
пресеку прве врсте и колоне а унија:
sledecaPoz(1) sledecaPoz(3) = {1,2,3,4}
За колону b, одређују се позиције из скупа {1,2,3} које
одговарају симболу b. То је позиција 2, па је прелаз у
пресеку прве врсте и колоне b:
sledecaaPoz(2) = {1,2,3}
© N. Jovanović, 2017-2021 85
Пример
Како наведени скуп {1,2,3} не задржи
позицију 6 која је придружена маркеру $,
који означава крај израза, ради се о стању
одбијања, па је и стање означено нулом (0).
© N. Jovanović, 2017-2021 86
Пример
Табела се попуњава за сва новодобијено стање
{1,2,3,4}.
За колону а, одређују се позиције из скупа {1,2,3,4}
које одговарају симболу а. То су позиције 1 и 3, па је
прелаз у пресеку прве врсте и колоне а унија:
sledecaPoz(1) sledecaPoz(3) = {1,2,3,4}
За колону b, одређују се позиције из скупа {1,2,3,4}
које одговарају симболу b. То су позиције 2 и 4, па је
прелаз у пресеку прве врсте и колоне b:
sledecaPoz(2) sledecaPoz(4) = {1,2,3,5}
© N. Jovanović, 2017-2021 87
Пример
Како наведени скуп {1,2,3,4} не задржи
позицију 6 која је придружена маркеру $,
који означава крај израза, ради се о стању
одбијања, па је и стање означено нулом (0).
© N. Jovanović, 2017-2021 88
Пример
Табела се попуњава за сва новодобијено стање
{1,2,3,5}.
За колону а, одређују се позиције из скупа {1,2,3,5}
које одговарају симболу а. То су позиције 1 и 3, па је
прелаз у пресеку прве врсте и колоне а унија:
sledecaPoz(1) sledecaPoz(3) = {1,2,3,4}
За колону b, одређују се позиције из скупа {1,2,3,5}
које одговарају симболу b. То су позиције 2, 4 и 5, па
је прелаз у пресеку прве врсте и колоне b:
sledecaPoz(2) sledecaPoz(4) sledecaPoz(5) = {1,2,3,5,6}
© N. Jovanović, 2017-2021 89
Пример
Како наведени скуп {1,2,3,5} не задржи
позицију 6 која је придружена маркеру $,
који означава крај израза, ради се о стању
одбијања, па је и стање означено нулом (0).
© N. Jovanović, 2017-2021 90
Пример
Табела се попуњава за сва новодобијено стање
{1,2,3,6}.
За колону а, одређују се позиције из скупа {1,2,3,6}
које одговарају симболу а. То су позиције 1 и 3, па је
прелаз у пресеку прве врсте и колоне а унија:
sledecaPoz(1) sledecaPoz(3) = {1,2,3,4}
За колону b, одређују се позиције из скупа {1,2,3,6}
које одговарају симболу b. То су позиције 2 , па је
прелаз у пресеку прве врсте и колоне b:
sledecaPoz(2) = {1,2,3}
© N. Jovanović, 2017-2021 91
Пример
Како наведени скуп {1,2,3,6} задржи позицију
6 која је придружена маркеру $, који означава
крај израза, ради се о стању прихватања, па је
и стање означено јединицом (1).
© N. Jovanović, 2017-2021 92
Пример
© N. Jovanović, 2017-2021 93
Конверзија ДКА у регуларни израз
Арденов метод
Метод елиминације стања
© N. Jovanović, 2017-2021 94
Арденов метод
Нека су s и t два регуларна израза над Σ.
Ако s не садржи ɛ, тада према Арденовој
теореми r = t + rs има јединствено решење
облика r = ts*.
Ако постоји више коначних стања, онда се
напише регуларни израз за свако коначно
стање посебно и додају се сви регуларни
изрази да би се добио коначни регуларни
израз.
© N. Jovanović, 2017-2021 95
Пример
© N. Jovanović, 2017-2021 96
Пример
© N. Jovanović, 2017-2021 97
Метод елиминације стања
Метод елиминације стања за конверзију
ДКА у регуларни израз занива се на
трансформацији ДКА у облик тако да
почетно стање не сме да има долазну грану
и коначно стање мора имати само долазну
транзицију и не сме да има излазну грану.
© N. Jovanović, 2017-2021 98
Метод елиминације стања
Ако постоји нека долазна грана до почетног
стања, онда креирати ново почетно стање
без долазне гране до ње.
© N. Jovanović, 2017-2021 99
Метод елиминације стања
Ако у ДKА постоји више коначних стања,
претворите сва коначна стања у не-коначна
и креирати једно коначно стање.