• Nem Talált Eredményt

Rekurzív nyelvek

In document ALGEBRAI NYELV- ÉS KÓDELMÉLET (Pldal 74-78)

I. NYELVEK 7

4. Környezetfüggő nyelvek 72

4.2. Rekurzív nyelvek

A 3.4 Tétel környezetfüggő nyelvekre is igaz, azaz ezekre a nyelvekre is meg-oldható a szóprobléma.

4.2. Tétel. Minden környezetfüggő nyelv rekurzív.

Bizonyítás LegyenG= (VN, VT, S, H)környezetfüggő grammatika ésp∈VT. A p =e esetben e ∈ L(G) akkor és csak akkor, ha S −→ e∈ H, ami nyilván eldönthető. Feltehetjük tehát, hogy |p|=n ≥1. Tekintsük az olyan

S =P0, P1, . . . , Pk−1, Pk =p

szósorozatokat (VN ∪VT)+-ból, amelyekre

1 =|P0| ≤ |P1| ≤ · · · ≤ |Pk−1| ≤ |Pk|=n.

Mivel VN ∪VT véges halmaz, ezért az összes ilyen sorozat csak véges sok kü-lönböző szót tartalmaz. Ez azt jelenti, hogy az összes olyan sorozatnak száma, amelyekben ismétlés nem fordul elő, véges. E véges sok sorozat mindegyikében megvizsgálható, hogy

Pj =⇒G Pj+1, 0≤j < n

teljesül-e. (Az ismétléseket tartalmazó sorozatokat nem kell figyelembe venni, mert minden ismétlést tartalmazó levezetéshez található ismétlést nem

tartal-mazó levezetés is.) 2

A bizonyításban szereplő eldöntési eljárás természetesen gyakorlati célra nem nagyon alkalmas. Mindenesetre látható belőle a probléma nehézsége, ha a sorozatokra |Pj| ≤ |Pj+1|nem teljesül. Tetszőleges0típusú grammatika esetén bizonyítható, hogy ez a tartalmazási probléma ténylegesen eldönthethetetlen.

A következő tétel szerint a 4.2 Tétel megfordítása nem igaz. Ez azt jelenti, hogy a rekurzív nyelvek osztálya bővebb a környezetfüggő nyelvek osztályánál.

4.3. Tétel. Létezik olyan rekurzív nyelv, amelyik nem környezetfüggő.

Bizonyítás Azt mutatjuk meg, hogy kételemű ábécé felett is van olyan re-kurzív nyelv, amelyik nem környezetfüggő. Legyen a kételemű ábécé {a, b}.

Tekintsük azokat a környezetfüggő grammatikákat, amelyek mindegyikének terminális ábécéje {a, b} és mondatszimbóluma S. Ezen grammatikák nem-terminális ábécéit tekinthetjük ugyanazon megszámlálhatóan végtelen

V ={S, X1, X2, . . .}

halmaz véges részhalmazaiként. (A változók átjelölésével ez mindig elérhe-tő.) Nyilvánvalóan minden{a, b}feletti környezetfüggő nyelv generálható ilyen grammatikával. Egy ilyen grammatikát a szabályok egy

P1 −→Q1, P2 −→Q2, . . . , Pn −→Qn

sorozatával is megadhatunk. A szabályokból ugyanis meg tudjuk határozni a nemterminális ábécét. (Természetesen, ha a szabályokat más sorrendben adjuk meg, akkor is ugyanazt a grammatikát kapjuk.) Minden ilyen G grammatiká-hoz megadunk egy {a, b} feletti pG szót a következő módon:

Legyen

V0 ={a, b,−→,#, S, X1, X2, . . .}.

Definiáljuk a ϕ:V0 →a+b leképezést a

ϕ(a) =ab, ϕ(b) =a2b, ϕ(−→) =a3b, ϕ(#) =a4b, ϕ(S) =a5b, ϕ(Xi) =a5+ib, i= 1,2, . . .

feltételekkel. AϕleképezésV0 bijektív leképezésea+b-re. Jelöljük szinténϕ-vel a ϕmonoid-homomorf kiterjesztését a V0∗ szabad félcsoportra.

Legyen

pG=ϕ(P1 −→Q1#P2 −→Q2#. . .#Pn−→Qn).

Ha pG =pG0, akkor nem nehéz belátni, hogy G-t és G0-t szabályoknak ugyan-azzal a sorozatával adtuk meg, azaz G = G0. Ebből következik, hogy a G grammatikákat a pG szavakkal is megadhatjuk.

Legyen az{a, b}felettiLnyelv azoknak apGszavaknak a halmaza, amelyek-repG ∈/ L(G). Megmutatjuk, hogy azLnyelv rekurzív, de nem környezetfüggő.

A 4.2 Tétel szerint algoritmikusan eldönthető, hogy pG eleme-e az L(G) környezetfüggő nyelvnek. Így az is eldönthető algoritmikusan, hogypG eleme-e L-nek. Ez azt jelenti, hogy Lrekurzív.

Tegyük fel, hogy L környezetfüggő. Akkor van olyan pG-vel megadott G grammatika, amelyre L = L(G). Az L definíciója miatt, ha pG ∈ L(G) =L, akkor pG ∈/ L. Ha pedig pG ∈/ L(G) = L, akkor pG ∈ L. Mindkét esetben ellentmondásra jutottunk. Vagyis L nem környezetfüggő. 2 Az U ábécé feletti L nyelvet (U felett) rekurzíve felsorolhatónak nevezzük, ha van olyan eljárás, amely az összesp∈Lszót valamilyen sorrendben (esetleg ismétlésekkel) előállítja, azaz felsorolja.

Könnyű belátni, hogy minden 0típusú nyelv rekurzíve felsorolható. Ehhez nem kell mást csinálnunk, mint rendre előállítanunk a mondatszimbólumból 1,2, . . . lépésben levezethető összes mondatformát, s ezek közül kiválasztani a terminális szavakat. A 11.3 Következmény szerint a 0 típusú nyelvek osztálya és a véges ábécék feletti rekurzíve felsorolható nyelvek osztálya megegyezik.

Továbbá minden véges ábécé feletti rekurzív nyelv rekurzíve felsorolható.

Nem kell ugyanis mást tennünk, mint rendre előállítani az összes p∈U szót, miközben minden egyes új szó előállítása után alkalmazzuk rá az eldöntési algoritmust, és belevesszük a felsorolásba, ha igen választ kapunk, egyébként elhagyjuk. Ezáltal megadtunk egy felsorolási eljárást, ahol még az ismétléseket is kizártuk.

Megfordítva viszont abból, hogy egy véges ábécé feletti nyelv rekurzíve felsorolható, még nem következik, hogy rekurzív is. Megmutatjuk, hogy a véges ábécé feletti rekurzíve felsorolható nyelvek osztálya bővebb a rekurzív nyelvek osztályánál. Ehhez először bebizonyítjuk a következő állítást.

4.4. Lemma. A véges ábécé felettiL nyelv akkor és csak akkor rekurzív, ha L és L rekurzíve felsorolható.

Bizonyítás Legyen L tetszőleges U véges ábécé feletti nyelv. Ha az L nyelv rekurzív, akkor L is rekurzív, s ezért mind a kettő rekurzíve felsorolható.

Megfordítva, tegyük fel, hogy L és L rekurzíve felsorolhatók. Legyen p ∈ U. Kombináljuk az L és L elemeinek felsorására szolgáló eljárásokat úgy, hogy váltakozva hol az egyikkel, hol a másikkal állítunk elő egy szót, miáltal az U-beli szavaknak egy olyan

p1, p2, . . . , p2n−1, p2n, . . . (n= 1,2, . . .)

felsorolását kapjuk, ahol p2n−1 ∈ L és p2n ∈ L. Mivel L+L = U, ezért a felsorolásban valahol előfordul p. Most már csak azt kell eldönteni, hogy p páratlan vagy páros helyen szerepel-e a sorozatban, s így végeredményben egy eldöntési algoritmust adtunk meg, vagyis L rekurzív. 2 A 4.4 Lemma szerint annak megmutatásához, hogy a véges ábécé feletti rekurzíve felsorolható nyelvek osztálya bővebb a véges ábécé feletti rekurzív nyelvek osztályánál, elegendő egy véges ábécé felett olyan rekurzíve felsorolható nyelvet találni, amelynek komplementere nem rekurzíve felsorolható.

4.5. Tétel. Létezik véges ábécé feletti rekurzíve felsorolható nyelv, amely nem rekurzív.

Bizonyítás Azt mutatjuk meg, hogy az {a} egyelemű ábécé felett van olyan rekurzíve felsorolható nyelv, amelyenek komplementere nem rekurzíve felsorol-ható. A 4.4 Lemma szerint ebből már következik az állítás.

Tegyük fel, hogy minden rekurzíve felsorolhatóL⊆anyelvhez a felsorolási eljárás le van írva valamilyen nyelven. Pontosabban feltételezhetjük, hogy van olyan V véges ábécé, hogy az előbbi eljárások mindegyikét valamely E ∈ V szóval jellemezhetjük. Miután V megszámlálhatóan végtelen, az E szavakat valamilyen

E0, E1, E2, . . .

sorozatba rendezhetjük. Definiáljuk a következő L⊆a nyelvet: ak ∈L akkor és csak akkor, ha az Ek eljárás felsorolja az ak szót.

Először is nyilvánvaló, hogyLnem lehet rekurzíve felsorolható. Ha ugyanis az lenne, akkor volna olyan Ei eljárás a fenti sorozatban, amely pontosan L elemeit sorolja fel. De akkor akárai ∈L, akárai ∈/ L, ellentmondásba kerülünk L definíciójával.

Végül megmutatjuk, hogyLrekurzíve felsorolható. Minden eljárás diszkrét lépésekre bontható, vagyis beszélhetünk az Ek (k-adik eljárás)l-edik lépéséről.

Jelöljük ezt a lépést a (k, l) rendezett párral. Amennyiben a k-adik eljárás az l-edik lépésben befejeződik, akkor ennek az eljárásnak a m-edik lépését l < m esetben úgy értelmezzük, hogy nem csinálunk semmit. Kombináljuk az eljárásokat úgy, hogy a

(0,0),(1,0),(0,1),(2,0),(1,1),(0,2),(3,0),(2,1),(1,2),(0,3), . . .

lépéseket ilyen sorrendben hajtjuk végre egymás után. Ha most a (k, l)-edik lépés éppen az ak szónak Ek által felsorolt nyelvhez való hozzávételét ered-ményezi, akkor ak-t felvesszük L-be. Ezzel megadtunk egy eljárást, amely felsorolja L elemeit, tehát Lvalóban rekurzíve felsorolható. 2

In document ALGEBRAI NYELV- ÉS KÓDELMÉLET (Pldal 74-78)