You are on page 1of 105

КОНАЧНИ

АУТОМАТИ
ПРОГРАМСКИ ПРЕВОДИОЦИ
Проф. др Ненад Јовановић

© 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
Детерминистички коначни аутомати

 Детерминистички коначни аутомат је


уређена петорка: (S, Σ, T, s, F) , где су:
• S – коначан непразан скуп стања
• Σ – (сигма) коначан скуп знакова, улазна
азбука
• Т – функција прелаза (Т : S × Σ → S), за свако
стање и сваки улазни симбол дефинише ново
стање у које аутомат прелази;
• s – је почетнo стањe
• F – скуп прихватљивих стања (коначних
стања), Стања из скупа (S-F) су
неприхватљива.

© N. Jovanović, 2017-2021 8
Детерминистички коначни аутомати

 За свако стање x, које припада стањима


коначног аутомата важи T(x, ɛ) = x.
 Скуп свих низова x ϵ Σ* које прихвата аутомат
А је језик аутомата и означава се са L(А)
L(A) = { x | T (S, x) ∈ F ∧ x ∈ Σ*}
 Конфигурација је уређени пар (q, u), где је q
стање, а u реч из азбуке Σ.
 Рачунски корак је сваки пар конфигурација (q,
u), (q’, u’) где је u=au’(u’ = ua), aЄΣ i T(q, a) = q’
 Израчунавање је низ конфигурација

© 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.

7. Ponoviti korake od 4 i kada bude Pk == Pk-1 onda je KRAJ


8. Sva stanja koja pripadaju istom skupu su ekvivalentna i mogu se spojiti u jedno
stanje.

© 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
Конверзија регуларног израза у НКА

 За конверзију регуларног израза у


недетирминистичи коначни аутомат се
користе алгоритми:
• Глушковљев алгоритам (Glushkov
Construction Algorithm)
• McNaughton-Yamada-Thompson алгоритам

© 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

 Алгоритам конвертује регуларни израз у НКА


 УЛАЗ: регуларан израѕ r са азбуком S
 ИЗЛАЗ: НКА
 МЕТОДА: Рашчлањује се r на саставне
подизразе.
• Правила за конструкцију НКА састоје се од основних
правила за руковање подизразима без оператора и
индуктивних правила за изградњу већих НКА.

© N. Jovanović, 2017-2021 56
Основна правила
 За израз r = ε конструише се НКА:


i f

 Овде је 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

 Стартно стање од N(a) постаје стартно


стање од N(r), а стање прихватања од N(b)
је стање прихватања за N(r)
 Стање прихватања од N(a) и стартно стање
од N(b) се спајају у јединствено стање.
© N. Jovanović, 2017-2021 63
NKA za ab

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
Конструкција ДКА директно из регуларног израза

 Да би се директно конструисао ДКА из


регуларног израза потребно је формирати
синтаксно стабло регуларног израза, а
затим израчунати функције:
• ponistivaPozicija,
• prvaPozicija,
• poslednjaPozicija и
• sledecaPozicija

© 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
Пример конверзије регуларног израза у ДКА

 Као пример посматра се регуларни израз


(a|b)*abb$.
 Овде је знак $ додат на крају регуларног
израза и означава његов крај.
 Синтаксно стабло за овај регуларни израз је
приказано на слици.

© 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
Пример

 Помоћу Арденове Теореме, добија се S2 = (b


+ aa)a*, што и представља регуларан израз
за претходно дефинисан ДКА.

© N. Jovanović, 2017-2021 97
Метод елиминације стања
 Метод елиминације стања за конверзију
ДКА у регуларни израз занива се на
трансформацији ДКА у облик тако да
почетно стање не сме да има долазну грану
и коначно стање мора имати само долазну
транзицију и не сме да има излазну грану.

© N. Jovanović, 2017-2021 98
Метод елиминације стања
 Ако постоји нека долазна грана до почетног
стања, онда креирати ново почетно стање
без долазне гране до ње.

© N. Jovanović, 2017-2021 99
Метод елиминације стања
 Ако у ДKА постоји више коначних стања,
претворите сва коначна стања у не-коначна
и креирати једно коначно стање.

© N. Jovanović, 2017-2021 100


Метод елиминације стања
 Ако постоји нека одлазећа грана из
завршног стања, онда креирати ново
завршно стање без одлазне гране из ње.

© N. Jovanović, 2017-2021 101


Пример

 У првом кораку, пошто почетно стање има


долазну грану, примењује се прво правило и
добија се трансформисани ДКА.
 Затим, како коначно стање аутомата има
одлазећу грану, на основу трећег правила
добија се аутомат као на слици.

© N. Jovanović, 2017-2021 102


Пример

© N. Jovanović, 2017-2021 103


Пример
 У трећем кораку почиње елиминација посредних стања.
 Прво, уклања се стање S1. Постоји пут који иде од стања
S0 до стања Sf преко стања S1. Дакле, након уклањања
стања S1, добиће се директни пут из стања S0,у стање Sf
чија је цена ɛ0 = 0.
 Постоји петља у стању S0 помоћу стања S1 чија је цена
01.

© N. Jovanović, 2017-2021 104


Пример
 Елиминише се стање S0. Постоји пут који иде
од стања Si до стања Sf преко стања S0.
 Након уклањања стања S0, настаје директни
пут од стања Si до стања Sf чија је цена
ɛ(01)*0 = (01)*0 .

© N. Jovanović, 2017-2021 105

You might also like