Automaták és formális nyelvek el®adások · VÁRTERÉSZ MAGDA Automaták és formális nyelvek...

Preview:

Citation preview

VÁRTERÉSZ MAGDA

Automaták és formális nyelvek

el®adások

2017/18-as tanév 1. félév

Tartalomjegyzék

1. El®zetes tudnivalók 4

2. Bevezetés 15

3. Ábécé, szó, formális nyelv 17

4. M¶veletek nyelvekkel 244.1. Boole-m¶veletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.2. Reguláris m¶veletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3. Reguláris kifejezések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5. Formális rendszerek 325.1. A generatív rendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.2. A Markov-algoritmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

6. Generatív nyelvtanok 416.1. A generatív nyelvtan és az általa generált nyelv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

6.2. A generatív nyelvtanok alkalmazása a programozásban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6.3. A Chomsky-féle nyelvosztályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

7. Reguláris nyelvek 547.1. A determinisztikus véges automata mint felismer® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2

Tartalomjegyzék 3

7.2. A nemdeterminisztikus véges automata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

7.3. A 3 típusú nyelvek osztályának jellemzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

8. Környezetfüggetlen nyelvek 778.1. Levezetési fák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

8.2. Chomsky-féle normál alak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

8.3. A Cocke-Younger-Kasami algoritmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

8.4. Nemdeterminisztikus veremautomaták . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

8.5. LL(k) elemzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

9. Környezetfügg® nyelvek 1069.1. Turing-gépek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

Irodalomjegyzék 111

1. fejezet

El®zetes tudnivalók

Különböz® dolgokat (tárgyakat, személyeket, fogalmakat, objektu-mokat stb.) halmazokba sorolhatunk. Az egy halmazba sorolt dolgoka halmaz elemei.

− h eleme a H halmaznak: h ∈ H− h nem eleme a H halmaznak: h 6∈ HA halmazt megadási módjai:

− kapcsos zárójelben felsoroljuk az elemeit: {h1, h2, . . . , hn}− megadunk egy a halmaz elemeit jellemz® tulajdonságot:

{h∣∣ a h elem T tulajdonságú}

4

5

− A K halmaz a H halmaz részhalmaza, azaz K ⊆ H , ha mindenh ∈ K esetén h ∈ H is.

− Ha K ⊆ H és H ⊆ K, akkor H és K ugyanazon elemeket tar-talmazzák, ilyenkor a két halmazt egyenl®nek nevezzük (jelölése:H = K).

− Pontosan egy olyan halmaz van, amelyiknek nincs eleme, neveüres halmaz, jele ∅.

− Két halmaz diszjunkt, ha nincs közös elemük.

− Egy adott U halmaz összes részhalmazai is halmazt alkotnak,melyet U hatványhalmazának nevezünk, és P(U)-val jelölünk.

6 1. El®zetes tudnivalók

Vezessünk most be m¶veleteket P(U)-n. A H1 és a H2 P(U)-belihalmazok

− uniója: H1 ∪H2 {h | h ∈ H1 vagy h ∈ H2}

− metszete: H1 ∩H2 {h | h ∈ H1 és h ∈ H2}

− különbsége: H1 \H2 {h | h ∈ H1 de h 6∈ H2}

− komplementere: H1 {h | h ∈ U de h 6∈ H1}

P(U)-beli halmaz.

A H1, H2, . . . , Hn (n ≥ 1) nemüres halmazok Descartes-szorzata

H1×H2×. . .×Hn {(h1, h2, . . . , hn) | hi ∈ Hi, i = 1, 2, . . . , n}.

H1×H2× . . .×Hn részhalmazait (n−változós) relációknak nevez-zük.

7

Az R ⊆ H × H kétváltozós vagy binér reláció. ((h1, h2) ∈ Rjelölése ilyenkor gyakran: h1Rh2). Azt mondjuk, hogy az R binérreláció

− re�exív, ha minden h ∈ H-ra hRh;

− irre�exív, ha egyetlen h ∈ H-ra sem igaz, hogy hRh;

− szimmetrikus, ha minden h1, h2 ∈ H-ra, melyre h1Rh2, fennállh2Rh1 is;

− aszimmetrikus, ha egyetlen h1, h2 ∈ H-ra sem teljesül egyszerreh1Rh2 és h2Rh1;

− tranzitív, ha minden h1, h2, h3 ∈ H-ra, melyre h1Rh2 és h2Rh3,teljesül h1Rh3 is;

8 1. El®zetes tudnivalók

Jelölje a H1, H2, . . . , Hn halmazok Descartes-szorzatát H . AzF ⊆ H × K reláció H-ból K-ba képez® n-változós függvény vagym¶velet, ha minden h ∈ H-hoz legfeljebb egy olyan k ∈ K van,amelyre (h, k) ∈ F . Ha az F ⊆ H × K reláció függvény, azF : H → K jelölést használjuk.

− Az F függvényértelmezési tartománya azon H-beli elemek hal-maza (jelölése: Dom(F )), melyekre van olyan k ∈ K, hogy(h, k) ∈ F

− F minden h ∈ Dom(F )-hez egy jól meghatározott k ∈ K elemetrendel, amit F (h)-val jelölhetünk, és az F függvény h helyenfelvett helyettesítési értékének, vagy a h elem képének nevezünk,h-t pedig az F (h) ®sképének hívjuk.

− Az Rng(F ) {F (h)∣∣ h ∈ Dom(F )} halmaz az F értékkészlete.

Természetesen Rng(F ) ⊆ K.

9

Az F függvény

− szürjektív, ha Rng(F ) = K;

− injektív, ha különböz® elemek képe különböz®;

− bijektív vagy kölcsönösen egyértelm¶, ha szürjektív és injektív.

Ha F injektív függvény, akkor a Rng(F ) képtér minden k eleméhezegyértelm¶en hozzá tudjuk rendelni az ®sképét. Ily módon egy újabbfüggvényt nyerhetünk, amelynek értelmezési tartománya Rng(F ),képtere pedig Dom(F ). Ez a függvény az F inverze, és F−1-gyeljelöljük.Azokat a függvényeket, melyek értelmezési tartománya valamely

n ∈ N0-ra a {0, 1, . . . , n} halmaz, vagy maga a természetes számokhalmaza, véges, illetve végtelen sorozatoknak nevezzük. Ha egy ilyenfüggvény i helyen felvett értékét si-vel jelöljük, akkor s0, s1, . . . , sn,illetve s0, s1, . . . formában adhatjuk meg ®ket.

10 1. El®zetes tudnivalók

Legyenek ◦ : H ×H → H és • : H ×H → H binér m¶veletek. A◦ m¶velet

− asszociatív, ha minden h1, h2, h3 ∈ H-ra (h1 ◦ h2) ◦ h3 = h1 ◦(h2 ◦ h3);

− kommutatív, ha minden h1, h2 ∈ H-ra h1 ◦ h2 = h2 ◦ h1;− idempotens, ha minden h ∈ H-ra h ◦ h = h.

− disztributív a • m¶veletre nézve, ha minden h1, h2, h3 ∈ H-ra

(h1 • h2) ◦ h3 = (h1 ◦ h3) • (h2 ◦ h3)és

h3 ◦ (h1 • h2) = (h3 ◦ h1) • (h3 ◦ h2).

11

Egy 〈H ;M〉 pár, ahol M a H-n értelmezett m¶veletek egy hal-maza, algebrai struktúra. H a struktúra alaphalmaza, az M -belim¶veletek a struktúra alapm¶veletei .

− Egy struktúra grupoidoknak , ha egy kétváltozós alapm¶velete van.Ha ez a m¶velet asszociatív, akkor a struktúra félcsoport , ha mégkommutatív is, kommutatív félcsoport .

− Ha a 〈H ; ◦〉 félcsoportban e ∈ H olyan, hogy e ◦ h = h ◦ e = hminden h ∈ H-ra, akkor e 〈H ; ◦〉 neutrális eleme. Egy félcso-portban legfeljebb egy ilyen elem van. Legyen e 〈H ; ◦〉 neutráliseleme. Ha h ∈ H-hoz van olyan h∗ ∈ H , hogy h∗◦h = h◦h∗ = e,akkor h∗ h inverze. Az inverz, ha létezik, egyértelm¶.

− A csoport olyan félcsoport, amelyben van neutrális elem, és min-den elemnek van inverze. Ha a csoport alapm¶velete még kom-mutatív is, Abel-csoportról beszélünk.

12 1. El®zetes tudnivalók

A 〈H ; •, ◦〉 struktúra− gy¶r¶ , ha 〈H ; •〉 Abel-csoport, 〈H ; ◦〉 félcsoport, és ◦ disztribu-

tív •-ra nézve. A 〈H ; •〉 Abel-csoportot a gy¶r¶ additív csoport-jának , a 〈H ; ◦〉 félcsoportot a gy¶r¶ multiplikatív félcsoportjánaknevezzük. A gy¶r¶ kommutatív , ha a multiplikatív félcsoportjakommutatív. Az additív csoport neutrális elemét a gy¶r¶ nullele-mének nevezzük. Ha 0 a 〈H ; •, ◦〉 gy¶r¶ nulleleme, tetsz®legesh ∈ H-ra 0 ◦ h = h ◦ 0 = 0.

− A 〈H ; •, ◦〉 gy¶r¶ test , ha 〈H ′; ◦〉 csoport, ahol H ′ H-nak a null-elemt®l különböz® elemeit tartalmazza. Ez a csoport a test mul-tiplikatív csoportja. A multiplikatív csoport neutrális elemét atest egységelemének nevezzük. A test kommutatív , ha a multip-likatív csoportja kommutatív.

13

Ha két halmaz között van bijekció, akkor a két halmazt mennyisé-gileg egybevágónak � ekvivalensnek � tekintjük. Ez a viszony re�exív,szimmetrikus és tranzitív.Minden halmazhoz egyértelm¶en úgy rendelünk egy ún. számossá-

got, hogy az egymással mennyiségileg egybevágó halmazokhoz ugyanaz,az egymással mennyiségileg nem egybevágó halmazokhoz pedig kü-lönböz® számosság tartozzon.(Egy ilyen hozzárendelés nem függvény, hisz egy függvény értel-

mezési tartománya halmaz. Az ilyen hozzárendelést operációnak ne-vezzük. Megjegyezzük, hogy a számosságoperáció létezik ugyan, delétezése nem nyilvánvaló, hanem bizonyításra szorul.)

14 1. El®zetes tudnivalók

Tetsz®leges n ∈ N0 természetes számra jelölje n a {0, 1, . . . , n−1}halmazt (n = 0 esetén 0 legyen ∅). n elemeinek száma n.

− AH halmaz véges és számossága n, ha van olyan n ∈ N0, melyren és H mennyiségileg egybevágó. Ha n és m különböz® termé-szetes számok, n és m mennyiségileg nem egybevágóak.

−N0 egyetlen n ∈ N0-ra sem egybevágó mennyiségileg az n hal-mazzal, tehát N0 nem véges, azaz végtelen. Ha egy H halmazmennyiségileg egybevágó N0-lal, akkor H-t megszámlálhatóanvégtelen számosságúnak mondjuk és ezt ℵ0-lal jelöljük.

− Belátható az is, hogy P(N0) végtelen, de mennyiségileg nem egy-bevágó N0-lal. A P(N0)-lal mennyiségileg egybevágó halmazoknem megszámlálhatóak, azt mondjuk, hogy kontinuum számos-ságúak.

2. fejezet

Bevezetés

A hallgatóság által már el®zetesen használt formális nyelvek:

• programozási nyelvek,

• a matematikai logika nyelve,

• stb.A formális nyelvek elmélete módszereket ad

• formális nyelvek de�niálására,

• a formális elemek nyelvhez való tartozásának eldöntésére,

• a nyelvi elemek struktúrájának felismerésére.15

16 2. Bevezetés

Az el®adáson használt nyelvek

• a magyar nyelv mint természetes nyelv,

• a matematika nyelve: a matematika szimbólumaival kevert ter-mészetes nyelv,

• az el®adáson példaként szerepl® formális nyelvek.

A szimbólum fogalmát alapfogalomnak tekintjük, ezért formálisannem is de�niáljuk. A szimbólum lehet írott jel, egy anyag mágnese-zettségi foka, egy jelzés vagy állapot megléte, ill. hiánya stb.

3. fejezet

Ábécé, szó, formális nyelv

3.1. definíció.•Ábécé: szimbólumok (bet¶k) tetsz®leges véges, nemüres hal-maza. Az ábécét alkotó szimbólumokról feltesszük, hogy külön-böznek egymástól külön-külön is, csoportosítva is.

• Legyen V egy ábécé. V feletti szó: V -beli szimbólumok végessorozata. Az ábécé szimbólumaiból álló a1, a2, . . . , an (n ≥ 1)sorozat mint szó jelölése: a1a2 . . . an. Az üres sorozatot üresszónak nevezzük és λ-val jelöljük.

• V feletti nyelv: V feletti szavak tetsz®leges halmaza. A V felettiösszes szót tartalmazó nyelv a teljes nyelv, ezt V ∗-gal jelöljük.

17

18 3. Ábécé, szó, formális nyelv

3.2. definíció. Egy v ∈ V ∗ szó hosszán a szót alkotó V -beliszimbólumok számát értjük, és ezt `(v)-vel jelöljük.

Jelölje v az a1 . . . an és w a b1 . . . bm V ∗-beli szavakat. Ekkor `(v) =n és `(w) = m.

3.3. definíció. A v és w szavak azonosak, azaz v = w, ha `(v) =`(w) és minden i = 1, . . . , `(v) esetén ai = bi.

3.4. definíció. A v és w szavak konkatenációja az

a1 . . . anb1 . . . bm

V ∗-beli szó. Jele: vw.

3.5. tétel. V ∗ a konkatenációval (mint kétváltozós m¶velettel) egység-elemes félcsoportot alkot.

Bizonyítás vázlat. A konkatenáció asszociatív, mert (uv)w =u(vw) és λ egységelem, mert λv = vλ = v minden u, v, w ∈ V ∗

esetén.

19

3.6. definíció. De�niáljuk szavak hatványát. Legyen v0 λ ésminden n ≥ 1 esetén vn vn−1v.

3.7. definíció. A v szó a w szó részszava, ha vannak olyan x, y ∈V ∗ szavak, hogy w = xvy és valódi részszava, ha még xy 6= λ ésv 6= λ is. A w szó v részszava kezd®szelete w-nek, ha x = λ, ésvalódi kezd®szelete, ha x = λ, v 6= λ és y 6= λ.

3.8. definíció. Egy v = a1a2 . . . an−1an szó tükörképén az

anan−1 . . . a2a1

szót értjük, és v−1-gyel jelöljük.

3.9. tétel. Tetsz®leges v ∈ V ∗ szóra és n ≥ 0 esetén

(v−1)−1 = v és (vn)−1 = (v−1)n.

20 3. Ábécé, szó, formális nyelv

3.10. példa.

• V1 = {a, b, c} egy ábécé,aabab egy szó, melynek hossza 5, azaz `(aabab) = 5,az aba szó pedig egyik részszava.A V1 ábécé feletti teljes nyelv:

V ∗1 = {λ, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, . . .},egy további nyelv:

LV1 = {λ, abc, aabbcc, aaabbbccc, . . .} = {anbncn | n ≥ 0}.

• V2 = {0, 1} egy másik ábécé, mely feletti nyelvek példáula kettes számrendszerben felírt páratlan számok nyelve:

LV21 = {1, 1v1 | v ∈ V ∗2 },

vagy az egy bájton leírható szavak halmaza

LV22 = {v | v ∈ V ∗2 és `(v) = 8}

21

.

• A V3 = {if, then, else, for, do, a, b, c} ábécé feletti szó:

if b then a else c

Ennek a szónak a hossza 6.

• Bármilyen ábécé felett nyelv

� az egyetlen szót sem tartalmazó üres nyelv (üres halmaz)

� és az egyetlen szót, épp az üres szót tartalmazó nyelv, a {λ}nyelv.

A félév során olyan nyelvekkel foglalkozunk, amelyek megadhatókvégesen speci�kálható eszközökkel: generatív nyelvtanokkal éskülönböz® típusú automatákkal.

22 3. Ábécé, szó, formális nyelv

3.11. definíció. Legyen V1 és V2 két tetsz®leges, nem feltétlenülkülönböz® ábécé. A V ∗1 -ot V

∗2 -ra képez® függvényeket szófüggvé-

nyeknek nevezzük. Egy f : V ∗1 → V ∗2 szófüggvény

• hossztartó, ha `(f (v)) = `(v) minden v ∈ V ∗1 esetén;• kezd®szelettartó, ha f (uv) = f (u)w minden u, v ∈ V ∗1 eseténvalamilyen w ∈ V ∗2 -re.

3.12. példa.

• A szavak tükörképét el®állító szótükröz® szófüggvény hossztartó:

tükörkép(v) v−1.

• A fej szófüggvény kezd®szelettartó:

fej(v)

{λ, ha v = λ,v els® bet¶je egyébként.

• A törzs szófüggvény kezd®szelettartó: törzs(v) az a szó, melyre av = fej(v)törzs(v) egyenl®ség teljesül.

23

Elemi szóm¶veletek azok a szófüggvények, amelyek a jellegzetesgépelési hibákat korrigálják:

• egy bet¶ beszúrása a szóba, adott helyre;

• egy adott helyen lév® bet¶ törlése a szóból;

• egy adott helyen lév® bet¶ másikra való kicserélése;

• adott helyen lév® két szomszédos bet¶ felcserélése.

Két szó távolságán azon elemi szóm¶veletek minimális számát ért-jük, amelyek alkalmazásával az egyik szóból el®áll a másik.Mi csak az els® két elemi szóm¶velettel foglalkozunk. Jelölje av = a1a2 . . . an és a w = b1b2 . . . bm szavak távolságát d(n,m):

d(i, j)

i + j, ha i = 0 vagy j = 0,d(i− 1, j − 1), ha ai = bj,min {d(i− 1, j), d(i, j − 1)} + 1, egyébként.

4. fejezet

M¶veletek nyelvekkel

4.1. Boole-m¶veletek

4.1. definíció. Tesz®leges L1, L2 ⊆ V ∗ nyelvek esetén értelmez-het® a nyelvek (mint halmazok)

• uniója: (L1 ∪ L2) {v | v ∈ L1 vagy v ∈ L2}•metszete: (L1 ∩ L2) {v | v ∈ L1 és v ∈ L2}• különbsége: (L1 \ L2) {v | v ∈ L1 de v 6∈ L2}• komplementere: L1 {v | v ∈ V ∗ de v 6∈ L1}Ezeket a m¶veleteket Boole-m¶veleteknek nevezzük.

24

4.2. Reguláris m¶veletek 25

4.2. Reguláris m¶veletek

4.2. definíció. Nyelvek között az alábbi ún. reguláris m¶vele-teket is de�niálhatjuk:

• összedás: (L1 + L2) L1 ∪ L2• szorzás: (L1L2) {vw | v ∈ L1 és w ∈ L2}• iteráció: L∗ {λ} + L + (LL) + (LLL) + . . .

4.3. megjegyzés. Tetsz®leges V ábécé esetén V egyúttal nyelv és

V ∗ = {λ} + V + (V V ) + (V V V ) + . . . .

Tehát a V ∗ jelölés konzekvens.

26 4. M¶veletek nyelvekkel

4.4. tétel. A V feletti nyelvek halmazán értelmezett

• összeadás: kommutatív és asszociatív, zéruselem az üres nyelv,

• szorzás: asszociatív, egységelem a {λ} nyelv.A két m¶velet együtt disztributív.

Vizsgálni fogjuk bizonyos nyelvosztályok m¶veletekre vonatkozózártsági tulajdonságait.

4.5. definíció. A L nyelvosztály zárt egy nyelveken értelmezhet®m¶veletre nézve, ha valahányszor L-beli nyelveken végezzük el am¶veletet, mindannyiszor L-beli nyelvet kapunk eredményül.

4.3. Reguláris kifejezések 27

4.3. Reguláris kifejezések

4.6. definíció. A V ábécé feletti reguláris kifejezések azon és csakazon szavai a (V ∪ {∅, (, ),+,∗ })∗ nyelvnek, melyeket a következ®szabályok véges sokszori alkalmazásával állíthatunk el®:

• ∅ reguláris kifejezés.•Minden a ∈ V reguláris kifejezés.

• Ha R1 és R2 reguláris kifejezések, akkor (R1 + R2), (R1R2) ésR∗1 is reguláris kifejezések.

4.7. példa. A V = {a, b} ábécé feletti reguláris kifejezések:

∅∗, (a + b)∗, ((ab)a∗).

28 4. M¶veletek nyelvekkel

4.8. definíció. Legyen R egy V ábécé feletti reguláris kifejezés.Az R által reprezentált LR nyelv a következ®:

• Ha R = ∅ (mint szimbólum), akkor LR = ∅ (mint nyelv).

• Ha R = a, akkor LR = {a}.• Ha R = (R1 +R2), akkor LR = LR1

+ LR2.

• Ha R = (R1R2), akkor LR = LR1LR2

.

• Ha R = R∗1, akkor LR = L∗R1.

Egy L ⊆ V ∗ nyelv reguláris nyelv, ha van olyan V feletti reguláriskifejezés, mely reprezentálja.

4.3. Reguláris kifejezések 29

4.9. példa. A fenti reguláris kifejezések az alábbi reguláris nyelve-ket határozzák meg:

• L∅∗ = L∗∅ = {λ} + ∅ + (∅∅) + . . . = {λ}• L(a+b)∗ = L∗

(a+b)= (La + Lb)

∗ = {a, b}∗ == {λ, a, b, aa, ab, ba, bb, . . .}• L((ab)a∗) = L(ab)La∗ = (LaLb)L

∗a =

= {ab}{λ, a, aa, aaa, . . .} = {ab, aba, abaa, abaaa, . . .}

30 4. M¶veletek nyelvekkel

4.10. tétel. A reguláris nyelvek osztálya zárt a reguláris m¶vele-tekre nézve.

Bizonyítás. Legyenek L1, L2 reguláris nyelvek, azaz vannak olyanR1 és R2 reguláris kifejezések, melyekre LR1

= L1 és LR2= L2.

Ekkor a 4.6. de�níció szerint (R1 + R2), (R1R2) és R∗1 is regu-láris kifejezések. Továbbá a 4.8 de�níció értelmében L(R1+R2)

=

L1+L2, L(R1R2)= L1L2 és LR∗1

= L∗1. Tehát az (L1+L2), (L1L2)és az L∗1 nyelvek is reprezentálhatók reguláris kifejezéssel, ezért re-gulárisak.

4.3. Reguláris kifejezések 31

4.11. tétel.Minden véges nyelv reguláris.

Bizonyítás. Legyen V egy ábécé és L ⊆ V ∗ egy véges nyelv.

• Ha L = ∅, akkor L reguláris, hisz az ∅ reguláris kifejezés repre-zentálja.

• Ha L = {λ}, akkor is reguláris L, az ∅∗ reguláris kifejezés repre-zentálja.

• Ha L = {a1a2 . . . an}, mivel az {ai} minden 1 ≤ i ≤ n-rereguláris nyelv (ai reprezentálja), és L ezek szorzata, a zártságmiatt L is reguláris.

• Ha L = {v1, v2, . . . , vm}, mivel L = {v1} + {v2} + . . . + {vm},és minden 1 ≤ j ≤ m-re {vj} reguláris nyelv, a zártság miattösszegük, azaz L is az.

5. fejezet

Formális rendszerek

5.1. definíció. Az F = 〈V,H〉 pár egy formális rendszer, ahol

• V egy ábécé,

•H ⊂ V ∗×V ∗ nem üres, véges halmaz, helyettesítési szabályokhalmaza.

H tulajdonképpen egy V ∗ feletti binér reláció:az (x, y) ∈ H helyettesítési szabály szokásos jelölése x→ y, és úgyolvassuk, hogy az x szó helyettesíthet® az y szóval.

32

33

5.2. definíció. Az F = 〈V,H〉 formális rendszerben a v ∈ V ∗

szóból közvetlenül levezethet® a w ∈ V ∗ szó, ha vannak olyanu1, u2 ∈ V ∗ szavak és van olyan x→ y ∈ H , hogy

v = u1xu2 és w = u1yu2.

Ezt a tényt v ⇒ w-vel jelöljük.

5.3. definíció. Az F = 〈V,H〉 formális rendszerben a v ∈ V ∗

szóból levezethet® a w ∈ V ∗ szó, ha vagy v = w, vagy van olyanu0, u1, . . . , un ∈ V ∗ szósorozat (n ≥ 1), hogy

u0 = v, un = w, és ui⇒ ui+1 minden 0 ≤ i ≤ n− 1 esetén.

Jelölése: v ⇒∗ wSzóproblémának nevezzük azt a kérdést, hogy egy adott F for-

mális rendszerben egy adott v szóból levezethet®-e vagy sem egyadott w szó. A szóprobléma algoritmikusan nem eldönthet® prob-léma.

34 5. Formális rendszerek

5.4. példa. Az

〈{a, b, c, d}, {ba→ ab, caa→ ca, bbc→ bc, c→ ccc, λ→ d}〉formális rendszerben fennállnak az

• abc⇒∗ abc• bbabcab⇒∗ abcabrelációk, de nem igaz, hogy abcab ⇒∗ bbabcab. A fenti formálisrendszer néhány tulajdonsága:

• A c és d bet¶ket nem tartalmazó részszavak az els® szabály alkal-mazásával (bet¶k szerint) rendezhet®k.

• A c bet¶t közvetlen követ® a-k, illetve a c bet¶t közvetlen meg-el®z® b-k egy kivételével eltüntethet®k.

• A c-k száma kettesével növelhet®.

• Bárhová írható d.

35

5.5. feladat. Legyen V = {a, b} egy ábécé. Adjunk meg helyet-tesítési szabályoknak olyan rendszerét, amely mellett

• tetsz®leges v ∈ V ∗-b®l tetsz®leges w ∈ V ∗ levezethet®;• v ⇒∗ w pontosan akkor, ha `(v) = `(w).

36 5. Formális rendszerek

5.1. A generatív rendszer

5.6. definíció. AW = 〈V,A,H〉 hármast generatív rendszerneknevezzük, ahol

• 〈V,H〉 egy formális rendszer,

• A ⊂ V ∗ véges halmaz, axiómák halmaza.

W-hez hozzárendelünk egy V feletti nyelvet, az ún. W által gene-rált nyelvet:

LW {w ∈ V ∗ | van olyan v ∈ A, hogy v ⇒∗ w}5.7. példa. Az 〈{a, b}, {λ, a, b, ab}, {a → aa, b → bb}〉generatív rendszer az {anbm | n,m ≥ 0} nyelvet generálja.5.8. feladat. Adjuk meg, melyik nyelvet generálja az

〈{a, +, ·, (, )}, {a}, {a→ a + a, a→ a · a, a→ (a)}〉generatív rendszer.

5.1. A generatív rendszer 37

5.9. példa. Legyen adva a V = {a, b} ábécé feletti {anbn | n ≥ 0}nyelv. Célunk meghatározni, melyik generatív rendszer generál-hatná:

〈V, {λ, ab}, {ab→ aabb}〉

5.10. feladat. Adjuk meg, melyik generatív rendszerrel generál-ható az V = {a, b, c} ábécé feletti

{v ∈ V ∗ | v egyenl® számú a-t b-t és c-t tartalmaz}nyelv.

5.11. megjegyzés. A generatív rendszer kifejez®ereje gyakran nemelegend®. Például az olyan egyszer¶ nyelvet, mint az

{v ∈ {a, b}∗ | v = tükörkép(v)},sem lehet megadni generatív nyelvtannal.

38 5. Formális rendszerek

5.2. A Markov-algoritmus

5.12. definíció. AMarkov-algoritmus egy olyanM = 〈V,H,Z〉hármas, ahol

• 〈V,H〉 egy formális rendszer,

•H = {x1→ y1, . . . , xm→ ym} a felsorolás szerint rendezett, és

• Z ⊆ H pedig az ún. záróhelyettesítések halmaza.

5.13. definíció. Az M Markov-algoritmus alkalmazható a v ∈V ∗ szóra, ha van olyan helyettesítési szabály, amelynek a bal oldalarészszava v-nek.

5.2. A Markov-algoritmus 39

5.14. definíció. LegyenM alkalmazható a v szóra, továbbá legyenxi → yi a rendezés szerinti els® olyan helyettesítési szabály, amely-nek a bal oldala részszava v-nek. Válasszuk az u1 részszót úgy, hogyv = u1xiu2, de xi az u1xi szóban csak egyszer forduljon el®. A vszóra M alkalmazásának eredménye a w = u1yiu2 szó. Jelölése:ha xi→ yi ∈ Z, akkor v ⇒ .w, egyébként v ⇒ w.

5.15. definíció. Az M = 〈V,H,Z〉 Markov-féle algoritmusban av ∈ V ∗ szóból levezethet® a w ∈ V ∗ szó, ha• vagy v = w,

• vagy van olyan u0, u1, . . . , un ∈ V ∗ szósorozat (n ≥ 1), hogy

� u0 = v, un = w, és ui⇒ ui+1 minden 0 ≤ i ≤ n−2 esetén,� továbbá vagy un−1 ⇒ .un, vagy un−1 ⇒ un és un-re M nemalkalmazható.

Jelölése: v ⇒∗ w.

40 5. Formális rendszerek

5.16. példa.

• A 〈{a, b, c}, {ba→ ab, ca→ ac, cb→ bc}, {}〉Markov-algoritmusa v ∈ {a, b, c}∗ szavakban rendezi a bet¶ket.

• A 〈{a, b, ′}, {a → λ, ′b → bb′, ′ → λ, b → ′b}, {′ → λ}〉Markov-algoritmus a v ∈ {a, b}∗ szavakból törli az a-kat és dup-lázza a b-ket.

6. fejezet

Generatív nyelvtanok

6.1. A generatív nyelvtan és az általa generált nyelv

6.1. definíció.Generatív nyelvtannak egy 〈Vn, Vt, S,H〉 né-gyest nevezünk, ahol

• Vn egy ábécé, a nemterminális bet¶k ábécéje,

• Vt egy ábécé, a terminális bet¶k ábécéje, amire Vn ∩ Vt = ∅,• S ∈ Vn a kezd® szimbólum,

•H pedig olyan α → β helyettesítési szabályok véges halmaza,melyekben α, β ∈ (Vn∪ Vt)∗, és az α-ban van legalább egy nem-terminális bet¶.

41

42 6. Generatív nyelvtanok

6.2. megjegyzés. Tehát ha V = Vn ∪ Vt, akkorH ⊂ (V ∗ \ V ∗t )× V ∗.

6.3. példa. Az

〈{S,A}, {a, b}, S, {S → aAb, aA→ aaAb, A→ λ}〉négyes egy generatív nyelvtan.

6.4. definíció. LegyenG = 〈Vn, Vt, S,H〉 egy generatív nyelvtan.G-hez hozzárendelünk egy Vt feletti LG nyelvet az ún. G nyelvtanáltal generált nyelvet:

LG = {v ∈ V ∗t | S ⇒∗ v}.6.5. példa. Az 6.3. példabeli nyelvtan esetén érvényes az

S ⇒ aAb⇒ aaAbb⇒ aaaAbbb⇒ aaabbb

levezetés. Könny¶ belátni, hogy e nyelvtan által generált nyelv az

{anbn | n ≥ 1}.

6.1. A generatív nyelvtan és az általa generált nyelv 43

6.6. definíció. Két generatív nyelvtan ekvivalens, ha ugyanazta nyelvet generálják.

6.7. példa. Az 6.3. generatív nyelvtan és a

〈{S}, {a, b}, S, {S → aSb, S → ab}〉generatív nyelvtan is az

{anbn | n ≥ 1}nyelvet generálják, tehát a két generatív nyelvtan ekvivalens egy-mással.

Általános esetben a következ® jelölések lesznek érvényben:

• az a, b, c, d szimbólumok Vt bet¶i,

• az u, v, w, x, y, z szimbólumok V ∗t szavai,

• az A,B,C, . . . , S szimbólumok Vn bet¶i,

• az α, β, γ, δ szimbólumok (Vt ∪ Vn)∗ szavai.

44 6. Generatív nyelvtanok

6.2. A generatív nyelvtanok alkalmazása a programozásban

A programozási nyelvek esetén alapvet® fontosságú, hogy

• a programozó tudja, milyen formai szabályokat kell betartani aprogram írásakor, és hogy

• a fordítóprogram ellen®rizni tudja, betartotta-e a programozó eze-ket a szabályokat.

Most egy olyan generatív nyelvtant adunk meg, ami egy egyszer¶programozási nyelv programjait (szavait) generálja. Tehát ha en-nek a grammatikának a helyettesítési szabályait �gyelembe vesszükegy szó leírásakor, az a programozási nyelvünkben egy program lesz,és a fordítóprogram lefordítja. Ha hibázunk a helyettesítési szabá-lyok alkalmazása során, az eredmény nem program, amit a fordítófelismer.

6.2. A generatív nyelvtanok alkalmazása a programozásban 45

A programozási nyelvünket (Pro) megadó generatív nyelvtan legyena következ®:

Vn { 〈program〉, 〈 utasításlista〉, 〈 utasítás〉,〈értékadó〉, 〈 feltételes〉, 〈 ciklus〉, 〈 blokk〉,〈reláció〉, 〈kifejezés〉, 〈tag〉,〈relációjel〉, 〈m¶veleti jel〉,〈változó〉, 〈 konstans〉 }

Vt { ;, :=, if, then, else, while, do, begin, end,

<,>,=,+, ∗, x, y, z, 0, 1 }

S 〈program〉

46 6. Generatív nyelvtanok

H {〈program〉 → 〈utasításlista〉〈utasításlista〉 → 〈utasítás〉 | 〈utasítás〉 ; 〈utasításlista〉〈utasítás〉 → 〈értékadó〉 | 〈feltételes〉 | 〈ciklus〉 | 〈blokk〉〈értékadó〉 → 〈változó〉 := 〈kifejezés〉〈feltételes〉 → if 〈reláció〉 then 〈utasítás〉 else 〈utasítás〉〈ciklus〉 → while 〈reláció〉 do 〈utasítás〉〈blokk〉 → begin 〈utasításlista〉 end

〈reláció〉 → 〈kifejezés〉 〈relációjel 〉 〈kifejezés〉〈kifejezés〉 → 〈tag〉 | ( 〈kifejezés〉〈m¶veleti jel〉〈kifejezés〉 )〈tag〉 → 〈változó〉 | 〈konstans〉〈relációjel〉 → < |> |=〈m¶veleti jel〉 → + | ∗〈változó〉 → x | y | z〈konstans〉 → 0 | 1}

6.2. A generatív nyelvtanok alkalmazása a programozásban 47

• A generatív nyelvtan által generált Pro programra példa:

x := 0;z := 1;while x < z do

begin x := ((x + 1) + 1);z := (z ∗ x);

end

• Az alábbi jelsorozatok viszont nem programok Pro-ban:

x := 0;z := 〈konstans〉;while x < z do

begin x := ((x + 1) + 1);z := (z ∗ x);

end

48 6. Generatív nyelvtanok

x := 0z := 1;while x < z do

begin x := ((x + 1) + 1);z := (z ∗ x);

end

x := 0;z := 1;while x := z do

begin x := ((x + 1) + 1);z := (z ∗ x);

end

A megírt szöveg ugyanis pontosan akkor Pro program, ha levezet-het® a 〈program〉 nemterninálisból a H helyettesítési szabályok al-kalmazásával, és már csupa terminális szimbólumot tartalmaz.

6.3. A Chomsky-féle nyelvosztályok 49

6.3. A Chomsky-féle nyelvosztályok

Chomsky a generatív nyelvtanok helyettesítési szabályaira vonatkozókülönböz® megszorítások alapján négy nyelvtantípust de�niált.

6.8. definíció. A G = 〈Vn, Vt, S,H〉 generatív nyelvtan

• 0 típusú (mondatszerkezet¶), ha nincs megszorításunk.

• 1 típusú (környezetfügg®), ha H minden eleme αAβ → αγβalakú, ahol A ∈ Vn, α, β, γ ∈ (Vn ∪ Vt)∗ és γ 6= λ. Ez alól csakaz S → λ alakú szabály lehet a kivétel, ekkor azonban S nemszerepelhet egyetlen helyettesítési szabály jobb oldalában sem.

• 2 típusú (környezetfüggetlen), ha H minden eleme A → αalakú, ahol A ∈ Vn, α ∈ (Vn ∪ Vt)∗.• 3 típusú (jobblineáris), ha H minden eleme A→ x vagy A→xB alakú, ahol A,B ∈ Vn, x ∈ V ∗t .

50 6. Generatív nyelvtanok

6.9. példa. • Az 6.3. példában a generatív nyelvtan 0 típusú.

• 1 típusú vagy környezetfügg® nyelvtan:〈{S,A,B,C}, {a, b, c}, S, {S → aSAC, S → abC,CA→ BA,BA→ BC,BC → AC, bA→ bb, C → c}〉• A Pro nyelvet generáló nyelvtan 2 típusú vagy környezetfüggetlen.

• 3 típusú vagy jobblineáris nyelvtan:〈{S}, {0, 1}, S, {S → 0, S → 1, S → 0S, S → 1S}〉

6.10. megjegyzés. Nyilvánvaló, hogy

• minden nyelvtan 0 típusú is,

• minden 3 típusú nyelvtan egyben 2 típusú is,

• de a 2 és 3 típusú nyelvtanok nem mind 1 típusúak, hisz az el®b-biekben az A → λ alakú szabályok el®fordulhatnak, míg az 1típusú nyelvtanokban csak a speciális S → λ esetben.

6.3. A Chomsky-féle nyelvosztályok 51

6.11. tétel. (Üresszólemma)Minden 2 típusú (környezetfüg-getlen) nyelvtanhoz megadható vele ekvivalens 1 típusú (környezet-függ®) nyelvtan.

Bizonyítás vázlat. Legyen G = 〈Vn, Vt, S,H〉 egy környezet-független nyelvtan. Ekvivalens átalakítások sorozatával el fogunkjutni egy G′′′ környezetfügg® nyelvtanhoz. Legyen V = Vn ∪ Vt.

• Vezessünk be egy új S′ nemterminális bet¶t, egy új S′ → Sszabályt, és legyen S helyett S′ az új kezd® bet¶. A G′ = 〈Vn ∪{S′}, Vt, S′, H ∪ {S′→ S}〉 ekvivalens G-vel.

• Ha A → αBβ,B → λ, de A 6→ αβ (A,B ∈ Vn, α, β ∈ V ∗),akkor b®vítsük a szabályok halmazát az A → αβ szabállyal.Az átalakítás ekvivalens nyelvtanhoz vezet. Véges sok ilyen lépésután már nem lehet tovább b®víteni, így eljutunk egy olyan G′′ =〈Vn∪{S′}, Vt, S′, H ′′〉 környezetfüggetlen nyelvtanhoz, amely az

52 6. Generatív nyelvtanok

eredetivel ekvivalens, S′ csak az S′→ S szabályban fordul el®, ésha A → αBβ,B → λ (A,B ∈ Vn, α, β ∈ V ∗), akkor A → αβis teljesül.

• Hagyjuk el H ′′-b®l a B → λ alakú szabályokat, ahol B ∈ Vn,de B 6= S′. A generált nyelv ezzel az átalakítással sem változott.G′′′ viszont már nemcsak 2, hanem 1 típusú is.

6.12. definíció. Egy a V ábécé feletti L nyelv i típusú, ha vanolyan i típusú G = 〈Vn, V, S,H〉 generatív nyelvtan, ami éppen azL nyelvet generálja.

6.13. megjegyzés. Az i típusú nyelvek osztályát jelölje Li. A be-vezetett nyelvosztályokat Chomsky-féle nyelvosztályoknak ne-vezzük. Bizonyítható, hogy a

L3 ⊂ L2 ⊂ L1 ⊂ L0tartalmazások érvényesek. Ez a Chomsky-féle nyelvhierarchia.

6.3. A Chomsky-féle nyelvosztályok 53

6.14. definíció. Egy A → B (A,B ∈ Vn) alakú helyettesítésiszabályt átnevezésnek nevezünk.

6.15. lemma.Minden i típusú nyelvtanhoz megadható vele ekvi-valens átnevezéseket nem tartalmazó i típusú nyelvtan.

Bizonyítás vázlat. Legyen G = 〈Vn, Vt, S,H〉. Ekvivalens át-alakításokkal eljutunk egyG′′′ = 〈Vn, Vt, S,H ′′′〉 átnevezéseket nemtartalmazó ugyanolyan típusú nyelvtanhoz.

• Ha az A → B ∈ H és B → C ∈ H (A,B,C ∈ Vn), akkorvegyük fel a helyettesítési szabályok közé azA→ C átnevezéseketis, mindaddig, amíg H b®víthet®.

• HaA→ B ∈ H ′ ésB → α ∈ H (A,B ∈ Vn, de α 6∈ Vn), akkorvegyük fel a helyettesítési szabályok közé az A→ α szabályokat.

• Legyen H ′′′ azon H ′′-beli szabályok halmaza, melyek nem átne-vezések. A nyelvtan típusa és a generált nyelv nem változott.

7. fejezet

Reguláris nyelvek

7.1. A determinisztikus véges automata mint felismer®

7.1. definíció. Az A = 〈Q, V, δ, q0, Qv〉 rendezett ötöst deter-minisztikus véges automatának nevezzük, ahol

• Q 6= ∅ véges halmaz, elemei az ún. bels® állapotok,

• V egy bemen® ábécé,

• δ : Q× V → Q az állapotátmenet-függvény,

• q0 ∈ Q a kezd®állapot,

• Qv ⊆ Q a végállapotok halmaza.

54

7.1. A determinisztikus véges automata mint felismer® 55

7.1. ábra. A véges automata mint felismer®

Egy A determinisztikus véges automata m¶ködését a következ®-képpen írhatjuk le:Legyen a1a2 . . . an ∈ V ∗ a bemen® szó.1. lépés: A q0 kezd®állapotban az automata beolvassa a bemen® szó

els® bet¶jét, aminek hatására a p1 = δ(q0, a1) állapotba kerül.

2. lépés: A p1 állapotban az automata beolvassa a bemen® szó kö-vetkez® bet¶jét, aminek hatására a p2 = δ(p1, a2) állapotba kerül.

...

n. lépés: A pn−1 állapotban az automata beolvassa a bemen® szóutolsó bet¶jét, aminek hatására a pn = δ(pn−1, an) állapotbakerül.Ha pn ∈ Qv, akkor az A automata felismerte (elfogadta) az

a1a2 . . . an bemen® szót, ha pedig pn 6∈ Qv, akkor az A nem is-

56 7. Reguláris nyelvek

merte fel (visszautasította) a bemen® szót.

7.2. példa. Tekintsük a 〈{q0, q1, q2}, {0, 1}, δ, q0, {q2}〉 automatát,melynek állapotátmenet-függvénye a következ®:

δ(q0, 0) = q0 δ(q0, 1) = q1δ(q1, 0) = q0 δ(q1, 1) = q2δ(q2, 0) = q0 δ(q2, 1) = q2

• A 011011 szóra az automata bels® állapotainak a

q0, q0, q1, q2, q0, q1, q2

sorozatát kapjuk. Az automata ezt a szót felismerte, hiszen q2végállapot.

• Az 1101 bemen® szóra az automata bels® állapotainak a

q0, q1, q2, q0, q1

sorozatát kapjuk. q1 nem végállapot, így az automata ezt a szótnem ismerte fel.

7.1. A determinisztikus véges automata mint felismer® 57

7.3. definíció. Legyen A = 〈Q, V, δ, q0, Qv〉 egy determinisztikusvéges automata. Az

LA = {v ∈ V ∗ | A felismerte v-t }V feletti nyelvet az A automata által felismert nyelvnek nevez-zük.

7.4. példa. A 7.2. példabeli automata által felismert nyelv:

L = {v11 | v ∈ {0, 1}∗}.

7.5. definíció. Két determinisztikus véges automata ekvivalens,ha ugyanazt a nyelvet ismerik fel.

58 7. Reguláris nyelvek

7.6. definíció. Egy determinisztikus véges automata minimális,ha az állapotainak száma nem haladja meg egyetlen, vele ekvivalensdeterminisztikus véges automata állapotainak számát.

7.7. definíció. Egy determinisztikus véges automata p és q álla-pota ekvivalens egymással, ha tetsz®leges bemen® szóra

1. vagy mindkét állapotból végállapotba jutunk,

2. vagy egyik állapotból sem jutunk végállapotba.

Ha a két állapot nem ekvivalens egymással, akkor a két állapotmeg-különböztethet®.

7.1. A determinisztikus véges automata mint felismer® 59

Módszer determinisztikus véges automaták minimalizálására.

1. Jelöljük meg ∗-gal az összes olyan állapotpárt, melyben az egyikvégállapot, a másik pedig nem.

2. Minden jelöletlen állapotpárhoz rendeljünk egy üres listát.

3. Válasszunk egy jelöletlen állapotpárt. Minden bet¶re gy¶jtsükössze, hogy az állapotátmenet során milyen állapotpárokat nyer-nénk a pár állapotaiból. Ha a nyert állapotpárok között

(a) van ∗-gal jelölt, jelöljük meg ∗-gal a vizsgált jelöletlen párt éshozzá a listában tartozó párokat.

(b) nincs ∗-gal jelölt, akkor írjuk be a nyert állapotpárokhoz tar-tozó listákba a vizsgált állapotpárt (amikor pár állapotai kü-lönböz®ek).

4. Ha már nincs ki nem választott jelöletlen állapotpár, vonjuk összea jelöletlen (ekvivalens) állapotokat, egyébént folytassuk 3-mal.

60 7. Reguláris nyelvek

7.2. A nemdeterminisztikus véges automata

7.8. definíció. Az A = 〈Q, V, δ, q0, Qv〉 rendezett ötöst nemde-terminisztikus véges automatának nevezzük, ahol

• Q 6= ∅ véges halmaz, elemei az ún. bels® állapotok,

• V egy bemen® ábécé,

• δ : Q× V → P(Q) az állapotátmenet-függvény,

• q0 ∈ Q a kezd®állapot,

• Qv ⊆ Q a végállapotok halmaza.

7.2. A nemdeterminisztikus véges automata 61

Egy A nemdeterminisztikus véges automata m¶ködése:Legyen a1a2 . . . an ∈ V ∗ a bemen® szó.

1. lépés: A q0 kezd®állapotban az automata beolvassa a bemen® szóels® bet¶jét, aminek hatására a {p11, p12, . . . , p1k1} = δ(q0, a1)leheteséges állapotok valamelyikébe kerül. Legyen

Q1 = {p11, p12, . . . , p1k1}.

2. lépés: Ha a p1i ∈ Q1 állapotba került, az automata beolvassa abemen® szó következ® bet¶jét, aminek hatására aQ(i) = δ(p1i, a2)állapotok valamelyikébe kerül (1 ≤ i ≤ k1). Tehát az a2 beolva-sásának hatásásra az automata a

Q2 = Q(1) ∪Q(2) ∪ . . . ∪Q(k1)

állapotok egyikében van....

62 7. Reguláris nyelvek

n. lépés: Az el®z® lépés eredményeképpen lehetséges valamely p ál-lapotban az automata beolvassa a bemen® szó utolsó bet¶jét,aminek hatására a δ(p, ak) állapotok valamelyikébe kerül. Ezenlehetséges állapotok halmaza legyen Qn.

Ha van olyan p ∈ Qv, hogy p ∈ Qn, akkor az A automata felis-merte (elfogadta) az a1a2 . . . an bemen® szót, egyébként az A nemismerte fel (visszautasította) a bemen® szót.

7.2. A nemdeterminisztikus véges automata 63

7.9. példa. Tekintsük a 〈{q0, q1}, {a, b}, δ, q0, {q1}〉 automatát, mely-nek állapotátmenet-függvénye a következ®:

δ(q0, a) = {q0} δ(q0, b) = {q0, q1}δ(q1, a) = {q0, q1} δ(q1, b) = ∅

• A aaa szót nem ismeri fel, mert az automata a szó beolvasásánakhatására a q0 állapotban marad.

• Az baba bemen® szót felismeri, mert az automata a {q0, q1} bels®állapotok valamelyikébe kerül.

7.10. definíció. LegyenA = 〈Q, V, δ, q0, Qv〉 egy nemdeterminisz-tikus véges automata. Az

LA = {v ∈ V ∗ | A felismerte v-t }

V feletti nyelvet az A automata által felismert nyelvnek nevez-zük.

64 7. Reguláris nyelvek

7.11. tétel. A nemdeterminisztikus véges automatákkal felismer-het® nyelvek osztálya megegyezik a determinisztikus véges automa-tákkal felismerhet® nyelvek osztályával.

Bizonyítás vázlat. LegyenA = 〈Q, V, δ, q0, Qv〉 egy nemdeterminisz-tikus véges automata. Az A′ = 〈Q′, V, δ′, q′0, Q

′v〉 determinisztikus

véges automata, ahol

• Q′ = P(Q),• q′0 = {q0}• Q′v = {H ⊆ Q | H ∩Qv 6= ∅}• δ′ : Q′ × V → Q′ pedig tetsz®leges H ∈ Q′ és a ∈ V eseténδ′(H, a) =

⋃q∈H δ(q, a),

ugyanazt a nyelvet ismeri fel, amit A.

7.2. A nemdeterminisztikus véges automata 65

7.12. példa. A 7.9. pédabeli nemdeterminisztikus véges automatá-hoz konstruáljuk meg a megfelel® determinisztikus véges automatát.Legyenek

• Q′ = {∅, {q0}, {q1}, {q0, q1}},• q′0 = {q0},• Q′v = {{q1}, {q0, q1}}• és

δ′(∅, a) = ∅ δ(∅, b) = ∅δ({q0}, a) = {q0} δ({q0}, b) = {q0, q1}δ({q1}, a) = {q0, q1} δ({q1}, b) = ∅δ({q0, q1}, a) = {q0, q1} δ({q0, q1}, b) = {q0, q1}

66 7. Reguláris nyelvek

7.3. A 3 típusú nyelvek osztályának jellemzése

Ebben a részben megmutatjuk, hogy tetsz®leges V ábécé esetén a Vfeletti

• 3 típusú nyelvek osztálya,

• véges automatával felismerhet® nyelvek osztálya,

• reguláris nyelvek osztálya

egymással megegyeznek.

7.13. lemma. Egy átnevezéseket nem tartalmazó 3 típusú nyelv-tanhoz megadható vele ekvivalens olyan 3 típusú nyelvtan, melybenminden szabály A → aB vagy A → λ alakú, ahol A,B ∈ Vn ésa ∈ Vt.Bizonyítás vázlat. Legyen G = 〈Vn, Vt, S,H〉 egy átnevezése-ket nem tartalmazó 3 típusú nyelvtan. Konstruáljuk meg a G′ =

7.3. A 3 típusú nyelvek osztályának jellemzése 67

〈V ′n, Vt, S,H ′〉 3 típusú nyelvtant a következ®képpen:

•Minden H-beli A → a1a2 . . . anB helyettesítési szabályt, aholn > 1, a1, a2, . . . , an ∈ Vt, cseréljünk ki az

A→ a1A1, A1→ a2A2, . . . , An−1→ anB

szabályokra, ahol A1, A2, . . . , An−1 új nemterminális szimbólu-mok.

•Minden H-beli A→ a1a2 . . . an helyettesítési szabályt, ahol n >1, a1, a2, . . . , an ∈ Vt, cseréljünk ki az

A→ a1A1, A1→ a2A2, . . . , An−1→ anAn, An→ λ

szabályokra, ahol A1, A2, . . . , An új nemterminális szimbólumok.

Legyen továbbá V ′n a Vn és az el®bbi konstrukció során keletkezettúj nemterminálisok halmazának egyesítése.

68 7. Reguláris nyelvek

7.14. tétel. Tetsz®leges 3 típusú nyelv felismerhet® nemdetermi-nisztikus véges automatával.

Bizonyítás vázlat. Ha L 3 típusú nyelv, akkor tudunk konst-ruálni olyan nemdeterminisztikus véges automatát, amely felismeriaz L nyelvet. Legyen L a G = 〈Vn, Vt, S,H〉 3 típusú nyelvtannalgenerálható. A 7.13. lemma értelmében feltehet®, hogy G mindenszabálya A → aB vagy A → λ alakú. Az A = 〈Vn, Vt, δ, S,Qv〉nemdeterminisztikus véges automata, ahol

• Qv = {A ∈ Vn | A→ λ ∈ H},• δ(A, a) = {B ∈ Vn | A→ aB ∈ H}.felismeri az L nyelvet.

7.3. A 3 típusú nyelvek osztályának jellemzése 69

Az általánosított véges automata gráfjának éleit reguláris kife-jezésekkel címkézzük meg. Egy ilyen gráfban minden út meghatározegy reguláris nyelvet reprezentáló reguláris kifejezést. Az általánosí-tott automata által felismert nyelv a kezd®állapotból induló, végál-lapotba vezet® utak által reprezentált nyelvek összege.Az általánosított automatákon ekvivalens átalakításokat hajha-

tunk végre, melyek csökkentik az élek számát, de nem módosítjáka felismert nyelvet. Elérhetjük, hogy a gráfnak egyetlen éle legyen,mely címkéje éppen az eredeti automata által felismert nyelvet rep-rezentáló reguláris kifejezés.

70 7. Reguláris nyelvek

7.15. tétel. (Kleene tétele) Tetsz®leges determinisztikus vé-ges automatával felismerhet® nyelv reguláris.

Bizonyítás vázlat.Mivel a nyelv determinisztikus véges auto-matával felismerhet®, meg tudjuk adni ennek az automatának a gráf-ját.

• λ-átmenetek segítségével átalakítjuk az automatát úgy, hogy egyet-len, a kezd®állapottól különböz® végállapota legyen.

• Amíg a gráf több élt tartalmaz, ekvivalens átalakításokat hajtunkvégre.

A végül megkapott egyetlen él címkéje az eredeti automata által felis-mert nyelvet reprezentáló reguláris kifejezés. Tehát a nyelv reguláris.

7.3. A 3 típusú nyelvek osztályának jellemzése 71

7.16. tétel. Tetsz®leges reguláris nyelv generálható 3 típusú nyelv-tannal.

Bizonyítás vázlat. Legyen a reguláris nyelvet reprezentáló re-guláris kifejezés R. Ha

• R = ∅, akkor LR = ∅ generálható G = 〈{S}, V, S, ∅〉-vel.• R = a, akkor LR = {a} generálható a G = 〈{S}, V, S, {S →a}〉 nyelvtannal.• R = (R1 + R2), akkor LR = LR1

+ LR2. Tegyük fel, hogy az

LR1és LR2

reguláris nyelvek generálhatóak 3 típusú nyelvtannal,legyenek ezek G1 = 〈V1, V, S1, H1〉, G2 = 〈V2, V, S2, H2〉, aholV1 ∩ V2 = ∅. Legyen

G = 〈V1 ∪ V2 ∪ {S}, V, S,H1 ∪H2 ∪ {S → S1, S → S2}〉.

Ekkor nyilvánvaló, hogy G is 3 típusú nyelvtan és LG = LR.

72 7. Reguláris nyelvek

• R = (R1R2), akkor LR = LR1LR2

. Tegyük fel, hogy az LR1és LR2

reguláris nyelvek generálhatóak 3 típusú nyelvtannal, le-gyenek ezek G1 = 〈V1, V, S1, H1〉, G2 = 〈V2, V, S2, H2〉, aholV1 ∩ V2 = ∅. Legyen most

G = 〈V1 ∪ V2, V, S1, H〉,ahol H a legsz¶kebb olyan szabályhalmaz, melyre

� ha A→ xB ∈ H1, akkor A→ xB ∈ H ,

� ha A→ x ∈ H1, akkor A→ xS2 ∈ H ,

�H2 minden eleme H-nak is eleme.

Ekkor nyilvánvaló, hogy G is 3 típusú nyelvtan és LG = LR.

7.3. A 3 típusú nyelvek osztályának jellemzése 73

• R = (R∗1), akkor LR = L∗R1. Tegyük fel, hogy az LR1

regu-láris nyelv generálható 3 típusú nyelvtannal, legyen ez G1 =〈V1, V, S1, H1〉. Legyen

G = 〈V1 ∪ {S}, V, S,H〉,ahol H a legsz¶kebb olyan szabályhalmaz, melyre

� S → S1, S → λ ∈ H ,

� ha A→ xB ∈ H1, akkor A→ xB ∈ H ,

� ha A→ x ∈ H1, akkor A→ xS ∈ H .

Ekkor nyilvánvaló, hogy G is 3 típusú nyelvtan és LG = LR.

74 7. Reguláris nyelvek

7.17. tétel. (Pumpálási lemma) Legyen L reguláris nyelv. Ek-kor megadható olyan n ≥ 1 természetes szám, hogy minden olyanx ∈ L, amely `(x) ≥ n felírható x = uvw alakban,

1. `(uv) ≤ n,

2. `(v) ≥ 1,

3. minden i = 0, 1, 2, . . . természetes számra az uviw ∈ L.

A lemma szükséges feltételt ad meg arra, hogy egy nyelv regulárislegyen.

7.3. A 3 típusú nyelvek osztályának jellemzése 75

7.18. következmény. Van olyan környezetfüggetlen nyelv, ame-lyik nem reguláris.

Bizonyítás vázlat. Tekintsük a

G = 〈{S}, {a, b}, S, {S → aSb, S → ab}〉környezetfüggetlen nyelvtant és az általa generált

LG = {ambm|m ≥ 1}nyelvet. Meg lehet mutatni, hogy a pumpálási lemmában megfo-galmazott szükséges feltételek nem teljesülnek LG-re, tehát a nyelvnem reguláris.Tegyük fel ugyanis, hogy teljesülnek ezek a feltételek, és n a megad-ható természetes szám. Legyen m = n. Ekkor `(anbn) = 2n ≥ n,így felírható uvw alakban, ahol `(uv) ≤ n, de `(v) ≥ 1. Ezértv = al alakú, ahol l ≥ 1. Tehát uviw 6∈ L, ha i 6= 1.

76 7. Reguláris nyelvek

7.19. példa. Az {akba2k|k ≥ 0} nyelv nem reguláris.Tegyük fel ugyanis, hogy reguláris, ekkor a pumpálási lemmábanmegfogalmazott tulajdonságú a nyelv és legyen n a lemma szerintmegadható természetes szám. Legyen k = n. Ekkor `(anba2n) =3n+1 ≥ n, így felírható uvw alakban, ahol `(uv) ≤ n, de `(v) ≥ 1.Ezért v = al alakú, ahol l ≥ 1. Tehát uviw 6∈ L, ha i 6= 1, mert pl.a keletkez® szóban elöl n®tt az a-k száma, de hátul nem változott.

7.20. példa. Az {akblam|m > k + l} nyelv nem reguláris.Tegyük fel ugyanis, hogy reguláris, ekkor a pumpálási lemmábanmegfogalmazott tulajdonságú a nyelv és legyen n a lemma szerintmegadható természetes szám. Legyen k = l = n és m = 2n + 1.Ekkor `(anbna2n+1) = 4n+ 1 ≥ n, így felírható uvw alakban, ahol`(uv) ≤ n, de `(v) ≥ 1. Ezért v = al alakú, ahol l ≥ 1. Tehátuviw 6∈ L, ha i > 1, mert a keletkez® szóban hátul az a száma nemváltozik.

8. fejezet

Környezetfüggetlen nyelvek

8.1. Levezetési fák

8.1. definíció. LegyenG = 〈Vn, Vt, S,H〉 környezetfüggetlen nyelv-tan. G-beli levezetési fának nevezzük azokat a fagráfokat, melyek

• csúcsai Vn ∪ Vt ábácé bet¶i,

• gyökere az S kezd® szimbólum, és

• ha az A ∈ Vn csúcs gyermekei balról jobbra rendreX1, X2, . . . , Xk ∈ Vn ∪ Vt, akkor A→ X1X2 . . . Xk ∈ H .

A levezetési fa eredménye az a szó, amelyet úgy kapunk, hogy afa leveleit jelöl® bet¶ket balról jobbra haladva egymás mellé írjuk.

77

78 8. Környezetfüggetlen nyelvek

8.2. példa. Vizsgáljuk a

G = 〈{S,A}, {a, b, c,+, ·, (, )}, S,{S → S + S, S → A · A,A→ (S + S), S → a|b|c, A→ a|b|c}〉

környezetfüggetlen nyelvtant. Határozzuk meg a c + (a + b) · b szóG-beli levezetési fáját.

8.3. tétel. Legyen G = 〈Vn, Vt, S,H〉 környezetfüggetlen nyelv-tan. Tetsz®leges v ∈ Vt szóra S ⇒∗ v pontosan akkor, ha van olyanG-beli levezetési fa, melynek eredménye v.

8.1. Levezetési fák 79

8.4. tétel. (Bar-Hillel-lemma) Legyen L környezetfüggetlennyelv. Ekkor megadható olyan n ≥ 1 természetes szám, hogy min-den v ∈ L esetén, ha `(v) > n, akkor vannak olyan u, x, w, y, z ∈ Lszavak, melyekre az alábbi feltételek teljesülnek:

1. v = uxwyz,

2. `(xwy) ≤ n, `(w) ≥ 1, `(xy) ≥ 1, és

3. minden i = 0, 1, 2, . . . természetes számra az uxiwyiz ∈ L.

8.5. következmény. Van olyan környezetfügg® nyelv, amely nemkörnyezetfüggetlen.

Bizonyítás vázlat. Az L = {anbncn | n ≥ 1} nyelvet generáljaa 6.9. példában említett környezetfügg® nyelvtan. Be lehet látni a8.4. tétel alapján, hogy környezetfüggetlen nyelvtannal nem generál-ható.

80 8. Környezetfüggetlen nyelvek

8.2. Chomsky-féle normál alak

8.6. definíció. Egy környezetfüggetlen nyelvtan Chomsky-féle nor-mál alakú, ha minden szabálya

vagy A→ a, vagy A→ BC

alakú, ahol A,B,C ∈ Vn és a ∈ Vt.

8.7. tétel.Minden olyan környezetfüggetlen nyelvtanhoz, mely-ben a szabályok jobb oldalán nem fordul el® az üres szó, van veleekvivalens Chomsky-féle normál alakú nyelvtan.

Bizonyítás vázlat. Legyen 〈Vn, Vt, S,H〉 környezetfüggetlen nyelv-tan. Ekvivalens átalakításokkal eljutunk egy 〈V ′′n , Vt, S,H ′′′〉 Chomsky-féle normál alakú nyelvtan

• Küszöböjük ki az átnevezéseket (H ′).

8.2. Chomsky-féle normál alak 81

•Minden egyes ai ∈ Vt terminális szimbólumhoz, mely valamelyhelyettesítési szabály jobb oldalán nem egyedül szerepel, vezes-sünk be új Ai 6∈ Vn nemterminális szimbólumot, és legyen

V ′n = Vn ∪ {A1, . . . , Ak}.A H ′′-beli szabályokat úgy kapjuk a H ′-beliekb®l, hogy mindenH ′-beli szabályban ai helyére Ai-t írunk és felvesszük az Ai→ aiúj szabályokat minden 1 ≤ i ≤ k-ra.

• Az A→ B1B2 . . . Bm (m > 2) alakú szabályokat helyettesítsük

A → B1C1

C1 → B2C2...

Cm−2 → Bm−1Bm

szabályokkal H ′′′-ben, ahol V ′′n = V ′n ∪ {C1, . . . , Cm−2}.

82 8. Környezetfüggetlen nyelvek

8.8. példa. Adjuk meg az

〈{S,D} , {a, b, c} , S, {S → aSc|D,D → bD|b}〉nyelvtannal ekvivalens Chomsky-normálalakú nyelvtant:

• a három terminális miatt három új nemterminálist vezetünk be:

〈{S,A,B,C,D} , {a, b, c} , S,{S → ASC|D,D → BD|b, A→ a,B → b, C → c}〉

• a jobb oldalukon kett®nél több nemterminálist tartalmazó szabályok kiküszö-

bölése:

〈{S,A,B,C,D,E} , {a, b, c} , S,{S → AE|D,E → SC,D → BD|b, A→ a,B → b, C → c}〉

• az átnevezések kiküszöbölése:

U(D) = {S} nemterminálisok azon halmaza, melyekb®l levezethet® D

〈{S,A,B,C,D,E} , {a, b, c} , S,{S → AE|BD|b, E → SC,D → BD|b, A→ a,B → b, C → c}〉

8.2. Chomsky-féle normál alak 83

8.9. példa. Adjuk meg az

〈{S,A} , {a, b} , S, {S → A,A→ AbA|a〉

nyelvtannal ekvivalens Chomsky-normálalakú nyelvtant:

• terminálisok helyett nemterminálisok:

〈{S,A,B} , {a, b} , S, {S → A,A→ ABA|a,B → b〉

• a jobb oldalukon kett®nél több nemterminálist tartalmazó szabályok kiküszö-

bölése:

〈{S,A,B,C} , {a, b} , S, {S → A,A→ AC|a, C → BA,B → b〉

• az átnevezések kiküszöbölése:

U(A) = {S} nemterminálisok azon halmaza, melyekb®l levezethet® A

〈{S,A,B,C} , {a, b} , S, {S → AC|a,A→ AC|a, C → BA,B → b〉

84 8. Környezetfüggetlen nyelvek

8.10. példa. Alakítsuk Chomsky-normálformára a helyettesítési szabályok alábbi

halmazát:

{S → AaA|CA|BaB,A→ aaBa|CDA|aa|DC,B → bB|bAB|bb|aS,C → Ca|bC|D,D → bD|λ}

• az üres szót tartamazó szabályok kiküszöbölése:

{A→ CA|C,C → λ,D → b} ⇒ {S → A,A→ DA|D|λ,C → a|b} ⇒{S → aA|Aa|a|C|λ,A→ CD} ⇒ {B → a}{S → AaA|CA|BaB|A|aA|Aa|a|C,A→ aaBa|CDA|aa|DC|CA|C|DA|D|CD,B → bB|bAB|bb|aS|a,C → Ca|bC|D|a|b,D → bD|b}• az átnevezések megszüntetése

{S → AaA|CA|BaB|aaBa|CDA|aa|DC|Ca|bC|bD|a|b|DA|CD|aA|Aa,A→ aaBa|CDA|aa|DC|CA|Ca|bC|bD|a|b|DA|CD,B → bB|bAB|bb|aS|a,C → Ca|bC|bD|a|b,D → bD|b}

8.2. Chomsky-féle normál alak 85

• terminálisok helyett nemterminálisok:

{S → AXA|CA|BXB|XXBX|CDA|XX|DC|CX|Y C|Y D|a|b|DA|CD|XA|AX,A→ XXBX|CDA|XX|DC|CA|CX|Y C|Y D|a|b|DA|CD,B → Y B|Y AB|Y Y |XS|a,C → CX|Y C|Y D|a|b,D → Y D|b,X → a, Y → b}• csak két nemterminális a jobboldalon:

{S → AZ|CA|BU |VW |CP |XX|DC|CX|Y C|Y D|a|b|DA|CD|XA|AX,A→ VW |CP |XX|DC|CA|CX|Y C|Y D|a|b|DA|CD,B → Y B|Y AB|Y Y |XS|a,C → CX|Y C|Y D|a|b,D → Y D|b,X → a, Y → b, Z → XA,U →XB, V → XX,W → BX,P → DA}

86 8. Környezetfüggetlen nyelvek

8.3. A Cocke-Younger-Kasami algoritmus

Legyen a környezetfüggetlen nyelvtanunk Chomsky-féle normál alakú.Keressük egy adott bemen® szóhoz a levezetési fáját. Egy n hosszú-ságú bemen® szó esetén a levezetési fa lehetséges csúcsait tartalmazócellák olyan háromszög alakú alakzatba rendezhet®k,

• melynek alsó sora n cellát, és minden további sora eggyel kevesebbcellát tartamaz, mint az alatta lev®,

• az alsó sorában a cellák � a bemen® szó bet¶sorrendjében � azonnemterminális szimbólumokat tartalmazzák, melyek a bemen® szóegyes bet¶ivel a helyettesítési szabályok szerint helyettesíthet®k.

• minden további cellába azon helyettesítési szabályok bal oldalaikerülnek, melyek jobb oldalán álló két nemterminális szimbóluma cella alatti háromszög alakzat két különböz® szárán lev® �meg-felel®� két cellában rendre megtalálhatók.

8.3. A Cocke-Younger-Kasami algoritmus 87

Ha a legfels® sorban szerepl® egyetlen cellába bekerül az S kez-d®szimbólum, akkor a bemen® szó a nyelvtan által genereált nyelvszava, és az alakzatból leolvasható a szó minden levezetési fája.

88 8. Környezetfüggetlen nyelvek

8.4. Nemdeterminisztikus veremautomaták

8.11. definíció. Az A = 〈Q, V,W, δ, q0, z0, Qv〉 rendezett hetestnemdeterminisztikus veremautomatának nevezzük, ahol

• Q 6= ∅ véges halmaz, elemei állapotok,

• V a bemen® ábécé,

•W a veremábécé,

• δ : Q × (V ∪ {λ}) × W → P(Q × W ∗) az állapotátmenet-függvény,

• q0 ∈ Q a kezd®állapot,

• z0 ∈ W a kezd®jel a veremmemóriában,

• Qv ⊆ Q a végállapotok halmaza.

8.4. Nemdeterminisztikus veremautomaták 89

8.12. definíció. Az A veremautomata pillanatnyi kon�guráció-ján értünk egy (q, x1x2 . . . xn, y1y2 . . . ym) hármast, ahol

• q ∈ Q a veremautomata pillanatnyi bels® állapota,

• x1x2 . . . xn ∈ V ∗ a bemen® szó még be nem olvasott része,

• y1y2 . . . ym ∈ W ∗ a veremmemória pillanatnyi tartalma.

8.13. definíció. AzA veremautomata (q, x1x2 . . . xn, y1y2 . . . ym)kon�gurációja átvihet®

• a (q′, x2 . . . xn, y1y2 . . . ym−1w) kon�gurációba, ha (q′, w) ∈ δ(q, x1, ym),• a (q′, x1x2 . . . xn, y1y2 . . . ym−1w) kon�gurációba, ha (q′, w) ∈δ(q, λ, ym).

90 8. Környezetfüggetlen nyelvek

8.14. definíció. Azt mondjuk, hogy az A veremautomata végál-lapottal felismer egy v ∈ V ∗ bemen® szót, ha van A-beli kon�gu-rációknak egy olyan véges sorozata, melynek

• els® eleme (q0, v, z0),

• utolsó eleme (q, λ, w), ahol q ∈ Qv, w ∈ W ∗, és• a sorozatban az utolsót kivéve minden kon�guráció átvihet® az ®tkövet®be.

8.15. definíció. Azt mondjuk, hogy az A veremautomata üresveremmel felismer egy v ∈ V ∗ bemen® szót, ha van A-beli kon�-gurációknak egy olyan véges sorozata, melynek

• els® eleme (q0, v, z0),

• utolsó eleme (q, λ, λ), ahol q tetsz®leges állapot, és

• a sorozatban az utolsót kivéve minden kon�guráció átvihet® az ®tkövet®be.

8.4. Nemdeterminisztikus veremautomaták 91

8.16. példa. Tekintsük a 〈{q0, q1, q2}, {a, b}, {0, 1}, δ, q0, 0, {q0}〉veremautomatát, melynek állapotátmenet-függvénye a következ®:

δ(q0, λ, 0) = {(q0, λ)} δ(q1, a, 1) = {(q1, 11)} δ(q2, b, 1) = {(q2, λ)}δ(q0, a, 0) = {(q1, 01)} δ(q1, b, 1) = {(q2, λ)} δ(q2, λ, 0) = {(q0, λ)}• Az aabb szóra a veremautomata kon�gurációinak a

(q0, aabb, 0), (q1, abb, 01), (q1, bb, 011), (q2, b, 01), (q2, λ, 0), (q0, λ, λ)

sorozatát kapjuk. A veremautomata ezt a szót végállapottal is,üres veremmel is felismerte.

• Az abaab bemen® szóra a veremautomata kon�gurációinak a

(q0, abaab, 0), (q1, baab, 01), (q2, aab, 0)

sorozatát kapjuk, így a veremautomata ezt a szót nem ismertefel.

92 8. Környezetfüggetlen nyelvek

8.17. definíció. AzA veremautomata által végállapottal felismertszavak halmazát az A által végállapotokkal felismert nyelvnek,az üres veremmel felismert szavak halmazát az A által üres verem-mel felismert nyelvnek nevezzük.

8.18. tétel. Egy nyelv pontosan akkor ismerhet® fel valamely A1nemdeterminisztikus veremautomatával üres veremmel, ha felismer-het® valamely A2 nemdeterminisztikus veremautomatával végálla-potokkal.

8.4. Nemdeterminisztikus veremautomaták 93

8.19. példa. Tekintsük a 〈{q0, q1, q2}, {a, b}, {z0, a, b}, δ, q0, z0, {q2}〉veremautomatát, melynek állapotátmenet-függvénye a következ®:

δ(q0, a, z0) = {(q1, z0a)} δ(q1, a, a) = {(q1, a), (q2, a)}δ(q0, b, z0) = {(q1, z0b)} δ(q1, b, a) = {(q1, a)}

δ(q1, a, b) = {(q1, b)}δ(q1, b, b) = {(q1, b), (q2, b)}

Ez a veremautomata az {ava, bvb | v ∈ {a, b}∗} nyelvet ismeri felvégállapottal.

94 8. Környezetfüggetlen nyelvek

8.20. példa. Tekintsük a 〈{q0, q1, q2}, {a, b, c}, {Z0, X}, δ, q0, Z0, {q2}〉veremautomatát, melynek állapotátmenet-függvénye a következ®:

δ(q0, a, Z0) = {(q0, Z0X)}δ(q0, b, Z0) = {(q0, Z0X)}δ(q0, c, Z0) = {(q1, Z0)}δ(q0, a,X) = {(q0, XX)} δ(q1, a,X) = {(q1, λ)}δ(q0, b,X) = {(q0, XX)} δ(q1, b,X) = {(q1, λ)}δ(q0, c,X) = {(q1, X)}

δ(q1, λ, Z0) = {(q2, Z0)}Ez a veremautomata az {v1cv2 | l(v1) = l(v2), v1, v2 ∈ {a, b}∗} nyel-vet ismeri fel végállapottal.

8.4. Nemdeterminisztikus veremautomaták 95

8.21. példa. Adjunk meg az{anb2n | n ≥ 0

}nyelvet végállapottal

elfogadó veremautomatát!

〈{q0, q1, q2, q3}, {a, b}, {Z0, X}, δ, q0, Z0, {q3}〉,ahol az állapotátmenet-függvény a következ®:

δ(q0, a, Z0) = {(q1, Z0XX)} δ(q1, a,X) = {(q1, XXX)}δ(q1, b,X) = {(q2, λ)} δ(q2, b,X) = {(q2, λ)}

δ(q0, λ, Z0) = {(q3, Z0)} δ(q2, λ, Z0) = {(q3, Z0)}

96 8. Környezetfüggetlen nyelvek

8.22. példa. Adjunk meg az {anv | n ≥ 0, v ∈ {a, b}∗, l(v) ≤ n}nyelvet végállapottal elfogadó veremautomatát!

〈{q0, q1, q2, q3}, {a, b}, {Z0, X}, δ, q0, Z0, {q2}〉,ahol az állapotátmenet-függvény a következ®:

δ(q0, a, Z0) = {(q1, Z0X)} δ(q1, a,X) = {(q1, XX), (q2, λ)} δ(q2, a,X) = {(q2, λ)}δ(q1, b,X) = {(q2, λ)} δ(q2, b,X) = {(q2, λ)}

δ(q0, λ, Z0) = {(q2, Z0)} δ(q2, a, Z0) = {(q3, Z0)}δ(q2, b, Z0) = {(q3, Z0)}

8.4. Nemdeterminisztikus veremautomaták 97

8.23. tétel. Tetsz®leges környezetfüggetlen L nyelvhez van olyanA nemdeterminisztikus veremautomata, amely végállapottal felis-meri az L nyelvet.

Bizonyítás vázlat. Legyen L a G = 〈Vn, Vt, S,H〉 környezet-független nyelvtannal generálható. Az A = 〈{q0, q1, q2}, Vt, Vt ∪Vn∪{Z0}, δ, q0, Z0, {q2}〉 nemdeterminisztikus véges automata, aholδ értelmezése

• δ(q0, λ, Z0) = {(q1, Z0S)},• δ(q1, λ, A) = {(q1, α−1)|A→ α ∈ H minden A ∈ Vn,• δ(q1, a, a) = {(q1, λ)} minden a ∈ Vt-re, és• δ(q1, λ, Z0) = {(q2, Z0)},végállapottal felismeri az L nyelvet.

8.24. tétel. Tetsz®leges nemdeterminisztikus veremautomata ál-tal felismert nyelv környezetfüggetlen.

98 8. Környezetfüggetlen nyelvek

8.25. példa. Az 〈{S,A,B} , {0, 1}, S,H〉 egy környezetfüggetlennyelvtan, ahol a helyettesítési szabályok:{S → SA|AB|1, A→ BS|1, B → SA|0}.Konstruáljunk olyan veremautomatát, amelyik felismeri a nyelvtanáltal generált nyelvet:〈{q0, q1, q2}, {0, 1} ∪ {S,A,B} ∪ {Z0}, δ, q0, Z0, {q2}〉, ahol

δ(q0, λ, Z0) = {(q1, Z0S)} δ(q1, λ, S) = {(q1, AS), (q1, BA), (q1, 1)}δ(q1, λ, A) = {(q1, SB), (q1, 1)}δ(q1, λ, B) = {(q1, AS), (q1, 0)}δ(q1, 0, 0) = {(q1, λ)}δ(q1, 1, 1) = {(q1, λ)}δ(q1, λ, Z0) = {(q2, Z0)}

(q0, 101, Z0)→ (q1, 101, Z0S)→ (q1, 101, Z0AS)→ (q1, 101, Z0A1)→(q1, 01, Z0A)→ (q1, 01, Z0SB)→ (q1, 01, Z0S0)→ (q1, 1, Z0S)→(q1, 1, Z01)→ (q1, λ, Z0)→ (q2, λ, Z0)

8.5. LL(k) elemzés 99

8.5. LL(k) elemzés

Az LL(k) elemzés során a levezetés a kezd®szimbólumból indul. Baloldali levezetést használunk (jelölése ⇒l), azaz minden egyes lépés-nél kicseréljük a legbaloldalibb nemterminálist (legyen most ez A)valamelyik szabály alapján. Ha egyetlen A → β alakú szabályunkvan, akkor ez a csere egyértelm¶. Ha több ilyen van, akkor pe-dig az elemzend® szóban lév® következ® k darab szimbólum alapjándöntünk, hogy melyik szabályt alkalmazzuk. Az LL(k) nyelvtanokolyan nyelvtanok, amelyeknél ez az információ bármelyik elemezend®szó esetén elegend® az egyértelm¶ döntéshez.Elnevezés:

• Left to right, using a Leftmost derivation

• döntés k terminális szimbólum el®reolvasásával

100 8. Környezetfüggetlen nyelvek

Formálisan megfogalmazva: legyen k ≥ 1 egész szám,α ⇒∗l β jelentse azt, hogy α-ból β bal oldali levezetéssel (mindigcsak a bal oldali nemterminális kicserélésével) levezethet®,els®k(α) az α-ból levezethet® szavak k hosszúságú terminális kezd®-szeleteinek halmaza:

els®k(α) = {x|α⇒∗l xβ, l(x) = k} ∪ {x|α⇒∗l x, l(x) < k}8.26. definíció. Egy nyelvtan akkor LL(k) nyelvtan, ha valahány-szor teljesülnek a

S ⇒∗l wAβ ⇒ wα1β ⇒∗l wx,S ⇒∗l wAβ ⇒ wα2β ⇒∗l wy,

els®k(x) = els®k(y)feltételek, akkor

α1 = α2is teljesül.

8.5. LL(k) elemzés 101

8.27. példa. Az 〈{S,A} , {a, b} , S, {S → AS|λ,A→ aA|b〉 nyelv-tan LL(1) nyelvtan, ugyanis ha a legbaloldalibb nemterminális

• S, az S → AS szabályt kell alkalmazni, akár a, akár b az elem-zend® szó következ® bet¶je, és az S → λ szabályt, ha nincs márkövetkez® bet¶ az elemzett szóban,

• A, az A → aA szabályt alkalmazzuk, ha a a következ® bet¶, ésaz A→ b szabályt, ha b a következ® bet¶.

a b λ

S S → AS S → AS S → λA A→ aA A→ b

Az aabab szó elemzése:S ⇒ AS ⇒ aAS ⇒ aaAS ⇒ aabS ⇒ aabAS ⇒ aabaAS ⇒aababS ⇒ aabab

102 8. Környezetfüggetlen nyelvek

8.28. példa. Az

〈{S,A} , {a, b, c} , S, {S → aAab|bAbb, A→ c|λ〉nyelvtan LL(1) nyelvtan, ugyanis ha a legbaloldalibb nemterminális

• S, az S → aAab szabályt kell alkalmazni, ha a, az S → bAbbszabályt kell alkalmazni, ha b az elemzend® szó következ® bet¶je,

• A, az A→ c szabályt alkalmazzuk, ha c a következ® bet¶, és azA→ λ szabályt, ha a vagy b a következ® bet¶.

A nyelvtantanhoz tartozó LL(1) elemz® táblázat:

a b c

S S → aAab S → bAbbA A→ λ A→ λ A→ c

Az acab szó elemzése: S ⇒ aAab⇒ acabAz bbb szó elemzése: S ⇒ bAbb⇒ bbb

8.5. LL(k) elemzés 103

8.29. példa. Készítsük el az

〈{S,A,B,C} , {a, b, c, d, e, f} , S,{S → aA|bBc,A→ Bd|Cc,B → e|λ,C → f |λ}〉

nyelvtantanhoz tartozó LL(1) elemz® táblázatot:

a b c d e f

S S → aA S → bBcA A→ Cc A→ Bd A→ Bd A→ CcB B → λ B → λ B → eC C → λ C → f

104 8. Környezetfüggetlen nyelvek

8.30. példa. Készítsük el az

〈{S,A} , {a, b, c, d} , S, {S → aS|A,A→ bAc|d}〉nyelvtantanhoz tartozó LL(1) elemz® táblázatot:

a b c d

S S → aS S → A S → AA A→ bAc A→ d

8.5. LL(k) elemzés 105

Az〈{S,A} , {a, b} , S, {S → abA|λ,A→ Saa|b〉

nyelvtan LL(2) nyelvtan. Látható ugyanis, hogy például az

S ⇒l abA⇒l abSaa⇒l ababAaa

és azS ⇒l abA⇒l abSaa⇒l abaa

levezetések utolsó lépésében egy bet¶ el®reolvasásával mindkét eset-ben az a-t kapjuk, és az S-re alkalmazott szabály csak két szimbólum(az ab és az aa) el®reolvasásával határozható meg.

9. fejezet

Környezetfügg® nyelvek

9.1. Turing-gépek

9.1. definíció. Az T = 〈Q, V,W, δ, q0〉 rendezett ötöst Turing-gépnek nevezzük, ahol

• Q 6= ∅ véges halmaz, elemei állapotok,

• V a bemen® ábécé és V ⊆ W a szalagábécé,

• δ : Q × (W ∪ {t}) → (Q ∪ {qacc}) × (W ∪ {t}) × {L,R} azállapotátmenet-függvény,

• q0 ∈ Q a kezd®állapot.

106

9.1. Turing-gépek 107

9.2. definíció. A T Turing-gép pillanatnyi kon�gurációján ér-tünk egy (ua, q, bv) hármast, ahol

• q ∈ Q a Turing-gép pillanatnyi bels® állapota,

• ua ∈ V ∗ a szalagon található szó olvasófejt®l balra lev® része,

• bv ∈ W ∗, az olvasófej b-t olvassa a szalagon.

9.3. definíció. A T Turing-gép (ua, q, bv) kon�gurációja átvi-het®

• a (u, q′, acv) kon�gurációba, ha δ(q, b) = (q′, c, L),

• a (uac, q′, v) kon�gurációba, ha δ(q, b) = (q′, c, R).

108 9. Környezetfügg® nyelvek

9.4. definíció. Azt mondjuk, hogy a T Turing-gép elfogadja egyw ∈ V ∗ bemen® szót, ha van T-beli kon�gurációknak egy olyanvéges sorozata, melynek

• els® eleme (t, q0, w),• utolsó eleme (u, qacc, v), ahol u, v ∈ W ∗, és• a sorozatban az utolsót kivéve minden kon�guráció átvihet® az ®tkövet®be.

9.1. Turing-gépek 109

9.5. példa. Kövessük a T = 〈{q0, q1}, {a, b}, {a, b}, δ, q0〉δ(q0, a) = (q1, a, R) δ(q1, a) = (q1, a, R)δ(q0, b) = (q0, b, R) δ(q1, b) = (q1, b, R)

δ(q1,t) = (qacc,t, R)Turing-gép m¶ködését a bbaab szóra.(t, q0, bbaab) → (b, q0, baab) → (bb, q0, aab) → (bba, q1, ab) →

(bbaa, q1, b)→ (bbaab, q1,t)→ (bbaab, qacc,t)

110 9. Környezetfügg® nyelvek

9.6. példa. Kövessük a

T = 〈{q0, q1, q2, q3, q4, q5, q6}, {0, 1}, {0, 1, X}, δ, q0〉

δ(q0, 0) = (q1, X,R) δ(q0, 1) = (q2, X,R) δ(q0,t) = (qacc,t, R)δ(q1, 0) = (q1, 0, R) δ(q1, 1) = (q1, 1, R) δ(q1,t) = (q3,t, L)δ(q2, 0) = (q2, 0, R) δ(q2, 1) = (q2, 1, R) δ(q2,t) = (q4,t, L)δ(q3, 0) = (q5,t, L)

δ(q4, 1) = (q6,t, L)δ(q5, 0) = (q5, 0, L) δ(q5, 1) = (q5, 1, L) δ(q5, X) = (q0, X,R)δ(q6, 0) = (q6, 0, L) δ(q6, 1) = (q6, 1, L) δ(q6, X) = (q0, X,R)

Turing-gép m¶ködését a 001, az 1001 és a λ bemen® szavakkal.

Irodalomjegyzék

[1] Bach Iván: Formális nyelvek, Typotex, 2001.

[2] Demetrovics János, J. Denev, R. Pavlov: A számítástudománymatematikai alapjai, Tankönyvkiadó, Budapest, 1989.

[3] Fazekas Attila, Dömösi Pál: Formális nyelvek és automaták,jegyzet, mobiDiák Könyvtár, 2004.

[4] Fülöp Zoltán: Formális nyelvek és szintaktikus elemzésük, Poly-gon, Szeged, 1999.

[5] Horváth Géza, Mecsei Zoltán, Nagy Benedek: Gyakorlati össze-foglaló, feladatgy¶jtemény, mobiDiák Könyvtár, 2004.

111

112 Irodalomjegyzék

[6] Kása Zoltán: Automaták és formális nyelvek, (Informatikai al-goritmusok II. c. könyv 19. fejezete; Iványi Antal szerk.) EötvösKiadó, Budapest, 2005.

[7] Papp Zoltán: Automaták és formális nyelvek, el®adás fóliák,http://www.inf.unideb.hu/� pappzol

Recommended