110 likes | 288 Views
Formální definice. Konečná množina vnitřních stavů Q Konečná vstupní abeceda A Počáteční stav q 0 Množina přijímacích stavů K. Automat na kávu. Q= {0,1,2,3,4,5} A={1,2,5} q 0 =0 K={5}. Automat na rozpozn ávání jazyka. Vstupní abeceda A
E N D
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}
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 1 qL
Ú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 0,1 • Přechodová funkce není jednoznačná • Příklad: automat rozpoznává jazyk tvořený slovy zakončenými posloupností 010 q0 0 0,1 0,1 q1 0,1 1 q2 qK 0
Převod NKA na KA q012K q0 q012 q01 q01K 1 q0K q1 q02K q2K q02 q12 q2 q12K qK q1K 0 1
Převod NKA na KA 1 0 q012K q0 q012 q01 0 q01K 1 q0K 1 q1 q02K q2K 0 q02 q12 q2 q12K qK q1K
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á.