Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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: s 1,s 2,…,s n.

Hasonló előadás


Az előadások a következő témára: "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: s 1,s 2,…,s n."— Előadás másolata:

1 Turing automaták április 29.

2 2 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 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 3 (s,q)  (s’,M,q’) Turing gép sisi olvasófej Mozgás QL sisi qjqj q’jq’j s’is’i {B,H,J} Elfogadó állapot tipikus jelölése: ! Kezdőállapot q 0 Kezdőmozgás: H M  J,B,H 

4 4 Példa q1q1 q2q2 q3q3 q4q4 q5q5 Jq 4 Bq 3 Jq 1 Bq 5 Hq 5 Hq2Hq2 Hq1Hq1  J q 1 Bq1Bq1 Hq5Hq5 Bq1Bq1 Jq2Jq2 Bq3Bq3 J q 4 Hq5Hq5 Bq1Bq1 Jq2Jq2 Bq 3  J q 4 Hq5Hq5 q1q1 q2q2 q3q3 q4q4 Jq4Jq4 Bq3Bq3 Jq1Jq1 B!B! q2q2 q1q1 J q 1 Bq1Bq1  BJ BB J  BJ B JJ 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 q1     q1     

5 5 q0q0 q1q1 01!1! 12!2! 23!3! 34!4! 45!5! 56!6! 67!7! 78!8! 89!9! 90B 1!1!  B Bq q0q0 Másik jelöléssel: 38q 0 9 Input szó és indulóállapot 380 q0q0 390 ! Ha vonáson kezdünk q 1 -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 n-ről (n+1)-re áttérés 10-es számrendszerben

6 6 q0q0 q1q1 q2q2 01q 2 !J 12q 2 !J 23q 2 !J 34q 2 !J 45q 2 !J 56q 2 !J 67q 2 !J 78q 2 !J 89q 2 !J 90B!J 1q 2 !Bq 1  B Bq 0 J Vonássereg megszámolása Input szó:  q1q1 Output szó: a vonások száma 10-es számrendszerben

7 7 q0q0 q1q1 q2q2  Jq 1 JB  Bq 2 Jq 0 + ! JB Vonásseregek összeadása Input szó:  +  q0q0 Output szó:  A gép a vonássereget a „jobboldalra” viszi át. q0q0 q1q1  Jq 1 J + !! Ez egyszerűbb, de későbbi céljainkat nem szolgálja!

8 8 q0q0 q1q1 q2q2 q3q3 q4q4 q5q5 q6q6 Jq1Jq1 J Jq3Jq3 JBBJ q4q4 J *Bq 6 Jq 2 BJ =Bq5Bq5 JBBJ !  Jq 0 BB  JJq2Jq2 BB Pálcikák szorzása Input szó:  *  = Output szó:  *  =     q0q0

9 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 10 Két formális művelet 1. a belső állapotokat szabad (következetesen) átjelölni a végállapot, ! kivételével 2. 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 11 Euklideszi algoritmus q0q0 q1q1 q2q2 q3q3 Jq 3 Bq 2 Jq 0 B! B! q1q1  q0 q0 Bq 0  BJ  B J  BJ B JJ  q0q0 a b Output:  Input:

12 12 q0q0 q1q1 q2q2 q3q3 p0p0 p1p1 p2p2 Jq 3 Bq 2 Jq 0 p2 p2 1p 2 !Bp 1 q1q1  q0 q0 Jq 0 Bq 0 B Bp 0 J  BJ  B J  BJ B JJ 01p 2 !J 12p 2 !J 23p 2 !J 34p 2 !J 45p 2 !J 56p 2 !J 67p 2 !J 78p 2 !J 89p 2 !J 90B!J Két vonássereg legnagyobb közös osztója 10-es számrendszerben Kompozíció

13 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ó, és A(P) ll B(H) szót eredményez. A kapott program jelölése: A bizonyításra vissza fogunk térni.

14 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 ÁGpq1q1 r1r1 0 J q 1 1 J r 1 ll J J F*ABÁG A kezdőálapota q 1 B kezdőálapota r 1

15 15 Félszalagok és párhuzamos alkalmazás 1. ll start 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 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 az ll 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 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…ñn ll nxnx nyny n nn n’n’ x Jn x xJn x yJn x Jn x B y Jn y xJn y yJn y Jn y B  Bn Jn xJn yJn Jn  Bn’ B  Jñ xJn  yJn  Jn  llJ n ll Jn N

17 17 Félszalagok és párhuzamos alkalmazás 3. ll N = A  Ñ  B A r1r1 r2r2 xJB yJB  Br 2  llJ!J! 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. B p1p1 pxpx pypy p’xp’x p’yp’y p2p2 x Bp x Jp’ x Jp’ y B y Bp y Jp’ x Jp’ y B JBBxJp 1 yJp 1 B  Bp 2 B llJJp’ x Jp’ y J!

18 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örli a szó közepéből.

19 19 Félszalagok és párhuzamos alkalmazás 4. N és llN ekvivalenciájából miért következikaz A 1 és A 2 gépek párhuzamos alkalmazása? 1. A 1 ll: P 1 llP 2  A 1 (P 1 )llP 2 2. B 1 átviszi a mutatót A 1 (P 1 )llP 2 elejéről P 2 elejére 3. llA 2 : A 1 (P 1 )llP 2  A 1 (P 1 )ll A 2 (P 2 ) 4. B 2 átviszi a mutatót A 2 (P 2 ) elejéről A 1 (P 1 ) elejére 5. A 1 ll A 2 := (A 1 ll)° B 1 ° (llA 2 ) ° B 2 A félszalagos gépre vonatkozó tétel bizonyítását befejeztük.

20 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 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 1. 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ó. 2. A vizsgált állapotot nem a cella alá, hanem balra mellé írjuk, pl. l l l helyett l l q n l qnqn

22 22 Univerzális Turing gép 3. A (sor)(oszlop)(jel)(mozgás)(állapot) sorozatot binárisan kódoljuk B  101 H  1001 J  db 06 db 02(k+1) db 0 (k=1,2,…) q 1  q 2  …………q m  100… db 07 db 0 2m+3 db 0 (m=1,2,3….) 1 db 0 2 db 03 db 0 Állapotok s 1  s 2  … s k  100….001 Jelek Mozgások Egy adott Turing sémán a fenti helyettesítéseket végrehajtva a séma fordítását kapjuk.

23 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 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 25 Példaprogramok Input ábécé: {0,1,2,3,4,5,6,7,8,9} Input szó(például): 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 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 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 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


Letölteni ppt "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: s 1,s 2,…,s n."

Hasonló előadás


Google Hirdetések