1 / 30

Nedeterministický konečný automat

Nedeterministický konečný automat. M=( { q 0, q 1 , q 2 , q 3 } , {0,1} ,  ,q 0, { q 1 ,q 3 } ) L(M) = ?. Nedeterministický konečný automat. Nedeterministický konečný automat (NDKA) je obecnějším typem konečného automatu

noe
Télécharger la présentation

Nedeterministický konečný automat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Nedeterministický konečný automat M=({q0,q1,q2,q3},{0,1},,q0,{q1,q3}) • L(M) = ?

  2. Nedeterministický konečný automat • Nedeterministický konečný automat (NDKA) je obecnějším typem konečného automatu • Rozdíl oproti deterministickému konečnému automatu (DKA) spočívá v tom, že aktuální vnitřní stav a čtený symbol neurčují jednoznačně chování automatu v dalším kroku (tj. stav, do kterého automat má přejít) • Namísto přechodové funkce budeme tedy uvažovat přechodové zobrazení • Prakticky si tuto změnu můžeme představit tak, že NDKA má možnost „si vybrat“ z nabízených možností přechodu • V předchozím příkladu může tedy automat ze stavu q0 na vstupní symbol 1 přejít do q1 nebo do stavu q2

  3. Nedeterministický konečný automat • DEF:Nedeterministický konečný automat M je pětice M=(Q,T,,q0,F), kde Q je konečná množina vnitřních stavů automatu T je konečná množina přípustných vstupních symbolů  je přechodové zobrazení : QxT  2Q q0 je počáteční stav automatu (q0Q) F je množina koncových stavů (FQ) • Poznámka: 2Q je symbolické označení množiny všech podmnožin Q JestližeQ={a,b}, potom 2Q ={{},{a},{b},{a,b}}

  4. Užívané konvence a pojmy • DEF: Buď M=(Q,T,,q0,F) nedeterministický konečný automat (NDKA). Potom nad množinou všech konfigurací QxT*definujeme relaci přechodunásledovně: jestliže q1,q2Q, wT*, aT, potom (q1,aw) (q2,w), jestliže q2(q1,a) • DEF: Nechť M=(Q,T,,q0,F) je NDKA. Potom automat M přijímá (akceptuje) slovo wT*, jestliže platí (q0,w) * (q,e) pro nějaké qF. • DEF: L(M)={w| (q0,w) * (q,e), wT*, qF}.    

  5. Příklad • Uvažujme následující NDKA reprezentovaný stavovým diagramem: M=({q0,q1,q2}, {+,-,0,1,2,3,4,5,6,7,8,9},,q0,{q2})

  6. Příklad • Tentýž NDKA lze reprezentovat následující přechodovou tabulkou: M=({q0,q1,q2}, {+,-,0,1,2,3,4,5,6,7,8,9},,q0,{q2})

  7. Přijímaní slova pomocí NDKA M=({q0,q1,q2}, {+,-,0,1,2,3,4,5,6,7,8,9},,q0,{q2}) • Pro vstupní slovo w=-195 probíhá následující výpočet: (q0,-195) (q1,195) (q1,95) (q1,5) (q1,e) … nepřijato (q2,e) … přijato (q2,5) … nepřijato (q2,95) … nepřijato       

  8. Přijímaní slova pomocí NDKA • Výpočet NDKA si lze představit jako odpovídající množství paralelně probíhajících výpočtů • Kdykoliv může NDKA učinit rozhodnutí (není jednoznačně určen následující stav), vzniká další větev výpočtu • Větev výpočtu je ukončena (zaniká), pokud vstupní slovo bylo celé přečteno, nebo když nelze pokračovat (není definován přechod pro daný vnitřní stav a čtený symbol) • NDKA přijímá dané vstupní slovo právě tehdy, když alespoň jedna větev výpočtu skončí úspěchem (přečtené celé slovo & automat je v některém z koncových stavů)

  9. Vzájemný vztah DKA a NDKA • NDKA se na první pohled zdá „mocnější“ než DKA • Jakým způsobem měřit „sílu“ jednotlivých typů automatů? • Automaty jsme navrhli kvůli rozpoznávání jazyků, a proto i jejich schopnosti budeme posuzovat podle množiny jazyků, které lze daným typem automatu rozpoznat • Věta: Nechť L(M1) je jazyk přijímaný nějakým nedeterministickým konečným automatem. Potom existuje deterministický konečný automat M2, který přijímá stejný jazyk, tj. L(M1) = L(M2). • Důkaz: M2 se sestrojí na základě znalosti funkce M1

  10. Konstrukce ekvivalentního DKA • M1=({q0,q1,q2}, {+,-,0,1,2,3,4,5,6,7,8,9},,q0,{q2}) • M2=({?????}, {+,-,0,1,2,3,4,5,6,7,8,9},2, {q0},{?????}) • Budeme postupně vytvářet 2i Q2 a nakonec určíme F2

  11. Konstrukce ekvivalentního DKA • M2=({?????}, {+,-,0,1,2,3,4,5,6,7,8,9},2, {q0},{?????})

  12. Konstrukce ekvivalentního DKA formální • přeznačení • M2=({p0, p1, p2}, {+,-,0,1,2,3,4,5,6,7,8,9},2, p0,{p2})

  13. Konstrukce ekvivalentního DKA • M2=({p0, p1, p2}, {+,-,0,1,2,3,4,5,6,7,8,9},2, p0,{p2})

  14. Konstrukce ekvivalentního DKA • NDKA: M1=({q0,q1,q2}, {+,-,0,1,2,3,4,5,6,7,8,9},,q0,{q2}) • DKA: M2=({p0,p1,p2}, {+,-,0,1,2,3,4,5,6,7,8,9},2, p0,{p2}) L(M1) = L(M2)

  15. Konstrukce ekvivalentního DKA • Shrnutí postupu konstrukce: • Vyjdeme z počátečního stavu NDKA – stav {q0} • Postupně použitím přechodového zobrazení  vyplňujeme přechodovou tabulku • Jednotlivémnožiny nově vznikajících stavů považujeme vždy za jeden stav nově konstruovaného automatu • Tyto stavy postupně dáváme do prvního sloupce tabulky a opět pro ně vyplňujeme přechodovou tabulku • Všech možných podmnožin je 2|Q|, a proto po konečném počtu kroků skončíme (nová množina stavů již nevznikne) • Všechny podmnožiny obsahující alespoň jeden koncový stav původního NDKA prohlásíme za koncové stavy DKA

  16. Konstrukce ekvivalentního DKA • Tento postup je zcela obecný a realizovatelný pro každý nedeterministický konečný automat • Formální zápis tohoto postupu je důkazem dříve uvedené věty o ekvivalenci NDKA a DKA • Důsledky: • NDKA i DKA přijímají stejné jazyky, tj. zobecněním DKA na NDKA se příslušná třída jazyků nezmění • Podle toho, co nám v praxi bude vyhovovat, můžeme pracovat s DKA nebo NDKA, protože víme, že rozlišovací schopnost obou typů je stejná

  17. Příklad 1 • NDKA: M1=({q0,q1,q2,q3},{0,1},,q0,{q1,q3}) • DKA: M2= ? • L(M1) = L(M2) = ?

  18. Příklad 2 • NDKA: M1=({q0,q1,q2,q3},{0,1},,q0,{q3}) • DKA: M2= ? • L(M1) = L(M2) = ?

  19. Další úlohy na automatech • Rozpoznávací experiment – nalezení nejkratšího slova, které rozlišuje dva různé stavy • Synchronizační problém – dovedení automatu z neznámého do konkrétního stavu • Nalezení redukovaného automatu (automat rozpoznávající tentýž jazyk s minimálním počtem stavů) - odstraní se nedosažitelné stavy - odstraní se nerozlišitelné stavy

  20. Vztah KA a regulárních gramatik • Věta: Nechť G=(N,T,P,S) je regulární gramatika. Potom existuje konečný automat M=(Q,T, ,q0,F) takový, že L(M)=L(G). • Důkaz: konstrukcí KA Q=N{A}, AN (tj. nový symbol) T=T q0=S F = {S,A} pokud Se je pravidlo z P, jinak F = {A} : Pro Ba  P definujeme A  (B,a) BaC  P definujeme C  (B,a) a v ostatních případech Ø = (B,a)

  21. Vztah KA a regulárních gramatik • Důkaz: 1) Je třeba dokázat, že ke každé derivaci SG w lze sestrojit odpovídající posloupnost přechodů (S,w) …. (A,e) Potom L(G)  L(M) 2) Je třeba dokázat, že ke každé posloupnosti přechodů (S,w) …. (A,e) existují příslušná přepisovací pravidla a lze tedy sestrojit odpovídající derivaci SG w Potom L(M)  L(G) Z čehož plyne: L(G) = L(M) cbd.    

  22. Vztah KA a regulárních gramatik • Důsledek: Jelikož konečné automaty rozpoznávají věty regulárního jazyka, stávají se přirozenými modely analyzátorů překladačů. Na základě právě uvedené věty je možné lexikální analyzátor zkonstruovat automaticky z popisu regulární gramatiky. Na této větě je založena automatizace vybraných částí překladače a je to tedy věta nesmírně užitečná.

  23. Příklad 3 • Mějme gramatiku G=({C,D},{+,-,0,1,…,9},P,C), kde P = {C +D | -D | 0 | 1 | … | 9 | 0D | 1D |…| 9D D  0 | 1 | … | 9 | 0D | 1D | … | 9D } • KA= ? • L(G) = ?

  24. Vztah KA a regulárních gramatik • Věta: Nechť M=(Q,T, ,q0,F) je konečný automat. Potom existuje taková regulární gramatika G=(N,T,P,S), že L(M)=L(G). • Důkaz: konstrukcí gramatiky z DKA (stačí pro DKA) N = Q T = T S = q0 a P je definována následovně: BaC  P jestliže (B,a) = C Ba  P jestliže (B,a) = K  F Se  P jestliže q0  F

  25. Příklad 4 • Ke konečnému automatu M=({q0,q1,q2,q3},{0,1},,q0,{q0}) najděte takovou regulární gramatiku G, aby platilo L(M)=L(G).

  26. Vztah KA a regulárních gramatik • Věta: Jazyk L je regulární právě tehdy, když je rozpoznatelný konečným automatem. Souhrnná formulace obou dříve formulovaných vět.

  27. Vztah KA a regulárních gramatik • Důsledek: Na základě obou zde uvedených vět je zřejmé, že regulárními gramatikami i konečnými automaty popisujeme naprosto identickou množinu jazyků. Rozdílný charakter popisu (generování vs. rozpoznávání vět jazyka) umožňuje ke stejnému jazyku přistupovat z různých hledisek a podle potřeb praxe Z aplikačního hlediska je velice cenná věta první (ke gramatice automaticky najdu automat), druhá věta se tolik v praxi nevyužívá

  28. Vlastnostiregulárních jazyků • Věta: Nechť L1 a L2 jsou regulární jazyky. Potom L1 L2 , L1 L2 , T*\L1 a L1•L2jsou také regulární jazyky. • Důkaz: L1 L2 … dva automaty vedle sebe astačí jeden úspěšný L1 L2 … dva automaty vedle sebe aoba úspěšné T*\L1 … stačí udělat F`= Q\F L1•L2… dva automaty za sebou tak,že v koncovém stavu prvního automatu je vždy navázán automat druhý

  29. Další příklady konečných automatů • Navrhněte automat přijímající jazyk nad abecedou {0,1}, jehož slova začínají 1 a končí 0 • Navrhněte automat přijímající jazyk nad abecedou {0,1}, jehož slova obsahují nejméně tři 1 • Navrhněte automat přijímající jazyk nad abecedou {0,1}, který přijímá slova končící sufixem 00 • Navrhněte automat přijímající jazyk nad abecedou {0,1}, jehož slova mají na lichých pozicích vždy znak 1

  30. Další příklady konečných automatů • Navrhněte automat přijímající jazyk nad abecedou {a,b}, který přijímá slova nejvýše délky 4 • Navrhněte automat přijímající jazyk nad abecedou {a,b}, který přijímá všechna slova kromě aa a aaa • Navrhněte automat přijímající jazyk nad abecedou {a,b}, jehož slova obsahují podřetězec baba • Navrhněte automat přijímající jazyk nad abecedou {a,b}, jehož slova neobsahují podřetězec baba

More Related