AUTOMATY A 11 GRAMATIKY Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta Katedra teoretické informatiky a matematické logiky Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace
Kontextové uzávěrové vlastnosti (1) kontextové jazyky jsou uzavřené na konečná sjednocení kontextové gramatiky G 1 =(V N1, V T, S 1, P 1 ) a G 2 =(V N2, V T, S 2, P 2 ), kde V N 1 V N2 = položme G = (V N 1 V N2 {S }, V T, S, P1 P2 {S S 1 S 2 }) S je nový neterminál ošetřit přepis původních počátečních symbolů na λ platí L(G) = L(G 1 ) L(G 2 ) kontextové jazyky jsou uzavřené na konkatenaci položme G = (V 1 N V N2 {S }, V T, S, P 1 P 2 {S S 1.S 2 }) S je nový neterminál ošetřit přepis původních počátečních symbolů na λ platí L(G) = L(G 1 ).L(G 2 ) kontextové jazyky jsou uzavřené na iteraci položme G = (V N1 {S, S }, V T, S, P 1 {S λ S, S S S 1 S 1 }) S, S jsou nové neterminály je třeba dávat pozor na výskyt počátečního neterminálu vpravo (u bezkontextových netřeba) platí L(G) = L(G 1 )* kontextové jazyky jsou uzavřené na zrcadlový obraz položme G = (V N1, V T, S 1, {v R w R v w P 1 }) platí L(G) = L(G 1 ) R 2 Automaty a gramatiky 11
Kontextové uzávěrové vlastnosti (2) kontextové jazyky jsou uzavřené na kontextovou substituci substituce f: X 2 Y* je kontextová substituce, jestliže f(x) je kontextový jazyk pro každé x X máme G x = (V Nx, Y, S x, P x ), že f(x) = L(G x ) pro každé x X V Nx jsou po dvou disjunktní mějme G = (V N, X, S, P), zajímá nás kontextovost f(l(g)) položíme G = (V N x X V N x X, Y, S, P x X P x {x S x x X}) případně ošetříme přepis neterminálů jiných než S na λ platí L(G ) = f(l(g)) kontextové jazyky jsou uzavřené na doplňky a konečné průniky velmi hluboký výsledek (řešilo se asi 20 let) věta Immerman Szelepcsényi 3 Automaty a gramatiky 11
Turingův stroj (1) Turingův stroj automat, který může přepisovat pásku páska je potenciálně nekonečná v konečném čase stroj použije její konečnou část historická vsuvka 30. léta 20. století konečná výpočetní zařízení, formalizace algoritmu a problému Turingův stroj, λ-kalkulus, RAM (random access machine) osobnosti Turing, Kleene, Markov, Post, Church Churchova hypotéza (metavěta) všechna konečná výpočetní zařízení jsou ekvivalentní, tj. ekvivaletní Turingovu stroji nedokázáno ani nevyvráceno 4 Automaty a gramatiky 11
Turingův stroj (2) Turingův stroj formálně T = (Q, X, δ, q 0, b, F) Q - konečná neprázdná množina stavů X - konečná neprázdná množina symbolů (abeceda) F Q - množina přijímajících stavů δ: (Q-F) X Q X {-1, 0, +1} přechodová funkce pro stav a čtený symbol dává nový stav, symbol k zápisu a následující pozici na pásce v přijímajícím stavu výpočet končí q 0 Q - počáteční stav b X - symbol pro prázdnou buňku na pásce předpoklady páska je směrem doprava nekonečná vstupní slovo je napsané na levém konci pásky zprava doplněné symbolem b do nekonečna páska počáteční pozice je na prvním písmenu vstupního slova x X q Q 5 Automaty a gramatiky 11
Výpočet Turingova stroje konfigurace Turingova stroje trojice (u,q,v), kde u,v X* a q Q u.v je slovo na nejmenší souvislé části pásky obsahující symboly b a čtenou buňku u je část vlevo od aktuální čtené pozice (kromě) v je část vpravo od aktuální čtené pozice (včetně) změna konfigurace (u,q,v) na (w,p,z), jestliže (i) v = x.v pro x X, w = u, z = y.v a δ(q,x)=(p,y,0), nebo žádný posun (ii) v = x.v pro x X, w = u.y, z = v a δ(q,x)=(p,y,+1), nebo posun doprava (iii) u= u.x, v = x.v pro x,x X, w = u, z = x.y.v a δ(q,x)=(p,y,-1) posun doleva zapisujeme (u,q,v) T (w,p,z) nutno ošetřit případy, kdy u=λ změna konfigurace na konečně mnoho kroků (u,q,v) T * (w,p,z) (u,q,v) b b (ii) b b b b u X* u u v X* q Q w x q Q y v v z = v p Q b b b (u,q,v) b b b (w,p,z) b b b 6 Automaty a gramatiky 11
Varianty Turingova stroje nedeterministický přechodová funkce bude nedeterministická 1. páska x 1 X δ: (Q-F) X 2 Q X {-1, 0, +1} pojem změny konfigurace se upraví místo δ(q,x) =... budeme mít δ(q,x)... vícepáskový (k pásek) δ: (Q-F) X k Q X k {-1, 0, +1} k případně δ: (Q-F) X k 2 Q X k {-1, 0, +1}k u nedeterministické varianty vstupní slovo na první pásce změna konfigurace analogicky multi-dimenzionální páska má několik rozměrů (například 2D, 3D) pohyb je možný ve všech směrech 2. páska... k. páska 2D q Q x k X x 2 X q Q 7 Automaty a gramatiky 11
Jazyky a Turingovy stroje slovo w (X-{b})* je přijímáno Turingovým strojem T = (Q, X, δ, q 0, b, F), jestliže (λ, q 0,w) T * (u,f,v) pro u,v X* a f F někdy je vyžadováno smazání pásky, tj. (λ, q 0,w) T * (λ,f,b) jazyk L(T) přijímaný Turingovým strojem T L(T) = { w w (X-{b})* ( f F) (λ, q 0,w) T * (u,f,v) } jazyky přijímané Turingovými stroji jsou právě rekurzivně spočetné jazyky (typu 0) [recursively enumerable language] platí s libovolnou variantou Turingova stroje (více pásek, více dimenzí, s nedeterminismem) všechny varianty TS mají stejnou výpočetní sílu lze se omezit na jednopáskový deterministický 8 Automaty a gramatiky 11
Turingův stroj gramatika mějme deterministický jednopáskový TS T = (Q, X, δ, q 0, b, F) hledáme gramatiku G=(V N,X,S,P) (bez omezení), že L(G) = L(T) G vygeneruje pásku s prostorem pro výpočet a kopii vstupního slova, simuluje výpočet T nad vygenerovanou páskou (páska obsahuje zracadlový obraz vstupu) V N = { X x x X } { Q q q Q } {S, I, B, E} I pomocný neterminál pro generování w X* a w R, B pro generování prostoru na simulované pásce, E pro mazání simulační pásky pravidla P zahájení S I Q q 0 B I x I X x B pro x X generování slova w a jeho kopie w R B X b B X b generování volného prostoru simulace výpočtu nad w R X x Q q X y X z Q p X y když δ(q,x)=(p,z,0) X x Q q X y Q p X z X y když δ(q,x)=(p,z,+1) X x Q q X y X z X y Q p když δ(q,x)=(p,z,-1) mazání pásky nechť w = x 1 x 2...x n derivace: S G *... x 1 x 2...x n I X x n X xn-1...x x1 Q q0 B G x 1 x 2...x n B X x n X xn-1...x x1 Q q0 B G*... x 1 x 2...x n X b...x b X x n X xn-1...x x1 Q q0 X b...x b G *... x 1 x 2...x n u Q f v pro u,v {X x x X}* a f F G x 1 x 2...x n u E v G *... x 1 x 2...x n E v G * x 1 x 2...x n E G * x 1 x 2...x n Q f E pro f F X E E pro X V N E X E pro X V N E λ 9 Automaty a gramatiky 11
Gramatika Turingův stroj mějme gramatiku (bez omezení) G=(V N,V T,S,P) hledáme TS T = (Q, X, δ, q 0, b, F), že L(T) = L(G) pracné po technické stránce, ukážeme abstraktně konstrukce, z nichž na vyšší úrovni sestavíme T TS T 1, že L(T 1 ) = {#u#v# u,v X* u G v }, # V N V T na všech možných místech v u je vyzkoušena aplikace všech pravidel G TS T 2, že L(T 2 ) = { w ( n N 0 ) w = #u 1 #u 2 #...#u n # u 1,...,u n (V N V T )* u 1 G u 2 u 2 G u 3... u n-1 G u n } T 2 bude založen na T 1 TS T 3 generující systematicky všechna slova nad V N V T {#} začínající #S# T 3 vstupní slovo přepíše na následující slovo spojením T 2 a T 3 vznikne požadovaný TS T vstup: z V T * na volné místo na pásce zapiš w = #S# loop if w L(T 2 ) then if w končí #z# then přijmi z w výsledek práce T 3 nad w 10 Automaty a gramatiky 11
Kódování, slova a čísla kódování různých datových typů vysoké úrovně na nižší úrovni jen řetězce nebo přirozená čísla ASCII či Unicode řetězce jsou reprezentovány posloupností bitů, tj. slovy nad {0, 1} slova nad {0, 1} lze interpretovat jako přirozená čísla interpretace b n-1...b 1 b 0 = b i 2 i + 2 n, kde b i {0,1} pro i=0,1,...,n-1 máme pojem i-tého řetězce pro i N analogicky pro bitmapové obrázky obrázek kódování jako binární řetězec číslo máme pojem i-tého obrázku program je jen vhodně interpretovaný řetězec máme i-tý program (respektive i-tý Turingův stroj) program + bitmapové obrázky = počítačová hra máme i-tou hru důkaz je posloupnost výrazů i-tý důkaz Př.: 101 13. binární řetězec 0101 21. binární řetězec 00101 37. binární řetězec 11 Automaty a gramatiky 11
Množiny konečné a nekonečné konečná množina K Př.: {a, b, c} je konečná množina kardinality 3 počet jejích prvků - kardinalita je číslo N 0 neexistuje vzájemně jednoznačné zobrazení mezi K a její 12 Automaty a gramatiky 11 vlastní podmnožinou nekonečná množina N existuje vzájemně jednoznačné zobrazení mezi N a její vlastní podmnožinou spočetná množina S existuje vzájemně jednoznačné zobrazení mezi S a N spočetné množiny jsou nekonečné Př.: N je nekonečná 1 2 2 4 3 6... Př.: celá čísla Z 0 1 -i 2i i 2i+1...
Enumerace a jazyky (1) enumerace množiny M je vzájemně jednoznačné zobrazení mezi M a N máme tedy enumeraci řetězců, programů, obrázků,... lze enumerovat jazyky na danou abecedou X (={0,1})? nikoli pro spor předpokládejme, že jazyky nad {0, 1} enumerovat lze máme tedy pojem i-tého jazyka, označme jazyky L i pro i N položme L = { w w {0,1}* w je i-tý binární řetězec w L i } L je nad {0, 1}, mělo by se tedy jednat o j-tý jazyk pro jisté j N uvažme j-tý binární řetězec v a otázku, zda v L když v L, pak v L podle definice L když v L, pak v L podle definice L 13 Automaty a gramatiky 11
Enumerace a jazyky (2) byla použita diagonalizace překlopíme hodnoty na diagonále nová diagonála nemůže být řádkem s každým řádkem se v jedné buňce liší předpoklad, že jazyky nad {0,1} lze enumerovat, byl chybný jazyky řetězce 1 2 3 4 5... máme více jazyků než programů (Turingových strojů) existují jazyky, pro které nemáme program (Turingův stroj), který je přijímá nikoli všechny jazyky jsou rekurzivně spočetné nekonstruktivní přístup jak takový jazyk vypadá? 1 2 3 4 5... 10 0 1 1 0 10 01 01 10 14 Automaty a gramatiky 11