Download - Formální definice
Formální definice
• Konečná množina vnitřních stavů Q
• Konečná vstupní abeceda A
• Počáteční stav q0
• Množina přijímacích stavů K
Automat na kávu
• Q={0,1,2,3,4,5}
• A={1,2,5}
• q0=0
• K={5}0 1 2 3 4 5
1 1 2 3 4 5 5
2 2 3 4 5 5 5
5 5 5 5 5 5 5
Automat na rozpoznávání jazyka
• Vstupní abeceda A• Množina A* všech posloupností symbolů z
A (slov)• Jazyk J je podmnožina A* • Pokud se po přečtení slova dostane do stavu
z K, přijímá slovo• Automat přijímá právě slova z J,
rozpoznává J
Příklad
• A={0,1}• J je jazyk tvořený slovy se
sudým počtem jedniček
• Q={qs, qL}
• q0 = qs
• p(qs,0)= qs, p(qL,0)= qL, p(qS,1)= qL, p(qL,1)= qs
qs
qL
1
Úkol
• Navrhněte konečný automat nad abecedou {0,1}, který bude rozpoznávat jazyk tvořený slovy, kde je každý znak zdvojený
• Například 001100, 00, 00001111 má být přijato
• 00110, 001101, 0 nemá být přijato
Úkol
• Navrhněte konečný automat nad abecedou {0,1}, který bude rozpoznávat jazyk tvořený souměrnými slovy o sudé délce.
• Například 001100, 00, 0000110000 má být přijato
• 00110, 001101, 0, 00100 nemá být přijato
Regulární jazyky
• Jazyky rozpoznatelné konečným automatem• Pro manipulaci nepotřebují ukládat do paměti nic
kromě konečně mnoha hodnot• Vzato do důsledku jsou všechny jazyky regulární
a všechny počítače konečné automaty• Ve skutečnosti se jedná o jazyky, které lze
interpretovat (Basic, Python, makra pro Excel)• Jazyky typu Pascalu, C, vyžadují paměť, zásobník
Nedeterministický konečný automat
• Přechodová funkce není jednoznačná
• Příklad: automat rozpoznává jazyk tvořený slovy zakončenými posloupností 010
q0
q1
q2
qK
0,1
1
0
00,10,1
0,1
Převod NKA na KA
q0
q1
q02
q2
q01
q0K
q12
q1K
q012
q2K
q12K
q01K
q02K
q012K
qK
1
0 1
Převod NKA na KA
q0
q1
q02
q2
q01
q0K
q12
q1K
q012
q2K
q12K
q01K
q02K
q012K
qK
1
0
0
1
0
1
Převod NKA na KA
• Každý nedeterministický konečný automat lze převést na deterministický konečný automat.
• Množina rozpoznávaných jazyků je stejná (regulární jazyky)
• Takto vzniklý deterministický konečný automat může mít až 2n vnitřních stavů, efektivita výpočtu tedy může být katastrofální.
• Často se ale většina stavů nevyužije a efektivita výpočtu je přijatelná.