Turing automaták 2010. április 29..

Slides:



Advertisements
Hasonló előadás
A digitális számítás elmélete
Advertisements

Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
Algebrai struktúrák.
Elemi algoritmusok Páll Boglárka.
Programozási feladatok
Kódelmélet.
Matematikai Analízis elemei
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Halmazok, műveletek halmazokkal
Műveletek logaritmussal
Kötelező alapkérdések
Matematika II. 2. előadás Geodézia szakmérnöki szak 2012/2013. tanév Műszaki térinformatika ágazat őszi félév.
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Euklidészi gyűrűk Definíció.
Algebrai struktúrák 1.
Csoport részcsoport invariáns faktorcsoport részcsoport
Gyűrűk Definíció. Az (R, +, ·) algebrai struktúra gyűrű, ha + és · R-en binér műveletek, valamint I. (R, +) Abel-csoport, II. (R, ·) félcsoport, és III.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Kétértékűség és kontextusfüggőség Kijelentéseink igazak vagy hamisak (mindig az egyik és csak az egyik) Kijelentés: kijelentő mondat (tartalma), amivel.
Visual Basic for Application (VBA)
Operációkutatás szeptember 18 –október 2.
Az összehasonlító rendezések
Programozási alapismeretek 10. előadás
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Algoritmusok Az algoritmus fogalma:
Algebra a matematika egy ága
MI 2003/7 - 1 Az egyesítési algoritmus Minden kapitalista kizsákmányoló. Mr. Smith kapitalista. Mr. Smith kizsákmányoló.
C A C nyelv utasításai.
Állapottér-reprezentáljunk!
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Papp Róbert, Blaskovics Viktor, Hantos Norbert
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
A digitális számítás elmélete
A digitális számítás elmélete
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
A TERMÉSZETTUDOMÁNYOK ALAPJAI 1. Matematika
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Integrálszámítás Mire fogjuk használni az integrálszámítást a matematikában, hova szeretnénk eljutni? Hol használható és mire az integrálszámítás? (már.
6. SZÁMELMÉLET 6.1. Oszthatóság
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
Számoljuk meg rekurzív függvénnyel egy bináris fa leveleit!
A számfogalom bővítése
ISZAM III.évf. részére Bunkóczi László
A digitális számítás elmélete
Halmazok Összefoglalás.
Fixpontos, lebegőpontos
Ciklusok (iterációk).
Hernyák Zoltán Programozási Nyelvek II.
13. A zillmerezés, mint bruttó
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Lagrange-interpoláció
A Turing-gép.
Algoritmusok.
Logikai programozás 5..
Objektum orientált programozás
Fixpontos, lebegőpontos
Lineáris algebra.
Valószínűségszámítás II.
2005. Információelmélet Nagy Szilvia 2. A forráskódolás elmélete.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Informatikai gyakorlatok 11. évfolyam
Előadás másolata:

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

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}

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

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

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

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!

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 

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.

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.

Euklideszi algoritmus b Input:  q0 q1 q2 q3  Jq3 Bq2 Jq0 B!  q1  q0 Bq0  B J  B J   B J q0 Output: 

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ó

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.

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

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

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

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!

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.

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.

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

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

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

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.

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.

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.

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

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

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