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



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

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

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:

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

Chomsky-féle hierarchia

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

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

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

ZH feladatok megoldásai

Formális nyelvek - 9.

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

Chomsky-féle hierarchia

Automaták és formális nyelvek

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

Véges automaták, reguláris nyelvek

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

Atomataelmélet: A Rabin Scott-automata

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

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

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

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

Házi feladatok megoldása. Nyelvtani transzformációk. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 6. gyakorlat.

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!

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

A SZÁMÍTÁSTUDOMÁNY ALAPJAI

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

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

MintaFeladatok 2.ZH Megoldások

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.

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

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

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Algoritmuselmélet 12. előadás

A Számítástudomány alapjai

Formális nyelvek - 5.

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

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat

Feladatok: 1. Add meg a következ balreguláris nyelvtannak megfelel jobbreguláris nyelvtant!

MintaFeladatok 2.ZH Megoldások

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

Teljes visszalépéses elemzés

Formális nyelvek és automaták

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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

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

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

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

NP-teljesség röviden

Csempe átíró nyelvtanok

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

KOVÁCS BÉLA, MATEMATIKA I.

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2. estis képzés

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

Diszkrét matematika 2.C szakirány

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

Fogalomtár a Formális nyelvek és

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.

A valós számok halmaza

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

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

Kiterjesztések sek szemantikája

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

KOVÁCS BÉLA, MATEMATIKA I.

2. Ítéletkalkulus szintaxisa

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

KOVÁCS BÉLA, MATEMATIKA I.

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

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

Alap fatranszformátorok II

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

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Időzített átmeneti rendszerek

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

KOVÁCS BÉLA, MATEMATIKA I.

Formális nyelvek és automaták

Diszkrét matematika 2.C szakirány

Formális Nyelvek - 1. Előadás

Analízis I. Vizsgatételsor

Diszkrét matematika 1. estis képzés

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés

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

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

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Formális Nyelvek és Automaták v1.9

Leképezések. Leképezések tulajdonságai. Számosságok.

Következik, hogy B-nek minden prímosztója 4k + 1 alakú, de akkor B maga is 4k + 1 alakú, s ez ellentmondás.

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek és algoritmusok

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a

A következő feladat célja az, hogy egyszerű módon konstruáljunk Poisson folyamatokat.

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Halmazelméleti alapfogalmak

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

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

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

Átírás:

6. előadás Környezetfüggetlen nyelvtanok/1. Dr. Kallós Gábor 2013 2014 1 Tartalom Bevezetés CF nyelv példák Nyelvek és nyelvtanok egy- és többértelműsége Bal- és jobboldali levezetések Levezetési fák A fák magassága és határa A derivációk és a levezetési fák kapcsolata 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

Bevezetés, példa Eml.: környezetfüggetlen (CF) nyelvtan: 2-típusú, csak A α alakú levezetési szabályai lehetnek A helyettesítési szabály a környezettől függetlenül bárhol alkalmazható Itt nagyobb a szabadság a helyettesítési szabályoknál, mint a reguláris nyelveket generáló nyelvtanoknál Ez viszont több olyan problémát is felvet, amivel eddig még nem találkoztunk Példa Legyen G ar = (N, T, P, S), ahol N = {E, T, F} T = {+, *, (, ), a} S = E P = {E E + T T, T T *F F, F (E) a} Megj.: Itt megszegtük a korábbi konvenciót a nemterminális és terminális jelek használatáról, de ez szándékos, a szimbólumoknak itt fontos szerepük van, ezek kellenek (E expression, T term, F factor; az a pedig egy azonosító) A nyelvtan egy additív és egy multiplikatív operátort tartalmazó, és a zárójelezést megengedő aritmetikai kifejezéseket generálja (van precedencia) Be lehetne vezetni hasonlóan a, / és ^ műveleteket, ill. előjeleket is, egy igazi számítástechnikai nyelv aritmetikai kifejezéseket generáló CF nyelvtana tartalmazza ezeket is (de a mi céljainkra most ez kissé szegényes nyelv is elég) 3 CF nyelv példa Példa (folyt.) (Eml.: P = {E E + T T, T T *F F, F (E) a}) A nyelvnek eleme az a + a*a jelsorozat, hiszen egy levezetése E E+ T T+ T F+ T a + T a + T*F a + F*F a + a*f a + a*a De a kifejezést másként is le lehet vezetni E E+ T E + T*F E + T*a E + F*a E + a*a T + a*a F + a*a a + a*a Okoz-e a több levezetés megléte zavart? A levezetéseket egy rendezett, irányított gráffal (fával) ábrázoljuk A fa gyökere a mondatszimbólum Minden csomópontból annyi él (olyan sorrendben) fut ki, amennyi a szabály jobboldalán található szimbólumok száma, és a kifutó élek végén a jobboldal megfelelő szimbólumai találhatók Az egy csomópontból kiinduló élek sorrendje kötött, nem változtatható meg Minden levezetésnek egy levezetési fa felel meg, de egy levezetési fához több levezetés is tartozhat (!) Ha egy kifejezéshez pontosan egy levezetési fa tartozik, akkor a nyelvtant egyértelműnek mondjuk Nevezetes levezetések: mindig a legbaloldalibb nemterminális szimbólumot helyettesítjük (bal (oldali) levezetés); hasonlóan jobb (oldali) levezetés (lásd fent) 4

CF nyelv példa, elemzés Megjegyzések Vigyázat, a levezetési fa nem a nyelvtanhoz tartozik egyértelműen, hanem a levezetéshez! (Egy nyelvtannak sok levezetési fája van/lehet) Az egyes csomópontokhoz tartozó részfákat (a leveleket is) szintaktikai egységeknek nevezzük Példa (folyt.) (Eml.: P = {E E + T T, T T *F F, F (E) a}) Most módosítjuk a nyelvtant, legyen P = {E E + E E *E (E) a} Ez a nyelvtan (G ar2 ) ugyanazt a nyelvet generálja, mint fenti párja Két különböző levezetés az a + a*a jelsorozatra E E+ E E + E*E a + E*E a + a*e a + a*a E E*E E*a E + E*a E + a*a a + a*a Itt azonban két különböző levezetési fa adható meg! A két levezetés tehát lényegesen eltérő 5 Egy- és többértelműség A természetes nyelvekre nagyon jellemző a többértelműség/többalakúság Például: Láttam Zsókát egy távcsővel, lehet Zsóka vitt egy távcsövet, és én láttam Én néztem Zsókát távcsővel messziről Itt a szövegkörnyezet vagy a beszédhelyzet segít eldönteni a helyes jelentést A fordítóprogramoktól ilyet nem nagyon várhatunk Egyszerű példák, amikor a Word helyesírás-ellenőrzője nem jelez: Be nem fejezet, fejezett Jelenjen megy, meg Nem sok szó eset, esett Feladatok Mutassuk meg, hogy a G 2 = ({S}, {2, +, *}, {S S + S, S S*S, S 2}, S) nyelvtanban a 2 + 2*2 szónak két lényegesen különböző levezetése és két levezetési fája van! Milyen eredményt ad a kifejezésre ezekben az esetekben a fordító? A csellengő else probléma (nem egyértelmű, hogy az else melyik feltételehez tartozik): if a then if b then do else print Milyen megoldásokat kínálnak erre a problémára az általunk használt programozási nyelvek? 6

Egy- és többértelműség Ha pusztán csak azt vizsgálnánk, hogy generálható-e valamely jelsorozat egy adott nyelvtannal, akkor az eredeti és a módosított nyelvtan egyenértékű (lenne) De a számítástechnikai nyelvészet szempontjából nem közömbös, hogy milyen szintaktikai egységeken keresztül jutottunk el a levezetés során a mondathoz (!) Utolsó példáinkban (G ar2 és G 2 ) nagyon fontos lenne tudni, hogy melyik műveletet kell előbb elvégezni, az összeadást vagy a szorzást! A számítástechnikai nyelvészetben (automatizált működés) a nem egyértelmű nyelvtanok lényegében használhatatlanok G ar2 -nél az egy- és többértelműséget nyelvtanhoz, és nem a nyelvhez kapcsoltuk Vajon mindig ez a helyzet, vagy lehet a többértelműség nyelvi tulajdonság? Vá.: Léteznek olyan nyelvek, amelyekről bizonyítható, hogy nem lehet egyértelmű nyelvtannal generálni Ekkor a többértelműség nyelvi tulajdonság (azaz: nincs minden CF nyelvnek egyértelmű nyelvtana) Tehát: az egy- és többértelműség tartozhat nyelvhez és nyelvtanhoz is Példa (nem egyértelmű nyelv; csak a helyettesítési szabályokat soroljuk): S aabx YbCc A aab ab C bcc bc X cx c Y ay a Ez a nyelvtan az L = a i b i c j a j b i c i nyelvet generálja Ezzel a nyelvtannal az a i b i c i alakú kifejezések két lényegesen különböző levezetéssel állíthatók elő Igazolható, hogy nincs olyan egyértelmű CF nyelvtan, ami ezt a nyelvet generálja 7 Egy- és többértelműség Az egyértelműség eldöntése: Sajnos nincs olyan módszer, amelynek segítségével általánosan, minden esetre alkalmazhatóan meg lehetne mondani, hogy egy CF nyelvtan vagy nyelv egyértelmű-e Persze ettől még sok konkrét esetben a probléma megoldható (egyedi tulajdonságok vagy szerencsés ötletek felhasználásával) Például a G ar nyelvtan egyértelműsége igazolható Visszatekintés: Felmerül-e egyáltalán az egyértelműség/többértelműség kérdése a reguláris nyelveknél? Itt a levezetési fa nagyon egyszerű, csupán egy szárból áll, amelynek jobb- ill. baloldalán vannak levelek attól függően, hogy bal- vagy jobbreguláris nyelvtanról van-e szó Egy levezetési fához itt csak egy levezetés tartozik, ami abból nyilvánvaló, hogy minden mondatszerű formában csak egyetlen nemterminális szimbólum szerepel (Nemdeterminisztikus automaták mintájára lehet: nemdet. nyelvtan, ekkor egy kifejezésnek több, lényegesen eltérő levezetése van; de: minden reguláris, nemdet. nyelvtanhoz szerkeszthető vele egyenértékű, determinisztikus nyelvtan automatákkal) Tehát: Minden reguláris nyelv egyértelmű, és szerkeszthető hozzá egyértelmű nyelvtan 8

Bal- és jobboldali levezetések Legyen G = (N, T, P, S) egy tetszőleges környezetfüggetlen nyelvtan Definíciók Az α 0 α 1 α 2 α n alakú kifejezéseket levezetéseknek (derivációknak) hívjuk Ha a deriváció során minden i = 1, 2,, n esetén α i -t úgy kapjuk, hogy α i 1 -ben a bal oldalról nézve legelső nemterminálist helyettesítjük egy rá vonatkozó szabály jobb oldalával, akkor a derivációt bal (oldali) derivációnak hívjuk, és rá az α 0 l α 1 l α 2 l l α n jelölést használjuk. Ha egy deriváció minden lépésében a jobbról nézve legelső nemterminálist helyettesítjük, akkor jobb (oldali) derivációról beszélünk, ennek jelölése α 0 r α 1 r α 2 r r α n. Továbbá, ha α olyan, hogy S * α, akkor α-t mondatformának nevezzük Hasonlóan, ha S l * α (ill. S r * α) áll fent, akkor α-t bal (ill. jobb) mondatformának nevezzük Megj.: Minden mondatforma egy speciális (N T)*-beli szó (lásd még: 1. slidesor.) Feladat: Nézzük meg az előző fóliákon, hogy melyik levezetés milyen típusú, ill. milyen mondatformát állít elő! Vigyázzunk arra, hogy a bal oldalról első, második, szabály következetes alkalmazása általában nem eredményez bal (oldali) levezetést A CF nyelvek (nyelvtanok) fontos tulajdonsága, hogy a levezetések fa alakban ábrázolhatók Ez népszerűségükben is központi szerepet játszik 9 Levezetési fák Definíció Legyen X (N T). Az X gyökerű derivációs fák halmazán címkézett, rendezett fák legszűkebb olyan D X halmazát értjük, amelyre teljesülnek az alábbi feltételek: Az a fa, amelynek egyetlen szögpontja (csak gyökere) van, és annak címkéje X, eleme D X - nek (ezt a fát X-szel jelöljük) Ha X λ P, akkor az a fa, amelynek gyökere X-szel van címkézve, és gyökerének egyetlen leszármazottja van, aminek címkéje λ, eleme D X -nek (ezt a fát X[λ]-val jelöljük) Ha X X 1 X 2 X n P és t 1 D X1, t 2 D X2,, t n D Xn (gyermek fák), akkor az a fa, amelynek gyökere X-szel van címkézve, és a gyökérből n él indul rendre a t 1, t 2,, t n fák gyökeréhez, eleme D X -nek (ezt a fát X[t 1, t 2,, t n ]-nel jelöljük) Ha X T, akkor a 2. és 3. feltételek soha nem teljesülnek, ekkor tehát D X = {X} Megjegyzések A derivációs fa levélelemeihez terminális vagy nemterminális szimbólumokat, közbülső csúcsaihoz pedig nemterminális jeleket rendelünk Ha minden levélelem terminális, akkor befejezett levezetésről beszélünk A levezetési fákat szintaxisfának is nevezzük (szintaktikai elemzés) Feladatok Rajzoljuk le a definícióban szereplő levezetési fákat! Rajzoljuk le a következő módon adott levezetési fákat (a G ar nyelvtanhoz): t 1 = E[T[T[F], *, F[(, E, )]]] t 2 = F[(, E[E[T[F[a]]], +, T[F[a]]], )] Rajzoljuk le ugyanezen nyelvtanhoz az a*(a + a) + a levélelemeket tartalmazó levezetési fát! (Cs. Z. 32. old.) 10

Levezetési fák Definíció Legyen t egy X gyökerű levezetési fa. A t fa magasságát h(t)-vel, határát pedig fr(t)-vel jelöljük és az alábbi módon definiáljuk: Ha t = X, akkor h(t) = 0 és fr(t) = X Ha t = X[λ], akkor h(t) = 1 és fr(t) = λ Ha t = X[t 1, t 2,, t n ], akkor h(t) = 1 + max{ h(t i ) 1 i n} és fr(t) = fr(t 1 ) fr(t 2 ) fr(t n ). Azaz: Egy t levezetési fa esetén h(t) a t-ben levő olyan utak hosszának a maximuma, amelyek t gyökerétől annak valamely leveléig vezetnek, fr(t) pedig az az (N T)*- beli szó, amelyet t leveleinek balról jobbra történő leolvasásával kapunk Megj.: h(t)-t a levezetési gráf mélységének is nevezzük Példa Az előző feladatban szereplő t 1 és t 2 fákra h(t 1 ) = 3, fr(t 1 ) = F*(E), h(t 2 ) = 5 és fr(t 2 ) = (a + a) Feladatok Határozzuk meg az előző oldalakon szereplő további levezetési fák határát és magasságát! Térjünk vissza az 1. slidesor levezetési fáira (41. old.), és ott is végezzük el ugyanezt a feladatot (2-es, 2.5-es, 3-as típusú nyelvtanok) Adjunk meg az előző példák alapján 0, 1 és 2 magasságú levezetési fákat! A levezetések és a levezetési fák közötti szoros kapcsolatot mutatja a következő tétel 11 Levezetési fák Tétel: Tetszőleges X (N T) és α (N T)* esetén X * α akkor és csak akkor áll fent, ha van olyan t D X levezetési fa, amelyre fr(t) = α Bizonyítás a) A feltétel szerint ekkor X n α teljesül valamely n 0-ra. A jobb oldal igazolása: n szerinti indukcióval. Az n = 0 esetben X = α. Itt az egyetlen szögpontú t = X fa megfelelő, mert erre t D X és fr(t) = X (= α). Legyen most n 1, és tfh. az állítás minden n-nél nem nagyobb számra teljesül. Tegyük fel továbbá, hogy X n + 1 α. Ekkor X X 1 X 2 X k n α 1 α 2 α k = α, ahol teljesülnek a következők: X X 1 X 2 X k egy P-beli szabály, és minden 1 i k esetén X i n i α i, ahol n i n (ezen felül n = n 1 + n 2 + + n k is teljesül). Mivel n i n, az indukciós feltevés miatt minden 1 i k-ra van olyan t i D X, hogy fr(t i ) = α i. Legyen t = X[t 1, t 2,, t k ]. A levezetési fa definíciója miatt t D X, a magasság és a határ definíciója miatt pedig fr(t) = fr(t 1 ) fr(t 2 ) fr(t k ) = α 1 α 2 α k = α. b) Tfh. az X gyökerű t derivációs fára teljesül, hogy fr(t) = α. A bal oldal igazolása: t magassága szerinti indukcióval. Legyen h(t) = 0. Ekkor t = X, tehát fr(t) = α = X. Így X * α (= X) teljesül. Legyen most h(t) = n + 1, és tfh. az állítás minden n-nél nem magasabb derivációs fára teljesül. A magasság és a határ definíciója miatt ekkor t = X[t 1, t 2,, t n ], valamilyen k 1-re és t 1 D X1, t 2 D X2,, t n D Xn levezetési fák esetén, és a derivációs fa definíciója miatt X X 1 X 2 X k P is teljesül. Vezessük be az α i = fr(t i ) jelölést minden 1 i k-ra. Ekkor egyrészt α = α 1 α 2 α k, másrészt az indukciós feltevés szerint minden 1 i k-ra X i * α i. Így X X 1 X 2 X k * α 1 α 2 α k = α. 12

Levezetési fák Megjegyzések Az előző tételben szereplő X * α levezetéshez általában nem csak egy olyan X gyökerű levezetési fa létezik, amelynek határa α. Példa: Legyenek az A ab Ab A a B b szabályok egy CF nyelvtan szabályai. Ekkor A * ab. Ugyanakkor a t 1 = A[a, B[b]] és t 2 = A[A[a], b] fákra fr(t 1 ) = ab és fr(t 2 ) = ab. Feladat: Rajzoljuk le ezeket a fákat! A tételben szereplő t fából az persze következik, hogy X * α fennáll, de az nem, hogy a levezetés lépései egyértelműen meghatározottak Példa: A t 1 = E[T[T[F], *, F[(, E, )]]] fa határa F*(E); ez kétféle módon is megkapható E T T*F F*F F*(E) E T T*F T*(E) F*(E) Egy derivációs fa által reprezentált levezetések egy ekvivalencia-osztályt alkotnak Mindegyikben ugyanaz a mondatforma (szó) van levezetve Az ugyanott megjelenő ugyanolyan nemterminálisra ugyanazt a szabályt alkalmazzák Ez a példákban jól látható A szabályalkalmazások sorrendje lehet különböző 13 Levezetési fák Célunk a továbbiakban: minden ekvivalencia-osztályból kiemelni egy reprezentánst, legyen ez például a legbaloldalibb levezetés (ez jó, és mindig létezik) Készen vagyunk? Ha X l * α, akkor X * α is fennáll, mivel minden bal (oldali) levezetés egyúttal levezetés is Ugyanaz érvényes a jobb (oldali) levezetésekre is De fordítva ez már nem igaz, X * α-ból nem következik, hogy X l * α is fenáll Egy legbaloldalibb levezetés persze mindig kijelölhető a fában Gond: A legbaloldalibb levezetés nem biztos, hogy tényleg bal (oldali) levezetés! (És ugyanaz persze a legjobboldalibbra is érvényes) Példa: A G ar nyelvtan esetén E * E + F + T teljesül, de E l * E + F + T és E r * E + F + T nem áll fent Feladat: Ellenőrizzük a példát! Ha csak terminális szavakat engedünk meg a levezetési fa leveleiben, akkor a kijelentés már megfordítható Azaz: teljes, befejezett fa kell! 14

Levezetési fák Állítás: Tetszőleges X (N T) és w T* esetén a következő három állítás ekvivalens: X * w X l * w X r * w Bizonyítás A bal és a jobb (oldali) levezetések között fennálló szimmetria miatt elegendő az első és a második állítás ekvivalenciáját igazolni. (Tudjuk: Ha X l * w, akkor X * w is fennáll, mivel minden bal (oldali) levezetés egyúttal levezetés is.) Fordítva, tfh. X * w. Ekkor X n w teljesül valamely n 0-ra. A másik oldal igazolása: n szerinti indukcióval. Az n = 0 esetben X = w, ami csak úgy lehet, hogy X T. Így nyilvánvaló, hogy X l * w. Tegyük fel most, hogy a következtetés teljesül minden n-nél nem nagyobb számra, és legyen X n + 1 w. Ekkor ez a deriváció felírható X X 1 X 2 X k n w 1 w 2 w k = w alakban, ahol k 1, X X 1 X 2 X k P és minden 1 i k-ra teljesül X i n i w i, ahol n i n. Így az indukciós feltevés miatt X i n l i w i is fennáll. Ekkor viszont X l X 1 X 2 X 3 X k l w 1 X 2 X 3 X k l w 1 w 2 X 3 X k l l l w 1 w 2 w 3 w k = w. A G nyelvtan által generált nyelv fogalma a jelen részben definiált fogalmak segítségével is megadható L(G) = {w T* S * w} = {w T* S l * w} = {w T* S r * w} L(G) = {fr(t) t D S, fr(t) T*} 15 Célunk a CF nyelveket felismerő automaták bevezetése Ha a véges automata definíciójában elhagyjuk az állapothalmaz végességére vonatkozó feltételt, akkor a (véges ábécéjű) végtelen automata fogalmához jutunk Így ez túl általános, ezért speciális fajtájú végtelen automatákat vezettek be Verem 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 szoftvertermék az USA-ban) Máshol is használjuk: verem, mint programozási adatszerkezet Tipikusan rekurzív programozási feladatoknál 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 16

Logikai felépítés Veremmemória: pozíciókra felosztott, egyirányban végtelen szalag Minden pozícióba egy-egy jel írható A kiolvasás (amely 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) A vermet legtöbbször függőleges elrendezésűnek képzeljük Vízszintes elrendezésnél a legelső betű a legfelső, a szalag egyik irányba végtelen 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 (kimenő jel nélküli) automata Ez a veremautomata véges vezérlője Diszkrét időskála mentén haladva történik a működés 17 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 λ szó), 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) Ha a véges automata a teljes input elolvasásával eljut egy végállapotba, akkor a veremautomata megáll Ekkor a veremautomata az input szót elfogadta (ugyanez az üresszóra is lehet) (Lehetséges elfogadás üres veremmel is, lásd később) 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 18

A nemdeterminisztikus veremautomata egy input szót elfogad, ha van olyan futása, hogy a bemenő szót elfogadja (emellett lehet persze olyan is, amellyel nem) Egy veremautomata kétféleképpen ismerhet fel egy nyelvet: végállapotokkal vagy üres veremmel Elfogadó állapotok kellenek ill. nem kellenek (lásd később) Veremautomata belső állapota: egy pár, ami a verem tartalmát és a véges automata belső állapotát tartalmazza (a veremautomata végtelen) Az elvileg végtelen (pontosan: véges, de nem korlátos) befogadóképességű veremmemória összes lehetséges tartalma eredményez végtelen sok állapotot CF nyelvet nem lehet korlátos befogadóképességű veremmemóriával elemezni (a mondat első fele nagyon hosszú lehet, lásd példák lent) A veremautomata kifejező ereje nagyobb a véges automatákénál Megj.: A veremautomatának több definíciója is ismert Push-down automaton: 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: 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) De: a stack memory a veremmemória angol neve 19 Definíció: Veremautomatának (push-down automatának) nevezzük a P = (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; a P = (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 (!) A P név a push-down automatából rövidült A δ : definíciójában szereplő P szimbólum a hatványhalmaz jelölése; (Q Γ*) részhalmazaiba képezünk A veremautomata alapvetően (további korlátozások nélkül) nemdeterminisztikus 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ólumokkal. (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). 20

Definíció: A C = Q Ʃ* Γ* halmazt a P konfigurációi halmazának nevezzük Megj.: Ʃ* Q Γ* megadás is használatos Egy (q, w, γ) C konfiguráció jelentése az, hogy P a q állapotban van, a w Ʃ* input szót kapja (még nem 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 az input szóban továbblépés) Ha γ = Z 1 Z 2 Z n, akkor a veremnek n cellája van (mindegyik cellában csak 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 a δ függvény definíciója szerint egy vagy több másik konfigurációba léphet tovább Definíció: A 1 P 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 P (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 (Ábrák: F. Z. 44.) Megjegyzések Ha nem akarjuk kihangsúlyozni az automata nevét, akkor 1 is használható A 1 operátor (reláció) helyett használható a w jelölés is 21 Konfigurációk sorozata Mint korábban: bevezetjük 1*-ot Értelmezhető 1 n is: k 0 1 k 1 1 k 2 1 1 k n Példa (determinisztikus veremautomata; végállapottal fogad el, B. I. 106.) (Eml.: δ : Q (Ʃ {λ}) Γ P(Q Γ*) az átmenetfüggvény C = Q Ʃ* Γ* a konfigurációs halmaz) Leírása és működése δ(q 0, a, Z 0 ) = (q 1, az 0 ) δ(q 0, b, Z 0 ) = (q 1, bz 0 ) δ(q 1, a, a) = (q 1, aa) δ(q 1, b, a) = (q 1, ba) δ(q 1, a, b) = (q 1, ab) δ(q 1, b, b) = (q 1, bb) δ(q 1, c, a) = (q 2, a) δ(q 1, c, b) = (q 2, b) δ(q 2, a, a) = (q 2,λ) δ(q 2, b, b) = (q 2,λ) δ(q 2, λ, Z 0 ) = (q 3, Z 0 ) F = {q 3 } Elemzendő mondat: aabacabaa Induló konfiguráció: (q 0, aabacabaa, Z 0 ) A konfigurációk sorozata: (q 0, aabacabaa, Z 0 ) 1 (q, abacabaa, az 0 ) 1 (q, bacabaa, aaz 0 ) 1 1 (q 1, acabaa, baaz 0 ) 1 (q 1, cabaa, abaaz 0 ) 1 (q 2, abaa, abaaz 0 ) 1 1 (q 2, baa, baaz 0 ) 1 (q 2, aa, aaz 0 ) 1 (q 2, a, az 0 ) 1 (q 2, λ, Z 0 ) 1 1 (q 3, λ, Z 0 ) Így az automata a jelsorozatot elfogadta, hiszen minden input szimbólumot feldolgozott, és elfogadó állapotba került Megj: Az automata a wcw 1 alakú szavakat fogadja el 22

Példa (nemdeterminisztikus veremautomata; végállapottal fogad el) Leírása és működése δ(q 0, a, Z 0 ) = (q 1, az 0 ) δ(q 0, b, Z 0 ) = (q 1, bz 0 ) δ(q 1, a, a) = (q 1, aa) (q 2,λ) δ(q 1, b, a) = (q 1, ba) δ(q 1, a, b) = (q 1, ab) δ(q 1, b, b) = (q 1, bb) (q 2,λ) δ(q 2, a, a) = (q 2,λ) δ(q 2, b, b) = (q 2,λ) δ(q 2, λ, Z 0 ) = (q 3, Z 0 ) F = {q 3 } Eltérés az előző automatától: a c szimbólum kiesik (nem látjuk, hol a szó közepe) Elemzendő mondat: abbaabba A konfigurációk sorozata (első kör): (q 0, abbaabba, Z 0 ) 1 (q 1, bbaabba, az 0 ) 1 (q 1, baabba, baz 0 ) 1 (? két választási leh.) A (q 2,λ) ágon megyünk tovább: (q 1, baabba, baz 0 ) 1 (q 2, aabba, az 0 ) 1 (q 2, abba, Z 0 ) 1 (? nincs tovább) Lehetőségek: vagy nem a nyelv mondatával dolgozunk, vagy rossz irányba indultunk el Visszatérés, és a (q, bb) ágon megyünk tovább: (q 1, baabba, baz 0 ) 1 (q 1, aabba, bbaz 0 ) 1 (q 1, abba, abbaz 0 ) 1 (? két választási leh.) A (q 1,λ) ágon megyünk tovább: (q, abba, abbaz 0 ) 1 (q 2, bba, bbaz 0 ) 1 (q 2, ba, baz 0 ) 1 (q 2, a, az 0 ) 1 1 (q 2, λ, Z 0 ) 1 (q 3, λ, Z 0 ) Az automata a jelsorozatot elfogadta, tehát ez a szó az automata nyelvének egy mondata Nemdeterminisztikus automatánál (a döntéshez) minden lehetséges mozgássorozatot meg kell nézni Megj: Az automata a ww 1 alakú szavakat fogadja el 23 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. Másként (B. I.): Azok a w jelsorozatok 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 konfiguráció, ahol már nincs olvasásra váró jelsorozat (ez az üres jelsorozat), és az állapot elfogadó. A verem tartalma érdektelen. Az elfogadás feltételét köthetjük a verem üres voltához is 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 közömbös, hogy a folyamat végén elfogadó állapotban vagyunk-e F akár a definiáló rendezett hetesből is elhagyható De: az üres veremmel elfogadó automatának is végig kell olvasnia a jelsorozatot! (Ábrák: F. Z. 45 46.) 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 (!) 24

Az automata működésének rajzos bemutatása Ábrázolnunk kell az állapotokat (átmenetekkel); az inputot, ill. a verem tartalmát Lehetőségek Mint a véges elfogadó automatáknál, csak az állapotok mellett feltüntetjük az inputot és a verem tartalmát; valamilyen időrend vagy több ábra kell Az egyes állapotokat kiragadva ábrázoljuk, mellettük bemutatva az inputot és a verem tartalmát Lásd még: D. P. 159. 25 Példa (determinisztikus veremautomata; végállapottal fogad el) Leírása és működése P = (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) (Az automata parciálisan definiált; rajz: D. P. 170.) 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 (P) A (q 0, b, λ) konfigurációból nem lehet továbbmenni (Konstruáljunk hasonló kis feladatokat az előző oldalakon szereplő automatákhoz is) Igazolható az is (pl. indukcióval), hogy L f (P) = {a n b n n 0} Itt: L f (P) L e (P), hiszen L e (P) = {a n b n n 1}, azaz L e (P) = L f (P) {λ} Ennek ellenére a két nyelvosztály közötti kapcsolat általánosan is nagyon szoros Tétel: A veremautomatákkal végállapotokkal felismerhető nyelvek osztálya megegyezik a veremautomatákkal üres veremmel felismerhető nyelvek osztályával 26