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 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={q s, q L } q 0 = q s p(q s,0)= q s, p(q L,0)= q L, p(q S,1)= q L, p(q L,1)= q s qsqs qLqL 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 , 00, má být přijato 00110, , 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 , 00, má být přijato 00110, , 0, 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 q0q0 q1q1 q2q2 qKqK 0,
Převod NKA na KA q0q0 q1q1 q 02 q2q2 q 01 q 0K q 12 q 1K q 012 q 2K q 12K q 01K q 02K q 012K qKqK 1 0 1
Převod NKA na KA q0q0 q1q1 q 02 q2q2 q 01 q 0K q 12 q 1K q 012 q 2K q 12K q 01K q 02K q 012K qKqK
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ž 2 n 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á.