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..

Hasonló előadás


Az előadások a következő témára: "Turing automaták 2010. április 29.."— Előadás másolata:

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 (s,q) (s’,M,q’) si qj s’i L Q q’j {B,H,J} olvasófej
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 Példa q1      q1 q2 q3 q4 q5  Jq4 Bq3 Jq1 Bq5 Hq5  Hq2
Bq1 Jq2 J q4 Hq5 q1 q2 q3 q4 Jq4 Bq3 Jq1 B! q2 q1 J q1 Bq1 B J B J B J Egyszerűsítés: 1. kihagyjuk a H jelet adott sorban a sor jele alap- értelmezés 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
q0 q1 1! 1 2! 2 3! 3 4! 4 5! 5 6! 6 7! 7 8! 8 9! 9 0B B Bq0 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
q0 q1 q2 1q2 ! J 1 2q2 2 3q2 3 4q2 4 5q2 5 6q2 6 7q2 7 8q2 8 9q2 9 0B Bq1 B Bq0 Input szó:  q1 Output szó: a vonások száma 10-es számrendszerben

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

8 Pálcikák szorzása Input szó: * =
Output szó: * =     q0 q0 q1 q2 q3 q4 q5 q6 Jq1 J Jq3 B q4 * Bq6 Jq2 = Bq5 J ! Jq0 B

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
b Input:  q0 q1 q2 q3 Jq3 Bq2 Jq0 B! q1  q0 Bq0 B J  B J  B J q0 Output: 

12 Két vonássereg legnagyobb közös osztója 10-es számrendszerben
q0 q1 q2 q3 p0 p1 p2 Jq3 Bq2 Jq0 1p2 ! Bp1 q1  q0 Bq0 B Bp0 J  B J  B J 1 2p2 2 3p2 3 4p2 4 5p2 5 6p2 6 7p2 7 8p2 8 9p2 9 0B 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ó, é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 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 ÁG p q1 r1 J q1 1 J r1 ll J A kezdőálapota q1 B kezdőálapota r1 F* ÁG A B

15 Félszalagok és párhuzamos alkalmazás 1.
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 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 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 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 ñ nll nx ny n n n’ x Jnx xJnx yJnx B y Jny xJny yJny Bn Jn xJn yJn Bn’ Jñ xJn yJn Jn ll J nll Jn 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. B p1 px py p’x p’y p2 x Bpx Jp’x Jp’y y Bpy J xJp1 yJp1 Bp2 ll J! A r1 r2 x J B y Br2 ll J!

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 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 P2 elejé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. l l l helyett l l qn l 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 s2  … sk 100….001 4 db 0 6 db 0 2(k+1) db 0 (k=1,2,…) Állapotok q1 q2  …………qm 100….001 5 db 0 7 db 0 2m+3 db 0 (m=1,2,3….) 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): 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): 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.."

Hasonló előadás


Google Hirdetések