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

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

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

ZH feladatok megoldásai

Chomsky-féle hierarchia

Formális nyelvek - 9.

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

Chomsky-féle hierarchia

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

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:

Automaták mint elfogadók (akceptorok)

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

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:

Formális nyelvek - 5.

Automaták és formális nyelvek

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

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

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

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

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

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

Atomataelmélet: A Rabin Scott-automata

Véges automaták, reguláris nyelvek

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 számítógépes nyelvészet elmélete és gyakorlata. Automaták

MintaFeladatok 1.ZH Megoldások

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

MintaFeladatok 1.ZH Megoldások

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

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

A SZÁMÍTÁSTUDOMÁNY ALAPJAI

Diszkrét matematika 2.C szakirány

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

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.

Alap fatranszformátorok II

Formális nyelvek és automaták


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

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

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

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

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

Diszkrét matematika 2.

Fogalomtár a Formális nyelvek és

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

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

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

akonyv 2006/12/18 11:53 page i #1 Formális nyelvek és fordítóprogramok

KOVÁCS BÉLA, MATEMATIKA I.

Diszkrét matematika I.

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

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

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

MintaFeladatok 2.ZH Megoldások

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

Csempe átíró nyelvtanok

Diszkrét matematika I.

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.

Diszkrét matematika 2.C szakirány

Teljes visszalépéses elemzés

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

ALGEBRAI NYELV- ÉS KÓDELMÉLET. Babcsányi István

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

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

10. előadás. Konvex halmazok

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

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

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

Formális nyelvek és automaták

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

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

Nyelvek és automaták augusztus

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

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

Programozási módszertan

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

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

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

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

A2. Véges automata fogalma, nemdeterminisztikus és determinisztikus automaták ekvivalenciája.

Algoritmuselmélet 12. előadás

Elemi algebrai eszközökkel megoldható versenyfeladatok Ábrahám Gábor, Szeged

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

NP-teljesség röviden

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

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

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

A Számítástudomány alapjai

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

Diszkrét matematika 2.C szakirány

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

1. A Hilbert féle axiómarendszer

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

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

Adatbázisok elmélete 12. előadás

1. tétel - Gráfok alapfogalmai

Diszkrét matematika 2.

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Algoritmusok bonyolultsága

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

Diszkrét matematika 2.C szakirány

Átírás:

6. előadás A reguláris nyelvek jellemzése 2. Dr. Kallós Gábor 2015 2016 1 Tartalom A reguláris nyelvek osztályának jellemzése a körbebizonyítás Láncszabályok A 2. állítás és igazolása Ekvivalens 3-típusú nyelvtanok és véges elfogadó automaták Feladatok 2

Láncszabályok Eml. (cél): 2. tul. (3-típ.) 3. tul. (véges aut. felism.); ehhez át kell alakítanunk ekvivalens módon a nyelvtant! Feladat: Milyen szabályokat tud végrehajtani a véges automata? (Rajzoljunk!) (Természetesen üresszó-átmenet nélkül) Definíció: Tetszőleges G = (N, Ʃ, P, S) nyelvtan esetén az A B alakú szabályokat láncszabályoknak (nemterminális átnevezés) nevezzük. Amennyiben P-ben nincsenek láncszabályok, akkor azt mondjuk, hogy G láncszabálymentes. Intuitív ötlet: a nemterm. átnevezés nem visz közelebb a sikeresen levezetett szóhoz Segédállítás 1: Legyen G = (N, Ʃ, P, S) környezetfüggetlen (2-típusú, CF) nyelvtan. Hozzá megadható olyan G' = (N, Ʃ, P', S) láncszabálymentes CF nyelvtan, amelyre L(G) = L(G'). Továbbá, amennyiben G 3-típusú, akkor G' is 3-típusú lesz. Bizonyítás (F. Z.): Először minden A N-re meghatározzuk azon B N nemterminálisok halmazát, amelyekre A * B úgy, hogy a levezetés közben csak láncszabályokat alkalmaztunk. Jelöljük ezt a halmazt N A -val. (Itt A N A, hiszen A * A nulla darab láncszabállyal) Az N A halmazt iterációval határozzuk meg: (i) Legyen N 0 = {A} (mert A N A ), és i = 0 (ii) Legyen N i + 1 = N i {C N B N i úgy, hogy B C P} (iii) Ha N i = N i + 1, akkor legyen N A = N i, különben legyen i = i + 1, és ismételjük az (ii) pontot (A konstrukció véges sok lépés után befejeződik. Így minden elérhető nemterminálist megkapunk, tehát tényleg N A áll elő) 3 Láncszabályok Segédáll. 1 biz. folyt. (Minden CF nyelvtanhoz megadható láncszabálymentes megfelelő) Konstruáljuk meg P'-t a következő módon: P' = ; # inicializálás A N-re, # iteráció B N A -ra, B α P szabály esetén: Ha B α nem láncszabály, akkor vegyük fel az A α szabályt P'-be. Nyilvánvaló, hogy P'-ben nincsenek láncszabályok, ugyanakkor P' tartalmaz minden olyan P-beli szabályt, ami nem láncszabály. Ha G 3-típusú, akkor G' is az lesz (nem rontjuk el ). Emellett az is teljesül, hogy L(G) = L(G'), ugyanis: olyan G-beli levezetésben, ami S-ből indul ki, és term. szóban végződik, lehetnek láncszabályok. Ilyenkor egy A nemterm.ból indulunk, alkalmazunk valahány láncszabályt, elérünk egy B nemterminálist, majd egy B α szabály következik, ami nem láncszabály. (Ez a lépés végül mindenképpen bekövetkezik.) Ekkor teljesül, hogy B N A, és hogy B α P, tehát az A α szabály P'-ben van. Így G'-ben A-ból levezethető α egyetlen lépésben. Megfordítva, G'-beli levezetésben alkalmazott szabály vagy P-ben is benne van, vagy helyettesíthető P-beli láncszab.ok sorozatának és egy nem láncszabálynak az alkalmazásával. 4

Láncszabályok Megjegyzések (eml.) Az eredeti 3-típusú nyelvtan átalakítása azért szükséges, hogy jóval speciálisabb feltételek is eleget tegyen (az automata tudja majd adaptálni). Többféle ilyen megoldás is elképzelhető (B. I. és A. P. eleve spec. 3-típusú def.; D. P. gyenge és erős normálforma reguláris nyelvtanokra, lásd 17. slide). A láncszabályok kiküszöbölése tekinthető úgy is, hogy megszüntetjük (az automatánál) aλ-átmeneteket (eml.: 4. slidesor, 4. old.) Példa (a segédállításban szereplő konstrukció bemutatása) Legyen G az a 3-típusú nyelvtan, amelynek szabályai a következők: S A ab, A B ba, B bb C a, C bb. Az N S, N A, N B és N C halmazokat kiszámolva, kapjuk, hogy: N S = {S, A, B, C}, N A = {A, B, C}, N B = {B, C}, N C = {C}. Ez alapján G' szabályai a következők lesznek: S ab ba bb a bb, A ba bb a bb, B bb a bb, C bb. 5 Láncszabályok Ekvivalens algoritmus a láncszabályok kiküszöbölésére (B. Z.) (Megj.: Ez az eljárás nem képez N A, N B stb. halmazokat) Hajtsuk végre ezt az algoritmust is az előző G 3-típusú nyelvtanra: S A ab, A B ba, B bb C a, C bb. Ellenőrizzük, hogy az eredmény ugyanaz lesz, mint az előző oldalon! Melyik algoritmus gyorsabb? (Melyiket választanánk általánosan a feladat megoldására?) *Végezzünk számszerűsített hatékonysági elemzést! 6

Szabályredukció Segédállítás 2: Legyen G = (N, Ʃ, P, S) 3-típusú nyelvtan. Ekkor van olyan G' = (N', Ʃ, P', S) 3-típusú nyelvtan, amelyre L(G) = L(G'), és P'-ben minden szabály A ab vagy A λalakú, ahol A, B N és a Ʃ. (Eml. Egy 3-típusú nyelvtan szabályai N T*N vagy N T* alakúak, itt T = Ʃ; azaz: célunk most a C c 1 c n (minden n-re) és C c 1 C m, m 3 alakú szabályok törlése) Bizonyítás (F. Z.): Megkonstruáljuk P'-t az alábbiak szerint: (i) Minden A ab vagy A λalakú P-beli szabályt vegyünk fel P'-be (ii) A a 1 a 2 a n B, P-beli szabály esetén (n > 1, a 1, a 2,, a n Ʃ), vegyük fel P'-be az A a 1 A 1, A 1 a 2 A 2,, A n 1 a n B szabályokat, ahol A 1, A 2,, A n 1 új nemterminális szimbólumok (iii) A a 1 a 2 a n, P-beli szabály esetén (n 1, a 1, a 2,, a n Ʃ), vegyük fel P'-be az A a 1 A 1, A 1 a 2 A 2,, A n 1 a n A n, A n λ szabályokat, ahol A 1, A 2,, A n új nemterminálisok (Megj.: Az utolsó helyettesítés és a nemterm. bevezetése elvileg már elhagyható, triviálisan ekv. nyelvtant kapunk, ami jó az automatához; így C c n megengedhető) Legyen N' az N halmaz és az új nemterm.ok halmazának egyesítése. Nyilvánvaló, hogy P'-ben csak a kívánt alakú szabályok fognak szerepelni. Teljesül az is, hogy L(G) = L(G'), ugyanis: Minden P-beli szabály helyettesíthető P'-beli szabályok egy sorozatával, tehát olyan szó, ami G-ben levezethető S-ből, levezethető lesz G'-ben is. 7 Szabályredukció Segédállítás 2 bizonyítás folyt. (Minden 3-típusú nyelvtanhoz megadható olyan szintén 3-típusú megfelelő, amelyre L(G) = L(G'), és P'-ben minden szabály A ab vagy A λalakú) Megfordítva, az S-ből kiinduló és terminális szóban végződő G'-beli levezetésekben alkalmazott szabályok helyettesíthetők P-beli szabályokkal (általában kevesebbel). Így ugyanaz a terminális szó levezethető lesz G-ben is. Példa (a segédállításban szereplő konstrukció bemutatása) Legyenek a G nyelvtan szabályai a következők: S aba bb, A bbb λ, B ab ba. A segédállításban szereplő konstrukciót alkalmazva a következő G' nyelvtant kapjuk: S aa 1, A 1 ba ((ii) pont esete), S bb (változatlan), A ba 2, A 2 bb, A λ, B aa 3, A 3 ba 4, A 4 λ((iii) pont esete) B ba. 8

A reguláris nyelvek osztályának jellemzése Állítás 2: Tetszőleges Ʃ ábécé feletti 3-típusú nyelv felismerhető (véges, elfogadó) automatával Bizonyítás (F. Z., P. A., K. G.): Vegyünk egy Ʃ ábécé feletti 3-típusú nyelvet. Ekkor L = L(G), valamely G = (N, Ʃ, P, S) 3-típusú nyelvtanra. Az állítás igazolásához megadunk egy olyan M = (Q, Ʃ, δ, q 0, F) automatát, amelyre L(M) = L(G). Az előző segédállítások értelmében feltehető, hogy G láncszabálymentes, és minden P-beli szabály A ab vagy A λalakú. Konstruáljuk meg M-et a következők szerint: Q = N, (az automata állapotai a nemterminális szimbólumok) (példa ábra: F. Z. 30.) q 0 = S, F = {A N A λ P}, (a végállapotok jobboldala az üres szó) és minden A N és a Ʃ esetén δ(a, a) = {B N A ab P}. (itt az automata lehet nemdeterminisztikus) A továbbiakban megmutatjuk, hogy az automata és a nyelvtan működése ekvivalens, azaz tetszőleges n 1, A, B N és w Ʃ* szó esetén a következő érvényes: A n wb akkor és csak akkor áll fenn, ha (A, w) 1 n (B, valami ), továbbá, ha a B λhelyettesítés alkalmazható, akkor a valami = λ; azaz a nyelvtan segítségével A-ból pontosan akkor vezethető le n (ill. n + 1) lépésben a w szó, ha az automata az A állapotból a w jelsorozat elolvasása után (n lépésben) a B elfogadó állapotba kerül. (Vegyük észre, hogy a nyelvtan szabályai miatt minden egyes lépésben pontosan egy darab nemterminális szimbólumot dolgozunk fel a helyettesítésnél!) 9 A reguláris nyelvek osztályának jellemzése Állítás 2 bizonyítás folyt.* (Minden 3-típusú nyelv felismerhető véges automatával) Az ekvivalenciát n szerinti teljes indukcióval látjuk be. n = 1-re az állítás a következőt jelenti (most w = a): A 1 ab akkor és csak akkor áll fenn, ha (A, a) 1 1 (B, valami ), és ha a B λhelyettesítés alkalmazható, akkor a valami = λ; azaz: A nemterminálisból pontosan akkor vezethető le a, ha az A állapotból a elolvasása után a B elfogadó állapotba kerülünk. Ez a definícióból direkt módon következik. (Megj.: ha w > 1, akkor a levezetés nem lehet sikeres, és nem is juthatunk még végleg elfogadó állapotba.) Tfh. az ekvivalencia teljesül n-ig. (Tehát: addig minden szóra az automata és a nyelvtan működése ekvivalens legfeljebb n hosszú szavak elfogadása lehetséges.) Vizsgáljuk meg a n + 1 és 1 n + 1 eseteket! Ehhez legyen az automata által vizsgált/t-beli szó w úgy, hogy w > n. (A w n szavakat már feldolgoztuk; az indukciós feltevés szerint a levezetés pont akkor volt sikeres, ha egyúttal elfogadó állapotba is jutottunk.) Tegyük most fel, hogy éppen n lépést végeztünk el eddig; legyen továbbá w = w 1 w 2, w 1 = n, a levezetés aktuális állapota w 1 A, és nézzük az n + 1. lépést. Ekkor a nyelvtannál egy új helyettesítés következik, az automatánál pedig egy új állapotváltás. (Ha csak A λhelyettesítés létezne, akkor az indukciós feltevés szerint már készen lennénk, w 2 = λ-val.) Így tehát létezik más szabály is, legyen ez A ab, és ezt alkalmazzuk. Ekkor az automatának (a konstrukció alapján) létezik δ(a, a) = B átmenete, és tovább is fog lépni A-ból. Szintén a konstrukció alapján, ha a B λhelyettesítés alkalmazható, akkor az automata átléphet a (B,λ) konfigurációba (B elfogadó állapot; a beolvasás véget ért sikeresen). Ha csak B bc alakú helyettesítés alkalmazható, akkor az n + 2. lépés következik. Ezzel beláttuk, hogy a nyelvtan és az automata működése a következő lépésben is ekvivalens. 10

Ekvivalens reguláris nyelvtan megadása véges automatához (Eml.: A 3-típusú nyelvek osztálya és a véges automatákkal felismerhető nyelvek osztálya megegyezik) Feladat: Adjunk meg az A = ({q 0 }, {a, b}, δ, q 0, {q 0 }); δ(q 0, a) = {q 1 }, δ(q 0, b) = {q 2 }, δ(q 1, a) = {q 0 }, δ(q 2, b) = {q 1 } véges (elfogadó) automatához vele ekvivalens G reguláris nyelvtant! Kieg: Rajzoljuk is le az automatát! Itt N = Q (a nemterm.ok halmaza az automata állapothalmaza), T = I (a terminálisok halmaza az automata bemenő jeleinek a halmaza), és S = q 0. A G nyelvtan szabályait két csoportra oszthatjuk. Az első csoport szabályai: átmenetfüggvényből Ha az automata a q i állapotból az x bemenőjel hatására a q j állapotba megy át, akkor a szabályok közé bekerül a q i xq j szabály. A második csoport szabályai: végállapotok alapján Ha a q k állapot szerepel az A automata végállapotainak a halmazában, akkor felvesszük a G nyelvtan szabályai közé a q k λszabályt. Jelen esetben: G = ({q 0 }, {a, b}, q 0, H); H = {q 0 aq 1, q 0 aq 2, q 0 bq 2 aq 0 bq 1, q 0 λ λ}. Ehhez persze léteznek ekvivalens nyelvtanok, de ezt tudjuk könnyen előállítani (Ez egy reprezentatív nyelvtan azok közül, amik az automatával előállíthatók) 11 Ekvivalens reguláris nyelvtan megadása véges automatához További feladatok (ekvivalens reguláris nyelvtan megadása véges automatához) A megoldás során rajzoljuk is le az automatákat! Adjunk meg az A = ({q 0 }, {x, y}, δ, q 0, {q 1 }); δ(q 0, x) = {q 0 }, δ(q 1, y) = {q 0 } véges (elfogadó) automatához vele ekvivalens G reguláris nyelvtant! Megoldás: G = ({q 0 }, {x, y}, q 0, H); H = {q 0 xq 0, q 0 xq 1 yq 0 λ}. Adjunk meg az A = ({q 0 }, {x, y}, δ, q 0, {q 2 }); δ(q 0, x) = {q 1 }, δ(q 0, y) = {q 2 }, δ(q 1, x) = {q 0 }, δ(q 1, y) = {q 1 }, δ(q 2, x) = {q 0 }, δ(q 2, y) = {q 1 } véges (elfogadó) automatához vele ekvivalens G reguláris nyelvtant! Adjunk meg az A = ({q 0, q 3 }, {x, y, z}, δ, q 0, {q 0, q 3 }); δ(q 0, x) = {q 1, q 3 }, δ(q 0, y) = {q 2 }, δ(q 1, z) = {q 0 }, δ(q 2, x) = {q 0 }, δ(q 3, y) = {q 1 } automatához ekvivalens G reg. nyelvtant! Az általános átalakító algoritmus (B. Z.) (Ha M felismeri λ-t is, akkor még kieg. kell) 12

Feladat: Adjunk meg a G = ({S, A, B}, {a, b, c}, H, S), ahol H = {S abab, A B, A cacb, B ba, B S, B λ} nyelvtannal ekvivalens véges (üresszó-átmenet nélküli) automatát! Kieg.: Végül rajzoljuk is le az automatát! (Eml.: A nyelvtan átalakítása szükséges) Először megadunk egy G' nyelvtant, ami ekvivalens a G nyelvtannal és nem szerepelnek benne C D alakú szabályok. (Eml.: láncszabályok törlése, Segédáll. 1.) Ehhez két lépésre van szükség. 1. Minden A N-re meghatározzuk azon B N nemterminálisok halmazát, amelyekre A * B úgy, hogy a levezetés közben csak láncszabályokat alkalmaztunk (N A halmazok). Nálunk most: N A = {B, S}, N B = {S}. (S-ből nincs ily módon elérhető nemterminális.) 2. H'-be átvesszük a H szabályhalmaz mindazon szabályait, amelyek nem C D alakúak. Ezekhez hozzávesszük minden B N A -ra a B α alakú (nem lánc)szabályok bal oldalának kicserélésével kapott A α szabályokat is. Jelen esetben: G' = ({S, A, B}, {a, b, c}, H', S), ahol H' = {S abab, A cacb, B ba, B λ, A ba, A λ, A abab, B abab}. 13 Feladat (folyt., ekvivalens véges automata megadása reguláris nyelvtanhoz) (Eddig: G' = ({S, A, B}, {a, b, c}, H', S), ahol H' = {S abab, A cacb, B ba, B λ, A ba, A λ, A abab, B abab}) Ezután megadunk egy G 1 nyelvtant, ami ekvivalens a G' nyelvtannal, és nem szerepelnek benne C c 1 c n és C c 1 C n, n 3 alakú szabályok. (Eml.: 2. Segédállítás alkalmazása; nálunk most: C c n megengedhető) A H' szabályhalmaz ilyen alakú szabályait helyettesítjük új szabályokkal, a többit pedig változtatás nélkül átvesszük a H 1 szabályhalmazba. Helyettesítés: 1. Minden C c 1 c n, n 2 alakú szabályhoz vezessünk be D 1, D 2,, D n 1 új nemterminálisokat; D i -ből fogjuk levezetni a c i+1 c i+2 c n szót. Ehhez az összes C c 1 c n, n 2 alakú szabályt helyettesítsük a következő szabályokkal: C c 1 D 1, D 1 D 2,, D n 2 c n 1 D n 1, D n 1 c n. 2. Minden C c 1 C n, n 3 alakú szabályhoz vezessünk be D 1, D 2,, D n 2 új nemterminálisokat; D i -ből a c i+1 c i+2 C n szót fogjuk levezetni. Ehhez az összes C c 1 C n, n 3 alakú szabályt helyettesítsük a következő szabályokkal: C c 1 D 1, D 1 D 2,, D n 3 c n 2 D n 2, D n 2 c n 1 C n. Jelen esetben: G 1 = ({S, A, B, D 1, D 2, D 3, D 4, D 5 }, {a, b, c}, H 1, S), ahol H 1 = {S ad 1, D 1 bd 2, D 2 ab, A cd 3, D 3 ad 4, D 4 cd 5, D 5 b, B ba, B λ, A ba, A λ, A ad 1, B ad 1 }. 14

Feladat (folyt., ekvivalens véges automata megadása reguláris nyelvtanhoz) Végül megadjuk az eredeti G nyelvtannal ekvivalens A véges (elfogadó) automatát. A állapothalmazát úgy kapjuk, hogy G 1 nemterminálisainak a halmazához hozzáveszünk egy új q v állapotot (ez arra szolgál, hogy biztosítsa az elfogadást a D n 1 c n típusú eseteknél). (Ehelyett lehet: új D n nemterminális is) A bemenő jeleinek a halmaza ugyanaz, mint G terminálisainak a halmaza, a kezdőállapot a startszimbólum. A végállapotainak halmaza tartalmaz minden olyan C állapotot, amely szerepelt C λalakú szabályban, valamint tartalmazza az új q v állapotot is. Az automata δ átmenetfüggvényét úgy kapjuk meg, hogy minden H 1 halmazban szereplő C de szabály esetén felvesszük a δ(c, d) = E átmenetet, valamint a C d alakú szabályok esetén a δ(c, d) = q v átmenetet. Jelen esetben: A = ({S, A, B, D 1, D 2, D 3, D 4, D 5, q v }, {a, b, c}, δ, S, {B, A, q v }), ahol δ(s, a) = D 1, δ(a, a) = D 1, δ(a, b) = A, δ(a, c) = D 3, δ(b, a) = D 1, δ(b, b) = A, δ(d 1, b) = D 2, δ(d 2, a) = B, δ(d 3, a) = D 4, δ(d 4, c) = D 5, δ(d 5, b) = q v. (Az automata tekinthető determinisztikusnak, ezért a { } jeleket nem írtuk ki az átmeneteknél.) Kieg.: Rajzoljuk is le az automatát! 15 További feladatok (ekvivalens véges automata megadása reguláris nyelvtanhoz, D. P.) A megoldás végén rajzoljuk is le az automatákat! Adjunk meg a G = ({S, A, B}, {a, b}, H, S), ahol H = {S aa, S bbb, A B, B bs, B aba, B λ} nyelvtannal ekvivalens véges automatát! Megoldás: A = ({S, A, B, D 1, D 2, D 3, q v }, {a, b}, δ, S, {B, A, q v }), ahol δ(s, a) = A, δ(s, b) = D 1, δ(d 1, b) = B, δ(b, b) = S, δ(a, b) = S, δ(b, a) = D 2, δ(a, a) = D 2, δ(d 2, b) = D 3, δ(d 3, a) = q v. Adjunk meg a G = ({S, A, B}, {a, b}, H, S), ahol H = {S aa, S bb, S B, B A, A as, A b} nyelvtannal ekvivalens véges automatát! Adjunk meg a G = ({S, A, B}, {a, b}, H, S), ahol H = {S aaaa, S bbbb, A bs, B as, A aa, B bb} nyelvtannal ekvivalens véges automatát! 16

Általános szabályredukciós algoritmus (B. Z.) Adott G = (N, T, P, S) 3-típusú nyelvtan úgy, hogy G láncszabálymentes (Eml.: kiküszöbölő algoritmussal, 6. slide) Az algoritmus előállítja a redukált nyelvtant, amelyben a szabályok A ab vagy A a alakúak (A λis megengedett) N és P is változik Értelemszerűen minden új nemterminális neve különböző Automata létrehozása: lásd következő slide 17 Általános átalakító algoritmus (B. Z.) Adott G = (N, T, P, S) nyelvtan úgy, hogy G láncszabálymentes, és minden P-beli szabály A ab vagy A a alakú Azaz a fenti redukciót már végrehajtottuk (Az A λszabályok kiküszöbölhetők úgy, hogy ekvivalens nyelvtant kapunk, lásd CF nyelvtanok átalakításai, üresszólemma, 12. slidesor, 4 5. old.) Ha meghagyjuk az A λszabályokat, akkor + 1 sor: F-be berakjuk a megfelelő A-kat Az algoritmus előállít egy olyan M = (Q, T, δ, q 0, F) véges automatát, amely ekvivalens G-vel Az automata lehet nemdeterminisztikus 18

Gyenge és erős normálforma (kiegészítő anyag*) (A 3-típusú nyelvtan egy másik lehets. tdk. ekvivalens átalakítása, D. P. 75 77.) Def. szerint: egy lépésben bármennyi terminális bekerülhet a mondatformába, vagyis a szabályok jobb oldalának hossza tetszőleges lehet Most: a jobb oldalak hosszát már az első lépésben korlátozzuk Definíció: Egy reguláris nyelvtan gyenge normálformában van, ha minden szabálya az alábbi alakok egyikébe tartozik: A ab, A B, A a, A λ(ahol A, B N, a T) Tétel: Minden reguláris nyelv generálható gyenge normálformájú reguláris nyelvtannal Megj.: A gyenge normálformára hozás tekinthető a levezetési fák olyan transzformációjának, aminek eredményeként bináris fa áll elő, a levelek száma és sorrendje pedig nem változik Rajzos példa A abac-re, két új nemterminális kell, D 1 és D 2 A gyenge normálformájú alakból kiküszöbölhetőek az A λalakú szabályok is (üresszó-lemma, később tanuljuk, a 2-típusú nyelvtanoknál). Ezzel elérhető: vagy nincs A λalakú szabály, vagy λ így csak az S λszabályban fordul elő, de ekkor S nem szerepel egyik szabály jobb oldalán sem. A láncszabályoktól is meg lehet szabadulni (tudjuk már) Definíció: Egy reguláris nyelvtanról azt mondjuk, hogy erős normálformában van, ha minden szabálya A ab vagy A a alakú Tétel: Minden 3-típusú nyelvtanhoz van vele ekvivalens erős normálformájú 3-típusú nyelvtan Külön köszönet: Pukler A. kollégámnak és a hiv. jegyzetek szerzőinek 19