You are on page 1of 36

Коначни

аутомати
Програмски преводиоци
Садржај
• Провера припадности стринга језику
дефинисаном регуларним изразима
• Коначни аутомати
• Недетерминистички коначни аутомати
• Извођење детерминистичког из
недетерминистичког коначног аутомата
• Имплементирање коначних аутомата
помоћу табела
Провера припадности стринга језику
дефинисаном регуларним изразима
• Лексичка спецификација која се жели
имплементирати записује се у виду
регуларних израза
• На основу регуларних израза формира се
недетерминистички коначнан аутомат
(НКА), из кога се може извести
детерминистички коначнан аутомат (ДКА)
• Коначни аутомат се имплементира у виду
програма који ће вршити лексичку анализу
Провера припадности стринга језику
дефинисаном регуларним изразима
Провера припадности стринга језику
дефинисаном регуларним изразима
• Техника регуларни изрази служи
спецификацији језика
• Техника коначни аутомати служи
имплементацији језика
• Коначни аутомати:
– Конципирају се графички, ради прегледности
– Имплементирају се алгоритмима, уз помоћ
табеларних структура података
– За сваки регуларан израз формира се
еквивалентан НКА
Коначни аутомат
• Коначни аутомат (илити коначна машина)
састоји се од:
– Улазног алфабета ∑,
– Коначног скупа стања Ѕ,
– Стартног стања n,
– Скупа прихватајућих стања F  S и
– Скупа прелаза из једног стања, за задати улаз, у
друго стање стање  улаз стање
Коначни аутомат
a
• Прелаз с1  с2
чита се: стање с1 за улаз а прелази у
стање с2
• Улаз се може завршити, а да се аутомат
затекне у прихватљивом стању
=> Прихваћен је улаз
• Улаз се може завршити, а да се аутомат не
затекне у прихватљивом стању
=> Одбијен је улаз, то јест стање c  F , то јест
улаз се заглавио
Коначни аутомат
• Стање

• Почетно стање

• Прихватајуће стање

• Прелаз
Коначни аутомат
• Пример коначног аутомата који прихвата
једино улаз “1”:

• Језиком коначног аутомата сматра се скуп


свих прихваћених стрингова
• Може бити ДКА и НКА
Коначни аутомат
• У ДКА могућна је само једна путања по
графу стања за задати улаз

• У НКА могућан је избор између више


путања
Коначни аутомат
• ДКА и НКА препознају исти скуп језика.
– Реч је о регуларним језицима.
• ДКА се брже извршавају.
– Јер нема потребе да се врши избор.
• НКА су, најчешће, мањи за дефинисање.
– Чак и експоненцијално мањи.
Недетерминистички коначан аутомат

• НКА може за исти улаз завршити у


различитим стањима, на пример аутомат:

за улаз 1 0 0
може проћи путањама {A}, {A, B} и {A, B, C},
а ако је барем у једној од њих завршио у
прихватајућем стању, улаз је прихваћен.
Недетерминистички коначан аутомат

• Нотација за графичко приказивање НКА:


– Стартно стање је назначено иницирајућом
стрелицом.
– Прихватајуће стање је назначено двоструким
концентричним кружићем.
– Не занима нас општа структура машине.
– Занимају нас машине са само једним
прихватајућим стањем.
Превођење регуларног израза у
недетерминистички коначан аутомат
• Нотација за графичко приказивање НКА:
– За регуларни израз М:

– За ε:

– За улаз а:
Превођење регуларног израза у
недетерминистички коначан аутомат
• Нотација за графичко приказивање НКА:
– За конкатенацију АВ:

(Претходна машина М је модификована тако да у њој стање


А више није прихватајуће.)
Превођење регуларног израза у
недетерминистички коначан аутомат
• Нотација за графичко приказивање НКА:
– За унију А + В:
Превођење регуларног израза у
недетерминистички коначан аутомат
• Нотација за графичко приказивање НКА:
– За итерацију А*:

(Слободно речено, горња стрелица је задужена за низове од


више А, средња за само једно А, а доња ни за једно А.)
Недетерминистички коначан аутомат

• Пример НКА за регуларни израз (1 + 0)*1:


Недетерминистички коначан аутомат

• ε-затворење једног стања


– Сва стања у које се из тог стања може стићи ε
прелазима
– На пример, за машину:

– ε-затворење (В) = {B, C, D}



Извођење детерминистичког из
недетерминистичког коначног аутомата
• ДКА дефинишемо:
– Стања су подскупови скупа Ѕ,
• Сви, осим празног скупа
• Стање ДКА говори у којим стањима НКА може бити
– Стартно стање је ε-затворење стартног стања
НКА
• Ово стање говори у којим стањима НКА може бити на
почетку
– Финално стање је сваки подскуп од Ѕ који има
макар једно прихватајуће стање, то јест :
{ X | X  F  Ø}
Извођење детерминистичког из
недетерминистичког коначног аутомата
• ДКА дефинишемо:
– Између скупова X иY постоји прелаз за улаз а, ако је
Y такво да садржи сва стања у која се из Х може
доћи за улаз а:
а(Х)
– укључујући и она у које ће се из ових стања моћи
доћи ε-затворењем, па ће бити:
Y = ε-затворење (а(Х))
• Пошто је за свако Х могућ само један скуп Y, каже се да
ће из сваког стања машине бити могућ само један прелаз
по инпуту, то јест да је реч о детерминистичкој машини.
Извођење детерминистичког из
недетерминистичког коначног аутомата
• ДКА у односу на НКА:
– Има једно померање по улазу
– Нема ε-померање
– Свако стање ДКА дефинисано је тако да бележи
скуп стања у која је НКА могао доспети за исти
инпут
Извођење детерминистичког из
недетерминистичког коначног аутомата
• На пример, стартно стање је ε-затворење за А:
Извођење детерминистичког из
недетерминистичког коначног аутомата
• Њему одговара стартно стање ДКА:
Извођење детерминистичког из
недетерминистичког коначног аутомата
• За инпут из алфабета {0, 1} могућ је прелаз 0:

- коме одговара ε-затворење:


Извођење детерминистичког из
недетерминистичког коначног аутомата
• На основу ε-затворења:

– Креира се стање ДКА:


Извођење детерминистичког из
недетерминистичког коначног аутомата
• За инпут из алфабета {0, 1} могући су и
прелази 1:

– Којима одговарају ε-затворења:


Извођење детерминистичког из
недетерминистичког коначног аутомата
• На основу ε-затворења:

– Креира се стање ДКА, које је прихватајуће:


Извођење детерминистичког из
недетерминистичког коначног аутомата
• Прелази између непочетних стања:
Имплементирање коначних аутомата
помоћу табела
• И НКА и ДКА могу бити имлементирани
помоћу табела.
• ДКА се имплементира помоћу табеле чији
су:
– Редови: Могућа стања
– Колоне: Могућ инпут
– Вредност поља: Стање у које се из стања за
одговарајући ред прелази у случају инпута
одговарајуће колоне
Имплементирање коначних аутомата
помоћу табела
• На пример, за аутомат:

• Табела која описује прелазе аутомата је:

0 1
S T U
T T U
U T U
Имплементирање коначних
аутомата помоћу табела
• Одговарајући код могао би бити:

i = 0;
state = 0;
While(input[i]) {
state = A[state, input[i++]];
}

Где је: i – индекс инпута, који на почетку указује на


почетак стринга input,
state – текуће стање, које на почетку показује стартно
стање и
А – стање у које се прелази из текућег стања за текући
инпут.
Имплементирање коначних
аутомата помоћу табела
• У неким случајевима, ако је табела за ДКА
превелика, може се имплементирати
табела за НКА.
– Овакве табеле су мање.
– Итерација имплементирана над оваквом табелом је
рачунарски знатно скупља јер су вредности поља
табеле за НКА – скупови.
Имплементирање коначних
аутомата помоћу табела
• У већини случајева, кључна идеја у
имплементацији лексичке спецификације је
конверзија недетерминистичких у
детерминистичке коначне аутомате.
• НКА су спорији, али су им табеле
концизније
• ДКА су бржи, али су им табеле мање
компактне
Имплементирање коначних
аутомата помоћу табела
• Редундантне вредности поља у табели могу
се заменити јединственим показивачем ка
вредностима у засебној табели.
– За аутомате са пуно стања ово доста поједностављује
имплементацију.
Крај
Коначни аутомати
РАФ, 2020

You might also like