Regulární jazyky. Konečné automaty, regulární gramatiky a regulární výrazy. Minimalizace konečného automatu. Převod nedeterministického konečného automatu na deterministický automat. Vztah mezi konečnými automaty a regulárními jazyky. Použití pumping lemmatu pro regulární jazyky.
Abeceda je libovolná konečná množina, jejíž prvky se nazývají znaky. Abeceda může být i prázdná množina, zapisuje se Σ.
Slovo je libovolná konečná posloupnost znaků z abecedy.
Jazykem se rozumí libovolná množina slov nad nějakou abecedou. Jazyky mohou být konečné i nekonečné.
Regulární jazyk je jazyk generovatelný regulární gramatikou. Též je to jazyk rozpoznatelný konečným automatem nebo popsaný regulárním výrazem.
Popis vlastností regulárních jazyků je důležitý pro popis regulárních výrazů.
Pokud jsou A a B regulární jazyky, pak sjednocení, průnik, rozdíl, zřetězení a iterace jsou regulární jazyky.
Pokud je A regulární jazyk, pak komplement A je regulární jazyk.
Pokud je A regulární jazyk, pak zrcadlový obraz jazyka A je regulární jazyk.
Všechny konečné jazyky jsou regulární.
Příklad: Iterace jazyka {„ab“, „c“}* je { ε, „ab“, „c“, „abab“, „abc“, „cab“, „cc“, „ababab“, … }
Jazyk L je regulární, právě když:
Třída regulárních jazyků je uzavřena na:
Definice 2.1. 1)
Slovo akceptované automatem M je právě takové slovo, pod kterým automat přejde z počátečního stavu do koncového stavu.
Jazyk akceptovaný automatem M je množina všech slov, na kterých automat přejde z počátečního stavu do koncového stavu.
Abychom mohli definovat jazyk akceptovaný automatem, je třeba zavést rozšířenou přechodovou funkci
: Q x * → Q definována induktivně vzhledem k délce slova ze *:
Jazyk akceptovaný konečným automatem M, označovaný L(M) je tvořen právě všemi takovými slovy, pod kterými automat přejde z počátečního stavu do některého z koncových.
L(M) = {w * | (q0,w) F}
: Q x * → 2Q, definována induktivně vzhledem k délce slova ze *:
Jazyk akceptovaný nedeterministickým konečným automatem M, označovaný L(M) je tvořen právě všemi takovými slovy, pod kterými automat přejde z počátečního stavu do některého z koncových.
L(M) = {w * | (q0,w) F }
Definice 1.2. 2)
Gramatika je regulární, jestliže každé její pravidlo je tvaru A → aB (nebo A → Aa, tzv. levo lineární gramatika) nebo A → a s výjimkou S → , pokud se S nevyskytuje na pravé straně žádného pravidla.
Je to gramatika typu 3 podle Chomského hierarchie gramatik.
Množina regulárních výrazů nad abecedou , označovaná RE(), je definována induktivně takto:
Závorky je možné vypouštět s tím, že největší prioritu má operátor „ * “, pak „ . “ a nakonec „ + “ Každý regulární výraz E nad abecedou popisuje jazyk L(E) nad abecedou podle těchto pravidel:
Regulární výrazy jsou tedy výrazy, které popisují množinu slov. Jsou ekvivalentní nějakému automatu případně gramatice. Využívají vlastností sjednoceni, průniku, rozdílu, iterace, zřetězení a komplementu. Lze napsat algoritmus, který rozhodne, zda jsou dva regulární výrazy ekvivalentní, tj. popisují stejný jazyk a redukovat daný jazyk na nějaký minimální automat.
Ekvivalenci mezi regulárními výrazy a konečnými automaty shrnuje Kleeneho veta:
Kleeneho věta
Minimální automat je automat s nejmenším počtem stavů, který rozpoznává daný regulární jazyk L. Lze jej sestrojit z jakéhokoliv automatu rozpoznávající nějaký jazyk L.
Existence minimálního konečného automatu souvisí s Myhill–Nerodovou větou (viz otázka AP8,IN8 Regulární jazyky), kterou můžeme přeformulovat takto:
Věta 2.29 Myhill–Nerodova, 2. varianta3)
Důsledek M-N věty
Minimalizace konečného automatu probíhá tak, že nejprve jsou odstraněny nedosažitelné stavy a poté jsou ztotožněny jazykově ekvivalentní stavy.
Definice - dosažitelné a nedosažitelné stavy
Vstup: Konečný automat M = (Q, , , q0, F)
Výstup: Ekvivalentní automat M' bez nedosažitelných stavů.
Algoritmus
Poznámka: Zápis |Q' znamená, že funkce je omezena na množinu Q'.
Intuitivně: Množina Si je množina stavů dosažitelná v automatu v maximálně i krocích.
Nechť M = (Q, , , q0, F) je konečný automat bez nedosažitelných stavů, jehož přechodová funkce je totální.
Definice - jazykově ekvivalentní stavy
Definice - Redukt
p,q Q, a : (q, a) = p ([q], a) = [p].
Věta
Definice
Vstup: Konečný automat M = (Q, , , q0, F) bez nedosažitelných stavů s totální přechodovou funkcí
Výstup: Redukt M/≡.
Algoritmus
Praktické vysvětlení algoritmu
Věta
Nedeterministický konečný automat je definován stejne jako deterministický automat s tím rozdílem, že přechodová funkce se definuje jako totální zobrazení do množiny všech podmnožin stavů.
Jinými slovy z každého stavu může nedeterministický automat pod stejným vstupním symbolem přejít do různých stavů.
Obecně algortimus převodu vypadá tak, že:
1. Stavy nového automaty jsou z množiny všech podmnožin stavů Q.
2. Přechodová funkce je z množiny podmnožin do množiny podmnožin Q a na pravé straně přechodové funkce je množina všech stavů Q, kam by se NFA mohl dostat. V další iteraci je pak na pravé straně množina všech stavů, kam by se NFA mohl dostat ze všech stavů z podmnožiny z předchozí iterace.
3. Konečné stavy jsou pak ty, kde se v podmnožině vyskytuje alespoň jeden z koncových stavů z předchozího NFA.
Vstup: NFA M = (Q, , , q0, F).
Výstup: Ekvivalentní DFA M' = (Q', , ', {q0}, F') bez nedosažitelných stavů a s totální přechodovou funkcí.
Algoritmus
Mějme nedeterministický konečný automat :
a | b | |
---|---|---|
→ 1 | 1,2 | 1,7 |
2 | - | 3 |
3 | - | 4 |
4 | 5 | - |
← 5 | 5 | 5 |
6 | - | 5 |
7 | 6 | - |
Převod nedeterministického automatu na deterministický provedeme pomocí algoritmu následovně:
Praktické vysvětlení algoritmu
Algoritmus končí, ve chvíli kdy není možné nalézt žádný nový stav. Vstupní stavy zůstávají stejné, koncové stavy jsou ty, které obsahují některý z původních koncových stavů.
Takto vytvořený automat nemusí být minimální, ale je bez nedosažitelných stavů, s totální přechodovou funkcí.
a | b | |
---|---|---|
→ 1 | 12 | 17 |
12 | 12 | 137 |
17 | 126 | 17 |
137 | 126 | 147 |
126 | 12 | 1357 |
147 | 1256 | 17 |
← 1357 | 1256 | 1457 |
← 1256 | 125 | 1357 |
← 1457 | 1256 | 157 |
← 125 | 125 | 1357 |
← 157 | 1256 | 157 |
Platí věta, že pro každý jazyk popsatelný nějakým regulárním výrazem existuje automat, který jej rozpoznává.
Dále platí věta, že pokud je jazyk rozponávaný nějakým DFA, pak je popsatelný regulráním výrazem.
Tj. obě třídy jazyku jsou ekvivalentní (Kleeneho věta).
Lemma 2.13. (o vkládání)4)
Je to prostředek jak dokázat, že nějaký daný jazyk není regulární. Představuje nutnou (nikoliv postačující) podmínku, kterou musí každý regulární jazyk splňovat.
Pumping lemma prakticky říká, že v dostatečně dlouhém slově w, které patří do jistého jazyka, lze nalézt tři části x, y a z, přičemž y může být i celé slovo. y lze pak libovolně opakovat (napumpovat), či zcela vyloučit a výsledné slovo bude patřit do jazyka. Délka slova musí být větší nebo rovna pumpovací konstantě n a délka části xy musí být menší nebo rovna n.
Postupujeme tak, že ukážeme, že pokud platí obměna lemmatu o vkládání (jde o implikaci), potom jazyk L není regulární:
Potom z lemmatu o vkládání plyne, že L není regulární.
Intuitivní důkaz tvrzení říká:
• Pro konečné jazyky se jako pumpovací konstanta vezme délka nejdelšího slova.
• Pro nekonečné jazyky musí existovat nějaký minimální konečný automat, který je akceptuje. Spočítá se počet jeho stavů a vezme se jako pumpovací konstanta p. Pokud automat akceptuje i slova delší než p, pak musí některými stavy procházet vicekrát. Jeden tento stav označíme S. Transakce, které automat posunou ze stavu S, a zpět do stavu S, akceptují nějaký řetězec. Tento řetězec je y v pumping lemmatu, tj. platí tvrzení lemma, že lze slovo nafukovat i že lze nafukování přeskočit rovnou dál.
IB102 Automaty a gramatiky
IB005 Formální jazyky a automaty
Marek Menšík UČO 255679
Nevím přesně, kdo otázky zpracoval přede mnou, pouze jsem je sem umístil, doplnil chybějící věci a opravil nepřesnosti. Připomínám, že věci zde uvedené nemusí být korektní a zatím neprošly kontrolou žádného z profesorů. Z mé strany je tato otázka dokončena a případné chybějící věci a chyby mě můžete napsat na UČO mail nebo se registrujte a upravte je sami.