1 / 28

Turing automaták

Turing automaták. 2010. április 29. Turing automata fogalma. A külső ábécé véges sok jelből áll, jelöljük ezeket a következő- képpen: s 1 ,s 2 ,…,s n. A többi jel a végtelen szalagon üres jel (). A működés kezdetén a szalagon levő jelsorozatot input

nyx
Download Presentation

Turing automaták

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Turing automaták 2010. április 29.

  2. Turing automata fogalma A külső ábécé véges sok jelből áll, jelöljük ezeket a következő- képpen: s1,s2,…,sn. A többi jel a végtelen szalagon üres jel (). A működés kezdetén a szalagon levő jelsorozatot input szónak nevezzük (jelölje P). A gép ütemezetten működik, és • vagy megáll véges sok lépés után: ez esetben a szalagon található Q szóvá alakította az automata a P szót, • vagy a gép sosem áll meg: ez esetben P-re az automata nem alkalmazható. Azt mondjuk, hogy az automata (gép) egy problémaosztály megoldására képes, ha annak minden feladata egy olyan input szóra kódolható, melyre a gép alkalmazható, és az output szó dekódolásával megoldást kapunk a feladatra.

  3. Turing gép si olvasófej (s,q) (s’,M,q’) si qj s’i L Q Mozgás Elfogadó állapot tipikus jelölése: ! Kezdőállapot q0 Kezdőmozgás: H M J,B,H q’j {B,H,J}

  4. q1      Példa Egyszerűsítés: 1. kihagyjuk a H jelet 2. adott sorban a sor jele alap- értelmezés 3. adott oszlopban az oszlop állapota alapértelmezés 4. ha egy oszlopban minden állapot azonos a „tetejével”, minden jel azonos „sorelejével” és minden mozgás „H”, akkor ezen jelet a séma többi részében ! jellel jelöljök, és oszlopot kihagyjuk

  5. n-ről (n+1)-re áttérés 10-es számrendszerben Input szó és indulóállapot 389 Másik jelöléssel: 38q09 q0 380 q0 390 ! Ha vonáson kezdünk q1-ben, agép letöröl egy vonást, átugorja az összes többi vonást, majd ugyanazt csinálja, mint az előző gép

  6. Vonássereg megszámolása Input szó:  q1 Output szó: a vonások száma 10-es számrendszerben

  7. Vonásseregek összeadása Input szó: + q0 Output szó:  A gép a vonássereget a „jobboldalra” viszi át. Ez egyszerűbb, de későbbi céljainkat nem szolgálja!

  8. Pálcikák szorzása Input szó: * = Output szó: * =     q0

  9. Turing programozó algoritmusok • Új algoritmusok készítésekor fel szeretnénk használni a korábban elkészített programokat • Identitás: E, E(P)=P minden p szóra. • másoló algoritmus: • kiválasztó algoritmus: • rákövetkező (jel. S):x db vonásból (x+1) db-ot készít • helyettesítő algoritmus: Fenti Turing programokat elkészítettenek tekintjük és használjuk őket.

  10. Két formális művelet • a belső állapotokat szabad (következetesen) átjelölni a végállapot, ! kivételével • fiktív jeleket szabad a sémához hozzávenni, melyek sorait ! állapotjelekkel töltünk ki • 1. és 2. nem befolyásolják azt, amit a program eddig csinált, tehát ezek ekvivalens átalakítások. • A továbbiakban, amikor a kiindulásul választott függvénysémákra valamilyen programozó algoritmust alkalmazunk, mindig feltesszük, hogy a sémákat a következő értelemben már átalakítottuk: külső ábécéiket a megfelelő kibővítések révén egymással egyenlővé tettük, és elértük, hogy nincs közös állapotuk.

  11. Euklideszi algoritmus a b Input:  q0 Output: 

  12. Két vonássereg legnagyobb közös osztója 10-es számrendszerben Kompozíció

  13. Párhuzamos alkalmazás • elválasztójel, amely nem szerepelhet semmilyen Turing program ábécéjében. Legyen P az A Turing program ábécéjében felírt szó, H pedig a B Turing program ábécéjében felírt másik szó. • Tétel. Megkonstruálható egy olyan Turing program, amely P ll H szóra alkalmazható, ésA(P) ll B(H) szót eredményez.A kapott program jelölése: A bizonyításra vissza fogunk térni.

  14. Program elágazása - ”IF” F egy felismerő Turing program ha egy P input szóra F(P){0,1}. Legyen A és B két azonos ábécéjű Turing program (TP) és F egy felismerő TP. Tétel. Ekkor konstruálható egy L TP, amely minden P szóra A kezdőálapota q1 B kezdőálapota r1 F* ÁG A B

  15. Félszalagok és párhuzamos alkalmazás 1. 0 1 2 stb. Jobboldali félszalagos gép ha a ll jelre ér, jobbra fordul Ha a szalag jobbvégéhez ér, azt odébb tudja tolni Jelölés: ll N  ll start stb. 2 1 0 ll  start Baloldali félszalagos gép Jelölés: N ll Tétel. Van olyan programozó algoritmus, amely bármely N Turing programot egy ll N jobboldali félszalagos Turing program- ba visz, továbbá N(P)=R  ll N(P)=R és azll N gépben az R eredményt a félszalag szélére írja a gép. Hasonló állítás igaz a baloldali esetre is.

  16. Félszalagok és párhuzamos alkalmazás 2. Tegyük fel az egyszerűség kedvéért, hogy az N programban csak , x, y jelek vannak. Az Ñgép úgy működik, mint az N gép, kivéve ha „jobbra kilépünk” (ekkor a  jobb oldali határolójelet odébbtolja), illetve ha „balra kilépnénk” (ekkor az egész szalagot jobbra tolja, mert a ll jelnek fix helyen kell maradnia. N

  17. Félszalagok és párhuzamos alkalmazás 3. ll N = A Ñ  B Először A beszúrja a  szóvége jelet az input szó végére, majd a ll utáni jelre áll. Itt Ñelvégzi azt, amit N végez, de közben a ll jelet helyben hagyja. Végül B gondoskodik arról, hogy a kezdő pozíció visszakerüljön a ll jel utáni első helyre, valamint törli a ll és a  jeleket.

  18. Mit csinál B a következő input szóval? ||  p1 X  Y   Az output: p2 x y Az „ígért” hatás mellett a felesleges üres jeleket is kitörlia szó közepéből.

  19. Félszalagok és párhuzamos alkalmazás 4. N és llN ekvivalenciájából miért következikaz A1 és A2 gépek párhuzamos alkalmazása? 1. A1ll : P1llP2  A1(P1)llP2 2. B1 átviszi a mutatót A1(P1)llP2 elejéről P2elejére 3. llA2 : A1(P1)llP2  A1(P1)ll A2(P2) 4. B2 átviszi a mutatót A2(P2)elejéről A1(P1) elejére 5. A1ll A2 := (A1ll)° B1°(llA2) ° B2 A félszalagos gépre vonatkozó tétel bizonyítását befejeztük.

  20. Univerzális Turing gép 1. • Az algoritmuselmélet alaphipotézise, hogy minden algoritmus megvalósítható Turing géppel (láttuk eddig a számrendszer-konverziót, összeadást, szorzást, programozó algoritmusokat, kompozíciót, feltételes elágazást. • cimke: { programrészlet}if (feltétel) then goto címke;elv alapján, ha van if, akkor van ciklus is • Amit az algoritmustól „elvárunk”, azt „tudja” a Turing gép: jogos tehát az algoritmust Turing gépként definiálni, ha minden algo-ritmus jelkészletét egységesen tudjuk kezelni, mint a számítógép is mindent - programot és jeleket egyránt - bináris kódban kezel • az univerzális Turing gépnek a kezdőszó mellett egy Turing séma is inputja, és az univerzális gép az adott sémájú géppel azonos outputot produkál az adott input szóra. Az univerzális turing gép a „Turing nyelven” írt „forrásprogramok” compilerének tekinthető.

  21. Univerzális Turing gép 2. Két problémát kell megoldani: a Turing séma kétdimenziós, és ezt az univerzális gépben egydimenziósan kell ábrázolni az univerzális gép ábécéje rögzített és véges, ezzel tetszőlegesTuring gép ábécéjét le kell tudni írni Végigmegyünk az adott sémán és minden 3 jelből álló csoporthoz (ez van egy cellában, ha nem az egyszerűsített ábrázolást tekintjük) eléírunk 2 jelet, a sor és oszlop jelét: (sor)(oszlop)(jel)(mozgás)(állapot)Így egy mk méretű séma 5mk méretű szalagot ad. Ebből a szalagból az eredeti séma egyértelműen visszaállítható. A vizsgált állapotot nem a cella alá, hanem balra mellé írjuk, pl.lll helyett ll qnl qn

  22. Univerzális Turing gép 3. A (sor)(oszlop)(jel)(mozgás)(állapot) sorozatot binárisan kódoljuk Mozgások B101 H 1001 J 10001 1 db 0 2 db 0 3 db 0 Jelek s1100001 s210000001 … sk100….001 4 db 0 6 db 0 2(k+1) db 0 (k=1,2,…) Állapotok q11000001 q2100000001 …………qm100….001 2m+3 db 0 (m=1,2,3….) 5 db 0 7 db 0 Egy adott Turing sémán a fenti helyettesítéseket végrehajtva a séma fordítását kapjuk.

  23. Univerzális Turing gép 4. Konfigurációnak nevezzük a szalagon levő helyzetet,amely egy szót tartalmaz, és valamelyik jeltől balra egyetlen állapotot. A konfiguráció fordításában a jelek és az egyetlen állapot fenti értelemben vett fordí- tását tekintjük. Az univerzális Turing gép működése Az input konfiguráció fordításában megkeressük az egyetlen páratlan 0-t tartalmazó kódot, emellett jobbra van az induló jel. (A jelek páros nullákból állnak, csak ott van páratlan darab nulla, ahol beírtuk az induló állapotot.) Ehhez a két szomszédhoz létezik egyetlen szomszédpár a séma fordításában (hiszen a sémában ez egy konkrét sor-oszlop találkozása). ebben a cellában megvizsgáljuk a mozgást (1 db, 2 db vagy 3 db 0). Ha ez H, akkor a szalagra a megfelelő állapot es jel helyére beírjuk az új állapotot és jelet. Amennyiben valódi mozgás van (B vagy J), akkor a korábbi helytől balra ill. jobbra mozogva keressük meg a jelet és amellé írjuk az állapotot, a korábbi állapotot törölve. Ezt folytatjuk, ameddig kell.

  24. Univerzális Turing gép 5. Szükség van még a konfiguráció és a séma fordításait elválasztó jelre, továbbá esetleges ideiglenes jelölésekre. Mindezek Turing géppel elvégezhetők. Mondhatjuk tehát azt, hogy egy Turing séma az input szavával együtt adat az univerzális Turing gép számára.

  25. Példaprogramok 1. 1997 Input ábécé: {0,1,2,3,4,5,6,7,8,9} Input szó(például): 0549803273891630 Output szó (a példában): I Feladat szöveges megfogalmazása: Amennyiben az 1997 évszám kirakható az input szóból (sorrendtől függetlenül, 1, 9, 9, 7 szerepelnek benne) akkor a válasz I, egyébként N.

  26. Példaprogramok 2. POA Input ábécé: {P,O,A} Input szó(például): POAPPOAAAPOA Output szó (a példában): III Végállapot: az output szó elején Feladat szöveges megfogalmazása: Számoljuk meg, hogy a POA szó hányszor fordul elő az input szóban. Az output eredményt vonásokban adjuk meg, illetve N, ha POA nem fordul elő.

  27. Példaprogramok 3. Vonásseregek előjeles kivonása Input ábécé: {I,+,-,=,0} Lehetséges típusok: Input szó(például): IIIIII-IIII= Output szó (a példában): IIIIII-IIII=+II Input szó(például): II-IIII= Output szó (a példában): II-IIII=-II Input szó(például): IIII-IIII= Output szó (a példában): IIII-IIII=0 Végállapot: az előjelen vagy a 0 jelen

  28. Példaprogramok 4. Bináris szám konvertálása vonásseregbe Input ábécé: {+,-,0,1} Lehetséges típusok: Input szó(például): +101 Output szó (a példában): +IIIII Input szó(például): -1111 Output szó (a példában): -IIIIIIIIIIIIIII Végállapot: az előjelen vagy a 0 jelen

More Related