A digitális számítás elmélete R és CF nyelvek összevetése Turing gép Rekurzíve felsorolható és rekurzív nyelv
R és CF nyelvek összevetése Reguális nyelvek Környezetfüggetlen nyelvek Megadása reguláris kifejezéssel grammatikával A aB a A b, A V, b (V)* Chomsky-féle normál alak Példák 1nk n 0 , szó felismerés {0i1i i >0 , zárójelezés, progr. nyelvek (BNF) Ellenpéldák w azonos számú 0 és 1 an bn cn 0 n Pumpáló l. s =xyz, xynzL, y >0, xy p s=uvxyz, uvnxynzL,vy>0, vxyp Nemdet. gép nemdet. véges automata (nemdet) verem automata Det. gép ekvivalens a nemdet.va gyengébb mint a nemdet. változat Minimális gép egyértelmű minden nyelvhez ? Operátorokra zárt reguláris operátorok A B, A–B, AC = *– A, AR A B, A–B csak ha A reguláris!
Grammatikával generálható nyelvek összevetése 0: 1:CS 2:CF DCF 3:R
Turing gépek idealizált számítógép a legáltalánosabb számítási modell: minden algoritmikusan megoldható probléma megoldható Turing-géppel is de: nem minden probléma oldható meg Turing-géppel! kiszámíthatóság elmélete, algoritmikusan eldönthetetlen feladatok Alan Turing (1912-1954) angol matematikus: - Turing-gép, kiszámíthatóság,... - II VH Enigma-kód feltörése - Turing-teszt, MI - ACM Turing díj
Turing gépek w #wR w * CF w #w w * nem CF (biz. pumpáló lemmával) Verem LIFO elérés nem elég ír-olvas a szalagról-ra az író-olvasó fej J és B irányba mozoghat 1 lépéssel a szalag végtelen elutasító állapot is adott a gép nem áll meg feltétlenül! 0 0 1 1 1 1 1 1 _ _ író-olvasó fej véges sok állapot
Turing gépek Pl: w #w w 0,1* felismerése TG-pel 0 1 1 1 # 0 1 1 1 _ ... X 1 1 1 # 0 1 1 1 _ ... X 1 1 1 # X 1 1 1 _ X X 1 1 # X 1 1 1 _ X X X X # X X X X _ 0 1 1 1 # 0 1 1 1 _ _ Keres # jelet, ha nincs elutasít A talált # jel két oldalán oda-vissza összeveti a párokat, X-et írj helyükre ha azonosak, különben elutasít Ha a # előtt csak X szerepel, ellenőrizd hogy a # után van-e X-tól különböző, ha igen, elutasít, különben elfogad.
Turing gépek Definíció: Turing gép M = (Q, , G, , q0, qelfogad, qelutasít) ahol: Q, egy véges halmaz az állapotok halmaza , egy véges halmaz a bemeneti abc, mely nem tartalmazza a _ jelet G, egy véges halmaz a szalag abc, ahol _ G és G : Q G Q G J, B az állapotátmenet függvény q0 Q a kezdeti állapot qelfogad Q az elfogadó állapot qelutasít Q az elutasító állapot
Turing gépek Megj: Turing gép működése Kezdőhelyzetben az input sorozat a szalag első n mezőjében szerepel, a többi mezőben a _ jel áll. A gép vagy megáll elfogadó vagy elutasító állapotban, vagy nem áll meg. ( mindenütt értelmezett!) 2. Megj: Egy pillanatnyi konfiguráció leírható a szalag tartalmával, a fej pozíciójával és a pillanatnyi állapottal. Megadása: u q v, ahol q egy állapot, uv a szalagon levő sorozat a végtelen sok_ jel előtt, a fej v első elemén áll. Pl: 001q710110 0 0 1 1 0 1 1 0 _ _ q7
Turing gépek Definíció: Turing gép egy lépése a, b, c G szalagjelek, u, v G*, p, q Q állapotok Az ua p bv konfiguráció rákövetkezője az u q acv , ha (p, b) = (q, c, B) (a fej balra lépett) Az ua p bv konfiguráció rákövetkezője az uac q v , ha (p, b) = (q, c, J) (a fej jobbra lépett) Megj: p bv rákövetkezője balra lépés esetén p cv (nem szalad le balra) Definíció: u, v G*, p, Q (u, p, v) egy konfiguráció, elfogadó-elutasító, ha p állapot az kezdeti: (e, q0, w) ahol w a szalagra írt bemenő jelsorozat
Turing gépek Definíció: M Turing gép elfogad egy w sorozatot, ha : C1 C2 ... Cn konfigurációk sorozata, hogy: C1 a kiindulási konfiguráció, Ci rákövetkezője Ci+1 , i = 1,...n-1, Cn elfogadó konfiguráció. Jelölés: L(M) jelöli az M Turing gép által elfogadott sorozatok halmazát. Ez a gép által felismert nyelv.
Turing gépek Definíció: Egy L * nyelv Turing felismerhető vagy rekurzíve felsorolható, ha van olyan M Turing gép, melyre L(M) =L. Megj: s * -L esetén nem biztos, hogy megáll a gép, így csak az L elemeire kapunk igenlő választ. Definíció: Egy L * nyelv Turing eldönthető vagy rekurzív, ha van olyan M Turing gép, melyre L(M) =L, és M minden s * szóra megáll. Megj: Minden rekurzív nyelv rekurzíve felsorolható is. (Az érdekes kérdés a fordított tartalmazás.)
Turing gépek Megj: Minden rekurzív nyelv rekurzíve felsorolható is. (Az érdekes kérdés a fordított tartalmazás.) Tétel: Ha L rekurzív, akkor LC is az. Biz: Ha L(M) =L, akkor M-ben az elfogadó és elutasító állapotot felcserélve, az így kapott M’ TG-re L(M’) = LC.
Turing gépek Példa: L=02n n0 nyelvet eldöntő TG G = 0, X, q10000 q2000 Xq300 X0q40 X0Xq3 X0q5 X Xq5 0X q5 X0X q5 X0X q2 X0X Xq2 0X XXq3 X XXXq3 XXq5 X Xq5 XX q5 XXX q5 XXX q2 XXX Xq2 XX XXq2 X XXXq2 XXXqef Példa: L=02n n0 nyelvet eldöntő TG G = 0, X, X-vel felülír minden második 0-t, balról jobbra Ha egy 0 maradt, elfogad. Ha legalább 2, és páratlan számú 0 maradt, elutasít A fej visszamegy a szalag elejére. 1-nél folytat. qelfogad q1 , J q2 0 , J qelutasít X, J 0, J q3 0 X, J q4 q5 X, B , B 0, B
Miről volt szó ? R és CF nyelvek összevetése Turing gép Rekurzíve felsorolható és rekurzív nyelv Eldöntő TG konstrukciója (példa)