9. előadás Veremautomaták 1.

Hasonló dokumentumok
6. előadás Környezetfüggetlen nyelvtanok/1.

A számítógépes nyelvészet elmélete és gyakorlata. Automaták

Automaták mint elfogadók (akceptorok)

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

6. előadás A reguláris nyelvek jellemzése 2.

Számításelmélet. Második előadás

Algoritmuselmélet 12. előadás

Turing-gépek. Számításelmélet (7. gyakorlat) Turing-gépek 2009/10 II. félév 1 / 1

A digitális számítás elmélete

Véges automaták, reguláris nyelvek

Formális nyelvek - 9.

Formális nyelvek és automaták vizsgához statisztikailag igazolt várható vizsgakérdések

6. előadás A reguláris nyelvek jellemzése 2.

Dicsőségtabló Beadós programozási feladatok

Atomataelmélet: A Rabin Scott-automata

ZH feladatok megoldásai

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

A Turing-gép. Formális nyelvek III.

Verem Verem mutató 01

MintaFeladatok 2.ZH Megoldások

Logika és számításelmélet. 10. előadás

Turing-gép május 31. Turing-gép 1. 1

Formális nyelvek és automaták előadások

Deníciók és tételek a beugró vizsgára

Formális nyelvek és gépek (definíciós és tétel lista - 09/10/2)

Automaták és formális nyelvek

Környezetfüggetlen nyelvtan. Formális nyelvek II. Környezetfüggetlen nyelvek és veremautomaták. Backus-Naur forma

FORMÁLIS NYELVEK ÉS FORDÍTÓPROGRAMOK. LABORGYAKORLATOK

5. előadás Reguláris kifejezések, a reguláris nyelvek jellemzése 1.

Chomsky-féle hierarchia

Formális nyelvek és automaták

Programozási módszertan

Környezetfüggetlen nyelvtan. Formális nyelvek II. Környezetfüggetlen nyelvek és veremautomaták. Backus-Naur forma

9. előadás Környezetfüggetlen nyelvek

A Számítástudomány alapjai

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Nyelvek és automaták augusztus

7. előadás Környezetfüggetlen nyelvtanok

A számítógépes nyelvészet elmélete és gyakorlata. Formális nyelvek elmélete

Algoritmusok bonyolultsága

MintaFeladatok 2.ZH Megoldások

KOVÁCS BÉLA, MATEMATIKA I.

Chomsky-féle hierarchia

Feladatok. 6. A CYK algoritmus segítségével döntsük el, hogy aabbcc eleme-e a G = {a, b, c}, {S, A, B, C}, P, S nyelvtan által generált nyelvnek!

A digitális számítás elmélete

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

NP-teljesség röviden

2014. szeptember 24. és 26. Dr. Vincze Szilvia

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

A SZÁMÍTÁSTUDOMÁNY ALAPJAI

Adatszerkezetek és algoritmusok

(2004) by Data parancsnok Based on (not so much auditted) lectures of Dr. Radelecki Sándor

Informatika 1 2. el adás: Absztrakt számítógépek

Rekurzió. Dr. Iványi Péter

Formális nyelvek előadások tavaszi félév

1 2. gyakorlat Matematikai és nyelvi alapfogalmak. dr. Kallós Gábor

Kiterjesztések sek szemantikája

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Átlátható veremautomaták és nyelvek

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

HALMAZELMÉLET feladatsor 1.

Aritmetikai kifejezések lengyelformára hozása

Az informatika elméleti alapjai 2 elővizsga december 19.

2. Ítéletkalkulus szintaxisa

Diszkrét matematika II., 8. előadás. Vektorterek

KOVÁCS BÉLA, MATEMATIKA I.

Emlékeztető: LR(0) elemzés. LR elemzések (SLR(1) és LR(1) elemzések)

Nyelv hatványa: Legyen L egy nyelv, nemnegatív egész hatványai,,. (rek. definició) Nyelv lezártja (iteráltja): Legyen L egy nyelv. L nyelv lezártja.

Itt és a továbbiakban a számhalmazokra az alábbi jelöléseket használjuk:

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Felismerhető nyelvek zártsági tulajdonságai II... slide #30. Véges nemdeterminisztikus automata... slide #21

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Alap fatranszformátorok I. Oyamaguchi [3], Dauchet és társai [1] és Engelfriet [2] bebizonyították hogy egy tetszőleges alap

ALGEBRAI AUTOMATAELMÉLET

Nagy Gábor compalg.inf.elte.hu/ nagy

Turing-gépek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT augusztus 16.

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

HALMAZOK. A racionális számok halmazát olyan számok alkotják, amelyek felírhatók b. jele:. A racionális számok halmazának végtelen sok eleme van.

Fogalomtár a Formális nyelvek és

Bevezetés az informatikába

Temporális logikák és modell ellenırzés

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

1. előadás: Halmazelmélet, számfogalom, teljes

Turing-gépek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz VIII. Friedl Katalin BME SZIT március 18.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

10. fejezet Az adatkapcsolati réteg

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Dr. Mileff Péter

Időzített átmeneti rendszerek

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Alap fatranszformátorok II

Számításelmélet. Will június 13. A kiszámíthatóság fogalma és a Church-Turing tézis

Átírás:

9. előadás 1. Dr. Kallós Gábor 2014 2015 1

Tartalom Motiváció Verem és végtelen automata Felépítés, konfigurációk és átmenetek Szavak felismerése, felismert nyelv Az elfogadó állapottal és az üres veremmel felismerő automaták ekvivalenciája Feladatok 2

Motiváció Miért van szükség veremautomatára? (Cél: CF nyelveket felismerő automata) Eddig: csak DVA (ill. NDVA) Probléma az L(G 1 ) = {a i b i i 1} nyelvvel A véges automatának nincs emlékező egysége (mit dolgoztunk fel eddig), ill. a memóriája csak az adott állapotra korlátozódik Csak úgy tud n szimbólumot megszámolni, ha végigmegy n állapoton De nem tudjuk előre megmondani, hogy hány db a lesz! Tehát: szükséges az automata felerősítése, bővítése: verem hozzáadása Elképzelt/elvárt működés Az automata az a-kat bepakolja a verembe Nem tudjuk milyen hosszú a mondat első fele (nagyon hosszú is lehet): a veremmemória elvileg végtelen (nem korlátos) (Ha a szó b-vel indul: lehal ) Ha b jön, sorra veszi ki az a-kat a veremből, és nem rak be semmit Ha b után a jön: lehal Ha az utolsó b olvasása után a verem kiürült, akkor a szót az automata elfogadta Látjuk: A veremautomata kifejező ereje nagyobb a véges automatákénál! Feladat: Hasonló módon tervezzük meg (vázlatosan) egy olyan veremautomata működését, amely azon szavakat fogadja el, amelyekben az a-k száma ugyanaz, mint a b-k száma! 3

Szemléltetés Eszköztár: JFLAP projekt Elemek: mint a véges automatánál + verem és veremmozgások Feladat: nézzük meg az aabb és aaaabbbb szavak (végig)olvasásának lehetőségeit! 4

Verem és végtelen automata Verem (stack) használata az automatáknál Veremautomata eredetileg: aritmetikai kifejezések számítógéppel történő kiértékelése (1960-as évek) (Az implementáló szoftvert levédték szabadalommal, ez volt az első védett sw az USA-ban) A verem elvileg végtelen, ezért a veremautomata már nem véges, hanem egy speciális fajtájú végtelen automata (bár állapothalmaza véges) Az L(G 1 ) nyelvet nem lehet semmilyen korlátos automatával felismerni (tárolni kell a szó első felét) A verem, mint programozási adatszerkezet, tipikusan rekurzív programozási feladatoknál jön elő [Példa: Hanoi tornyai (C-szerű pszeudokód) A forráspálcáról (source) a célpálcára (target) kell pakolni Megoldás: Segédpálcát (help) vetünk be Az egyes rudakhoz mint veremhez tudunk hozzáférni A rekurzív hívások szintén egy verem segítségével hajtódnak végre] A veremautomatának több definíciója is ismert Push-down automaton/recognizer (PDA, PDR): az új infót a régi tetejére írjuk, a régi lenyomódik, csak a legfelső adatot lehet kiolvasni ekkor ki is vesszük (Ezt az automatát tanuljuk) Stack automaton (SA): az új infót itt is a régi tetejére írjuk, de kivétel nélkül lehet olvasni belőle, és nemcsak a verem tetejéről (Nem ezt az automatát tanuljuk; ennek jelentősége kisebb) 5

Logikai felépítés Veremmemória: pozíciókra felosztott, egyirányban elvileg végtelen szalag Minden pozícióba egy-egy jel írható A kiolvasás (amely a fő típusnál egyúttal törlés is) a bevitelhez képest fordított sorrendben történik (LIFO: Last In First Out) A belső tartalomhoz közvetlenül nem férünk hozzá, mindig csak a verem tetején levő elemet tudjuk kiolvasni Szintén a verem tetejére helyezhetünk el újabb elemet A verem alján kezdetben csak egy speciális szimbólum van (kezdőszimbólum, Z,, v. Z 0 ) Elvileg végtelen: gyakorlatilag valójában véges, de nem korlátos A vermet vízszintes vagy függőleges elrendezésűnek is képzelhetjük Input szalag: ezen kapja meg az automata a véges bemenő szót Ezt betűnként tudja leolvasni Az input szalag lehet üres is (λ szó) Véges, iniciális nemdeterminisztikus (vagy esetleg determinisztikus (kimenő jel nélküli) automata Ez a veremautomata véges vezérlője Diszkrét időskálát követve történik a működés 6

Formális nyelvek Definíció: (Nemdet.) veremautomatának (push-down automatának, PDA, PDR, VA) nevezzük az R = (Q, Ʃ, Γ, δ, q 0, Z 0, F) rendszert, ahol Q egy nem üres, véges halmaz, az állapotok halmaza, Ʃ az input ábécé (szalag ábécé), Γ a veremábécé, q 0 Q a kezdőállapot, Z 0 Γ a verem kezdőszimbólum (kezdőjel), F Q a végállapotok halmaza, δ : Q (Ʃ {λ}) Γ P(Q Γ*) az átmenetfüggvény (mozgási szabályok halmaza) Megjegyzések Valamennyi fenti halmaz véges, hiszen egyébként nem lehetne véges módon leírni a nyelvet Ʃ helyett T, Γ helyett Z, δ helyett d jelölés is használatos; az R = (Q, T, Z, q 0, Z 0, δ, F) megadás is szokásos A végállapot halmaz az üres vermes felismerő automatánál kiesik (!) (lásd később) A VA alapvetően (további korlátozások nélkül) nemdeterminisztikus Ha a veremautomata következő állapota az előző állapotból és a bemenő jelből egyértelműen meghatározott, akkor determinisztikus VA-ról beszélünk Definíció: A fenti R = (Q, T, Γ, δ, q 0, Z 0, F) rendszert determinisztikus veremautomatának nevezzük, ha - minden p Q és X Γ esetén fennáll, hogy δ(p, a, X) 1, minden a (T {λ})-ra, - továbbá ha δ(p, λ, X) = 1, akkor δ(p, a, X) = 0, minden a T-re. Azaz nem lehet nem üres szavas átmenet értelmezve olyan állapot és veremszimbólum párra, amire van értelmezve üres szavas átmenet; és minden szimb. hármasra maximum egyféle átmenet van értelmezve 7

Formális nyelvek (Eml.: tisztázandó megadás, működés, elfogadás, grafikus reprezentáció) A működés kezdetén A veremben csak a kezdő veremszimbólum van Az input szalag olvasófeje a szalag első betűjére mutat Ha a szalagon csak az üres szó van, akkor ezt érzékeli A (veremautomatához tartozó) véges automata a kezdő állapotában van A mozgás során Új állapotba kerülünk (ez a régivel megegyező is lehet), Az olvasófej egy szimbólummal továbblép (kivéve, ha az input λ) A verem tetejére új jelsorozat íródik be A verem tetején eddig levő szimbólum megsemmisül (ha meg akarjuk tartani: vissza kell írni a verembe) Az átmenet folyamata (a δ függvény működése) Tetszőleges q Q állapot, a (Ʃ {λ}) input és a verem tetején lévő Z Γ szimbólum esetén legyen δ (q, a, Z) = {(q 1, α 1 ), (q 2, α 2 ),, (q n, α n )}, valamilyen n 0-ra, q 1, q 2,, q n Q állapotokkal és α 1, α 2,, α n Γ* veremszimbólum-sorozatokkal. (n = 0 eset: a képhalmaz üres.) Az automata a q állapotból az a input hatására (ez lehet λ is) átmegy valamelyik q i állapotba, a verem tetején levő Z-t törli, és beírja a verembe α i -t (ha ez λ, akkor nem ír be semmit, ekkor a veremben eggyel kevesebb szimbólum marad). Veremautomata belső állapota: egy pár, ami a véges automata belső állapotát és a verem tartalmát tartalmazza Mivel a veremmemória elvileg végtelen, ezért végtelen sok belső veremautomata-állapot lehetséges 8

Példák Nemdeterminisztikus veremautomata konstrukció, nyelvtan alapján A szabályok és a nyelv: S asb ab, L = {a i b i i 1} Három állapot, egy kezdő, egy általános- és egy végállapot A veremábécé: N T {Z 0 } Címke az éleken: input, veremből, verembe Írjuk le a megfelelő átmeneteket, pl.: δ(q 0, λ, Z 0 ) = (q 1, SZ 0 ) Mutassuk be, hogy az automata valóban nemdeterminisztikus! Kövessük le az automatán az aabb szó végigolvasását! Mutassuk be közben a verem tartalmát is! Determinisztikus veremautomata konstrukció A korábban már leírt működést valósítja meg A nyelv ugyanaz, mint fent Veremábécé és címkék: mint fent Írjuk le a megfelelő átmeneteket, pl.: δ(q 0, a, Z 0 ) = (q 1, az 0 ) Mutassuk be, hogy az automata valóban determinisztikus! Kövessük le az automatán az aabb szó végigolvasását! Mutassuk be közben a verem tartalmát is! 9

Az automata működésének rajzos bemutatása (már nagyrészt tudjuk) Ábrázolnunk kell az állapotokat (átmenetekkel); az inputot, ill. a verem tartalmát (+ veremből, verembe) Lehetőségek A véges elfogadó automata jelölései nyilván megtarthatók (kezdő- és végállapot) Mint a véges elfogadó automatáknál, csak az állapotok mellett feltüntetjük az inputot és a verem tartalmát (és a veremből kivételt ill. oda berakást) Valamilyen időrend vagy több ábra kell Az egyes állapotokat kiragadva ábrázoljuk, mellettük bemutatva az inputot HF: Nézzünk meg néhány különböző megoldást! F. Z. (címlap) D. P. 159. (B. I.) B. Z. JFLAP Butterfly *Tudunk jobb megoldást találni? 10

Definíció: A C = Q Ʃ* Γ* halmazt az R konfigurációi halmazának nevezzük Megj.: Ʃ* Q Γ* megadás is használatos Egy (q, w, γ) C konfiguráció jelentése az, hogy R a q állapotban van, w Ʃ* input szót kapja (még fel nem dolgozott input rész), és vermének tartalma γ Az input szó feldolgozása: egy lépésben egy betűt, vagy λ-t olvas be (ekkor nincs a szóban továbblépés) Ha γ = Z 1 Z 2 Z n, akkor a veremnek n cellája van kihasználva ( cellában egy szimbólum lehet), és Z 1 áll a verem tetején A konfigurációnál a következő input szimbólum és a verem tetején álló szimbólum is feltüntethető, ekkor (q, aw, Zγ) írandó Átmeneti reláció: a konfigurációk közti átmenetet írja le Ezek Descartes-szorzatán értelmezett Egy konfigurációból az automata egy vagy több másik konfigurációba léphet tovább (δ alapján) Definíció: A 1 R C C átmeneti relációt a következőképpen definiáljuk tetszőleges p, q Q, a (Ʃ {λ}), w Ʃ*, Z Γ és α, γ Γ*-ra (q, aw, Zγ) 1 R (p, w, αγ) akkor és csak akkor áll fent, ha (p, α) δ (q, a, Z) Az a = λ esetben az inputban nincs előrehaladás, ekkor az automata λ-mozgást végez Részletezve: (q, aw 1 w 2 w n, Zγ 1 γ 2 γ n ) 1 R (p, w 1 w 2 w n, αγ 1 γ 2 γ n ) Megjegyzés Ha nem akarjuk hangsúlyozni az automata nevét, akkor 1 írható (1 helyett használható a w jelölés is) Konfigurációk sorozata Mint korábban: bevezetjük 1*-ot (a reláció reflexív, tranzitív lezártja) Értelmezhető 1 n is: k 0 1 k 1 1 k 2 1 1 k n 11

Felismert nyelv Egy veremautomata kétféleképpen ismerhet fel egy nyelvet: végállapotokkal vagy üres veremmel Ha a véges automata (a veremautomata véges vezérlője) a teljes input elolvasásával eljut egy végállapotba, akkor a veremautomata megáll Az input az üresszó is lehet Ekkor a veremautomata az input szót elfogadta (elfogadás végállapottal) A veremautomata akkor is megáll, ha a véges automata olyan állapotban van, amelyhez nem tartozik egyetlen alkalmas átmenet sem Nincs lehetséges átmenet a verem tetején levő jel figyelembe vételével és az input olvasásával a véges automatában Az elfogadás feltételét köthetjük a verem üres voltához is (Motiváció: Rekurzív programok esetében úgy tartjuk helyesen befejezettnek a program működését, ha kiürül a verem) Elfogadó állapotok ez esetben nem is kellenek, pusztán a mozgási szabályok megadása is teljesen specifikálja az automatát A ND veremautomata egy input szót elfogad, ha van olyan futása, hogy a bemenő szót elfogadja (emellett lehet persze olyan is, amellyel nem) Az elfogadott szavak összessége alkotja a veremautomata által elfogadott nyelvet 12

Felismert nyelv Definíció: A P veremautomata által végállapotokkal felismert nyelven az L f (P) = {w Ʃ* (q 0, w, Z 0 ) 1* (q, λ, γ), ahol q F és γ Γ*} nyelvet értjük Tehát: végállapotokkal P azon w input szavakat ismeri fel, amelyek hatására a q 0 kezdőállapotból a verem kezdeti Z 0 tartalma mellett az automata valamely q végállapotba kerül. A veremben végül maradhat valamilyen γ tartalom. (B. I.): Azon w szavak a nyelv mondatai, amelyek a kezdőállapottal és a verem kezdeti tartalmával olyan konfigurációt alkotnak, amelyből tetsz. számú lépésben elérhető egy olyan konf., ahol már nincs olvasásra váró jelsorozat, és az állapot elfogadó. A verem tartalma érdektelen. (V. M.): w benne van a felismert nyelvben, ha létezik olyan konfigurációsorozat, amelynek első eleme (q 0, w, Z 0 ), utolsó eleme (q, λ, γ), ahol q F és γ Γ*, és a sorozatban (az utolsót kivéve) minden konfiguráció átvihető a következőbe Definíció: A P veremautomata által üres veremmel felismert nyelven az L e (P) = {w Ʃ* (q 0, w, Z 0 )1* (q, λ, λ), ahol q Q} nyelvet értjük Tehát: üres veremmel P azon w input szavakat ismeri fel, amelyek hatására a q 0 kezdőállapotból a verem kezdeti Z 0 tartalma mellett P verme kiürül F-nek ilyenkor nincs szerepe (akár el is hagyható a definícióban) közömbös, hogy a folyamat végén elfogadó állapotban vagyunk-e Az üres veremmel elfogadó automatának is végig kell olvasnia a jelsorozatot! Egy konkrét veremautomata esetén a végállapottal, ill. az üres veremmel elfogadott nyelvek (nagyon) különbözhetnek egymástól fontos rögzíteni, hogy milyen módon akarjuk használni az automatát (!) 13

Példa (determinisztikus veremautomata; végállapottal és üres veremmel is elfogad) (9. slide, F. Z. 46., D. P. 170.) (Eml.: δ : Q (Ʃ {λ}) Γ P(Q Γ*) az átmenetfüggvény C = Q Ʃ* Γ* a konfigurációs halmaz) Leírása és működése R = (Q, Ʃ, Γ, δ, q 0, Z 0, F), ahol Q = {q 0, q 1, q 2 }, Ʃ = (a, b), Γ = (a, Z 0 ), F = {q 0 } δ(q 0, a, Z 0 ) = (q 1, az 0 ) (első a) δ(q 1, a, a) = (q 1, aa) (többi a) δ(q 1, b, a) = (q 2,λ) (első b) δ(q 2, b, a) = (q 2,λ) (többi b) δ(q 2, λ, Z 0 ) = (q 0,λ) (vége) Elemzendő mondat: aabb A konfigurációk sorozata (a működés egyszerűen követhető): (q 0, aabb, Z 0 ) 1 (q 1, abb, az 0 )1(q 1, bb, aaz 0 )1(q 2, b, az 0 ) 1 1(q 2, λ, Z 0 )1(q 0, λ, λ) Elemzendő mondat: abb Feladat: Mutassuk meg, hogy abb L f (R) A (q 0, b, λ) konfigurációból nem lehet továbbmenni Igazolható (pl. indukcióval), hogy L f (R) = {a n b n n 0} Itt: L f (R) L e (R), hiszen L e (R) = {a n b n n 1}, azaz L e (R) = L f (R) {λ} Ennek ellenére a két nyelvosztály közötti kapcsolat általánosan is nagyon szoros (ld. köv. slide) 14

Tétel: A veremautomatákkal végállapotokkal felismerhető nyelvek osztálya megegyezik a veremautomatákkal üres veremmel felismerhető nyelvek osztályával Bizonyítás (F. Z.) a) Legyen P = (Q, Ʃ, Γ, δ, q 0, Z 0, F) egy veremautomata végállapotokkal. Megmutatjuk, hogy ekkor megadható egy P' = (Q', Ʃ, Γ', δ', q 0 ', Z 0 ', F') veremautomata üres veremmel, amelyre L f (P) = L e (P'). (Ötlet: Az új P automata első lépésében átmegy a szimulálandó automata kezdőállapotának megfelelő állapotba, eközben a verembe P kezdő veremszimbólumát írja a saját kezdő veremszimbóluma fölé. Ezután az új automata P futását szimulálja, amíg az egy végállapotba jut, vagy el nem akad. Ha P egy végállapotba jutna, akkor az új P' automata átmegy egy új (vég)állapotba input olvasása nélkül, és kiüríti a verem tartalmát.) Definiáljuk P'-t úgy, hogy Q' = Q {q 0 ', q e }, ahol q 0 ' és q e új állapotok (új kezdő és új (vég)állapot) Γ' = Γ {Z 0 '}, ahol Z 0 ' egy új szimbólum (kezdő veremszimbólum) F' = (választható lenne Q' tetszőleges részhalmazának, de logikusabb) δ' az alábbi módon meghatározott: (i) δ' (q 0 ', λ, Z 0 ') = (q 0, Z 0 Z 0 ') (inicializálás) (ii) minden q Q és a (Ʃ {λ}), Z Γ esetén δ' (q, a, Z) = δ(q, a, Z) (ha a λvagy q F; szimuláció) = δ(q, a, Z) {(q e, λ)} (ha a =λés q F; szimuláció) (iii) minden Z Γ'-re δ'(q e, λ, Z) = (q e, λ) (végül: verem ürítése) 15

(Tétel: A veremautomatákkal végállapotokkal felismerhető nyelvek osztálya megegyezik a veremautomatákkal üres veremmel felismerhető nyelvek osztályával) Bizonyítás (folyt.) a) (folyt.) (Eml. δ' az alábbi módon meghatározott: (i) δ' (q 0 ', λ, Z 0 ') = (q 0, Z 0 Z 0 ') (inicializálás) (ii) minden q Q és a (Ʃ {λ}), Z Γ esetén δ' (q, a, Z) = δ(q, a, Z) (ha a λvagy q F; szimuláció) = δ(q, a, Z) {(q e, λ)} (ha a =λés q F; szimuláció) (iii) minden Z Γ'-re δ' (q e, λ, Z) = (q e, λ) (végül: verem ürítése)) Az L f (P) = L e (P ) igazolása: w L f (P) (q 0, w, Z 0 ) 1* P (q, λ, γ), ahol q F (q 0 ', w, Z 0 ') 1 P' (q 0, w, Z 0 Z 0 ') (definícióból) ((i) miatt) 1* P' (q, λ, γz 0 '), ahol q F ((ii) miatt; a veremben maradhat még tartalom) = (q, λ, Z 1 Z 2 Z k Z 0 ') (itt γ = Z 1 Z 2 Z k ) 1 P' (q e, λ, Z 2 Z 3 Z k Z 0 ') ((ii) miatt) 1* P' (q e, λ, λ) ((iii) miatt; itt és előbb: input olvasás nélkül ürítjük a vermet) w L e (P'). (definícióból) 16

Tétel: A VA-kal végállapotokkal felismerhető nyelvek osztálya megegyezik Bizonyítás (folyt.) b) Legyen P = (Q, Ʃ, Γ, δ, q 0, Z 0, ) egy VA üres veremmel. Megmutatjuk, hogy ekkor megadható egy P' = (Q', Ʃ, Γ', δ', q 0 ', Z 0 ', F') VA végállapotokkal, amelyre L f (P') = L e (P). (Ötlet: Inicializálás mint előbb. Ezután az új automata P futását szimulálja, amíg annak verme ki nem ürül (a saját kezdő veremszimbólum persze benne marad), vagy el nem akad. Ha a szimulálandó verem kiürült, akkor az új P' automata átmegy egy új végállapotba.) Definiáljuk P'-t úgy, hogy Q' = Q {q 0 ', q f }, ahol q 0 ' és q f új állapotok (új kezdőállapot és új elfogadó végállapot) Γ' = Γ {Z 0 '}, ahol Z 0 ' egy új szimbólum (kezdő veremszimbólum) F' = {q f } δ' az alábbi módon meghatározott: (i) δ' (q 0 ', λ, Z 0 ') = (q 0, Z 0 Z 0 ') (inicializálás) (ii) minden q Q és a (Ʃ {λ}), Z Γ esetén δ' (q, a, Z) = δ(q, a, Z) (szimuláció) (iii) minden q Q esetén δ' (q, λ, Z 0 ') = (q f, λ) (végül: elfogadás) Az L e (P) = L f (P') igazolása: w L e (P) (q 0, w, Z 0 ) 1* P (q, λ, λ), ahol q Q (definícióból) (q 0 ', w, Z 0 ') 1 P' (q 0, w, Z 0 Z 0 ') ((i) miatt) 1* P' (q, λ, Z 0 '), ahol q Q ((ii) miatt) 1 P' (q f, λ, λ) ((iii) miatt) w L f (P'). (definícióból) Ezek után beszélhetünk egyszerűen csak a veremautomatákkal felismerhető nyelvek osztályáról Függetlenül attól, hogy a felismerés végállapottal vagy üres veremmel történik-e 17

Átalakító algoritmus (üres veremmel felismerő végállapottal felismerő) (B. Z.) Az eredeti automata: M 1 = (Q 1, Ʃ, Γ, δ 1, q 0, z) Az új automata: M 2 = (Q 2, Ʃ, Γ {x}, δ 2, p 0, x, F) Példa: üres veremmel felismerő veremautomata átalakítása, L e (M 1 ) = {0 n 1 n n 1} M 1 kezdőszimbóluma: z, M 2 kezdőszimbóluma: t Az új automata egyik átmenete elhagyható. Melyik? 18

Átalakító algoritmus (végállapottal felismerő üres veremmel felismerő) (B. Z.) Az eredeti automata: M 1 = (Q 1, Ʃ, Γ, δ 1, q 0, z, F) Az új automata: M 2 = (Q 2, Ʃ, Γ {x}, δ 2, p 0, x) Példa: végállapottal felismerő veremautomata átalakítása, L f (M 1 ) = {0 n 1 n n 1} M 1 kezdőszimbóluma: z, M 2 kezdőszimbóluma: t Az első automata végállapottal és egyben üres veremmel ismer fel, ezért az átalakítás nem is lett volna szükséges 19

Feladatok Készítsünk olyan veremautomatát, amely az L = {a n b n+2 n > 0} nyelvet ismeri fel! Ötlet (eml.): az a n b n szavakat felismerő automatánál úgy dolgoztunk, hogy a kezdőállapotból az első a olvasására átmentünk q 1 -be, további a-k olvasásánál q 1 -ben maradtunk, és minden olvasáskor a-t írtunk pluszban a verembe. Az első b olvasásánál átmentünk q 2 -be, a további b-k olvasásánál q 2 -ben maradtunk, és minden olvasáskor a-t olvastunk a veremből. Ugyanezt az ötletet alkalmazzuk most is, csak a végén még két további b beolvasását biztosítani kell. Ehhez új állapotokat vetünk be, q 3 és q 4 is egy-egy b beolvasása után érhető el (a verem ekkor már nincs felhasználva), az utolsó állapot elfogadó. Az átmenetek: δ(q 0, a, Z 0 ) = (q 1, az 0 ), δ(q 1, a, a) = (q 1, aa) % a-k δ(q 1, b, a) = (q 2,λ) δ(q 2, b, a) = (q 2,λ) % normál b-k δ(q 2, b, Z 0 ) = (q 3, Z 0 ) δ(q 3, b, Z 0 ) = (q 4, Z 0 ) % extra b-k Itt q 4 elfogadó állapot Mutassuk be az automata működését az aabbbb szóra! 20

Feladatok Készítsünk olyan veremautomatát, amely az L = {a n b m 0 n m 2n} nyelvet ismeri fel! Ötlet: Az automata az a n b n szavakat felismerő automata módosításával áll elő. A kiindulás tehát ugyanaz, mint az előbb, csak az első és a további a-k olvasása tér el a prototípustól. Nemdeterminisztikusan egy vagy két a-t írhatunk a verembe minden ilyen esetben. (D. P. 171.) Készítsünk olyan üres veremmel elfogadó veremautomatát, amely az {a, b} ábécé feletti helyes zárójelek nyelvét (a Dyck-nyelvet) ismeri fel! (Itt a a nyitó, b a záró zárójel; az a betűk párban meg kell, hogy előzzék a b betűket) Megoldás (csak egy állapot kell): Ha a betűt olvasunk a szalagon, akkor a verembe írjuk Ha b betűt olvasunk a szalagon, akkor törlünk egy a-t Ha Z 0 -t olvasunk a veremből, akkor kiüríthetjük a vermet (elfogadás), vagy folytathatjuk a olvasásával is (a szalagról, ekkor Z 0 visszaírandó a verembe) (D. P. 174.) Rajzoljuk is le az automatákat, és néhány tesztszóval ellenőrizzük, hogy valóban jó lett a megoldásunk! 21

Feladatok Készítsünk olyan veremautomatát, amely az L = { w w a = w b } nyelvet ismeri fel (szavak, amelyekben az a és b betűk száma megegyezik)! Megoldási ötlet: A veremben csak egyféle Z 0 -tól eltérő szimbólum lehet Ha csak Z 0 van a veremben: ugyanannyi a és b betűt olvastunk be eddig Ha k darab a betű van Z 0 felett: eddig k-val több a-t olvastunk be Ha k darab b betű van Z 0 felett: eddig k-val több b-t olvastunk be Az automata működése: Ha a veremben csak Z 0 van, akkor a szalagról olvasott jelet tegyük a verem tetejére Ha a verem tetején levő és a beolvasott jel egyforma, akkor ezek számát a veremben növeljük eggyel Ha a verem tetején levő és a beolvasott jel eltérő, akkor a veremben levő jelek számát eggyel csökkentjük Ha a veremben csak Z 0 van, akkor veremürítés, és átmegyünk végállapotba (rajz: D. P. 172.) Külön köszönet: a hivatkozott jegyzetek szerzőinek 22