• Nem Talált Eredményt

Korlátozottan párhuzamos nyelvtanok

In document Párhuzamos algoritmusmodellek (Pldal 40-44)

2. fejezet - Párhuzamos nyelvtan modellek

2.2. Indiai, orosz és korlátozott párhuzamos nyelvtanoknyelvtanok

2.2.2.2.3. Korlátozottan párhuzamos nyelvtanok

2.2.2.2.3.1. k-párhuzamos nyelvtanok

Összefoglalóan k-párhuzamos nyelvtanoknak hívjuk az 1-párhuzamos, 2-párhuzamos, 3-párhuzamos, …, n-párhuzamos stb. nyelvtanokat. Egy n-párhuzamos nyelvtanban – az első lépést kivéve – minden lépésben pontosan n darab nemterminális kerül átírásra.

Definíció: Legyen kG = (N,T,S,H) egy n-párhuzamos nyelvtan (n ≥ 1), ahol N,T,S és H ugyanúgy, mint a környezetfüggetlen nyelvtanoknál, úgy, hogy az S mondatszimbólum nem fordul elő egyetlen szabály jobb oldalán sem. Egy u szóból közvetlenül levezethető a v szó (jelben u ⇒ v), ha

- u = S és S → v ∈ H, (első levezetési lépés); vagy

- u = p1A1p2A2p3…pnAnpn+1 és v = p1r1p2r2p3…pnrnpn+1, ahol

p1,p2,…,pn+1 ∈ (N∪T)*, és Ai → ri ∈ H, minden 1≤ i ≤ n esetén (n-párhuzamos levezetési lépés).

A közvetlen levezethetőség reflexív és tranzitív lezárásával kapjuk a levezethetőség relációját (⇒*). A kG nyelvtan által generált nyelv pedig az S-ből levezethető, csak terminálisokból szavak halmaza: L(kG) = {w|S

⇒* w}∩T*.

Egy n-párhuzamos nyelvtanban a párhuzamosság foka n-re van beállítva, sem több, sem kevesebb nem lehet a levezetés egy lépését tekintve sem (kivéve a legelsőt, ahol még nincs lehetőség párhuzamos átírásra, hiszen csak egybetűs az aktuális mondatformánk, vagyis az axióma). Ennek segítségével jól lehet a levezetés egyes részeit szinkronizálni, hiszen pl. ha a mondatformában szereplő nemterminálisok száma az n értéke alá csökken, a levezetés nem folytatható, akár sikerült terminális szót levezetnünk, akár nem.

A definícióból látható az is, hogy az 1-párhuzamos nyelvtanok éppen a hagyományos szekvenciális környezetfüggetlen nyelvtanokkal esnek egybe (vagyis, ha csak egy szálú a párhuzamosság, akkor az nem is párhuzamosság igazán). Ez persze megengedi azt, hogy a k-párhuzamos nyelvtanokat a környezetfüggetlen nyelvtanok egyféle párhuzamos általánosításának lássuk. Ez az általánosítás nagyon különbözik az (indiai és) orosz párhuzamos nyelvtanoknál levőtől, hiszen most pontosan megmondjuk, hány helyen kell párhuzamosan az átírást megtennünk, másrészt ez történhet különböző szabályok segítségével, sőt az átírandó nemterminálisoknak sem kell feltétlenül egyezniük.

Példa (többszörös megfeleltetés nyelve)

Legyen kG = ({S,A,B,C},{a,b,c},S,H) egy 3-párhuzamos nyelvtan, ahol H = {S → ABC,A → aA,B→ bB,C → cC,A → a,B → b,C → c}. Ekkor minden levezetés az S ABC lépéssel kezdődik. Ezután, mivel mindig pontosan 3 helyen kell átírószabályt alkalmaznunk, csak anAbnBcnC alakú mondatformákat állíthatunk elő (n≥0 természetes szám) úgy, hogy a levezetés folytatható legyen. Ennek következtében a generált nyelv: L(kG) = {anbncn | n ≥ 1}.

A k-párhuzamos nyelvtanok egyik gyengéje, hogy előre rögzítenünk kell a párhuzamosság fokát, vagyis, hogy egy levezetési lépésben mennyire lesz párhuzamos az átírás. Ez néha, például, ha tudjuk, hogy adott architektúrán mennyi párhuzamos utasítás futhat le egyszerre, jó lehet. Ugyancsak feloldható egyik irányban a megszorítás, ha valamely A nemterminális(ok)ra A → A alakú szabályokat is használunk. Ezzel tulajdonképpen megengedhetjük, hogy a rögzített értéknél kevesebb helyen történjen valódi átírás, feltéve, hogy a mondatforma

tartalmaz extra előfordulásokat az adott nemterminális(ok)ból, ekkor ezzel a feltétellel további kontrollt alkalmazhatunk a levezetés során.

2.2.2.2.3.2. Szétszórt környezet nyelvtanok

A szétszórt környezet nyelvtanok az előzőekben ismertetett k-párhuzamos nyelvtanok továbbfejlesztett változatai, ahol egyrészt a k értéke nem teljesen rögzített, vagyis a levezetés során a párhuzamosság foka változhat, másrészt az egy levezetési lépésben alkalmazható szabályokat és azok alkalmazási sorrendjét (a helyük szerint) is megadjuk. Lássuk tehát formálisan a definíciót.

Definíció: Az SCG = (N,T,S,H) egy szétszórt környezet nyelvtan, ha N,T,S ugyanúgy, mint a környezetfüggetlen, illetve a k-párhuzamos nyelvtanoknál, rendre a nemterminális ábécé, a terminális ábécé és a mondatszimbólum. A H véges halmaz elemei pedig véges környezetfüggetlen szabályokból álló sorozatok (úgynevezett mátrixok): (A1 → r1,A2 → r2,…,Ak → rk), ahol k ≥ 1 természetes szám, és a k értéke mátrixonként változhat.

Egy u szóból közvetlenül levezethető a v szó (jelben u ⇒ v), ha van olyan (A1 → r1,A2 → r2,…,Ak → rk) mátrix a H-ban, hogy

u = p1A1p2A2p3…pkAkpk+1 és v = p1r1p2r2p3…pkrkpk+1 valamely p1,p2,…,pn+1 ∈ (N∪T)* esetén.

A közvetlen levezethetőség reflexív és tranzitív lezárásával kapjuk a levezethetőség relációját (⇒*). Az SCG nyelvtan által generált nyelv pedig L(SCG) = {w|S ⇒* w}∩T*.

Mint látjuk, a párhuzamosság foka egy-egy szabálymátrixban ugyan rögzítésre került, de a teljes nyelvtanban különböző értékek is megengedettek. Másrészt viszont, mivel a nyelvtan megadásakor ezek az értékek, sőt az alkalmazandó szabályok és azok bal oldalának előfordulási sorrendje az aktuális mondatformában is rögzített, csak parciálisan párhuzamos rendszerről beszélhetünk.

Példa (többszörös megfeleltetés)

Legyen SCG = ({S,A,B},{a,b},S,{(S → ABA),(A → aA,B → bB,A → aA),

(A → λ, B → λ,A → λ)}) egy szétszórt környezet nyelvtan. Ekkor a levezetés S ⇒ ABA lépéssel kezdődik.

Ezután a második mátrix alkalmazásával párhuzamosan vezetjük be a terminálisokat a megfelelő helyeken, végül a harmadik mátrix szabályaival fejezhetjük be a levezetést. Ennek megfelelően L(SCG) = {anbnan | n ≥ 0}.

Tétel: A szétszórt környezet nyelvtanok által generált nyelvek halmaza megegyezik a rekurzívan felsorolható nyelvek halmazával.

A következő definíció nagyon hasonlít az eredeti szétszórt környezet nyelvtan definícióra.

Definíció: Az APG = (N,T,S,H) egy abszolút párhuzamos nyelvtan, ha N,T,S és H ugyanúgy, mint a szétszórt környezet nyelvtanoknál, adott. Egy u szóból közvetlenül levezethető a v szó (jelben u ⇒ v), ha van olyan (A1

→ r1,A2r2,…,Akrk) ∈ H, hogy u = p1A1p2A2p3…pkAkpk+1 és v = p1r1p2r2p3…pkrkpk+1 valamely p1,p2,…,pk+1T* esetén.

A közvetlen levezethetőség reflexív és tranzitív lezárásával kapjuk a levezethetőség relációját (⇒*). Az APG nyelvtan által generált nyelv: L(APG) = {w | S ⇒* w}∩T*.

Az egyetlen, de nagyon lényeges különbség a szétszórt környezet és az abszolút párhuzamos nyelvtanok között, hogy az utóbbi esetben minden lépésben minden nemterminálisnak át kell íródnia valamely, a mátrixban szereplő szabály segítségével, az átírandó nemterminálisok közt csak terminálisok lehetnek a mondatformában.

A szakasz zárásaként megjegyezzük, hogy a szétszórt környezet nyelvtanoknak olyan változata is van, amelyben az egy mátrixban levő szabályok sorrendjét nem tekintjük, vagyis csak az a fontos, hogy azokat a szabályokat és annyi helyen alkalmazzuk, ahogy meg van adva, de az alkalmazási helyek sorrendje tetszőleges lehet. Könnyen belátható, hogy az ilyen sorrendtelen, szétszórt környezet nyelvtanokkal generálható nyelvek halmaza nem több,

mint a (sorrendet is használó) szétszórt környezet nyelvtanokkal generálható nyelvek halmaza.

Megkonstruálható egy olyan (sorrendet is figyelő) szétszórt környezet nyelvtan bármely sorrendtelen szétszórt környezet nyelvtanhoz, ami ugyanazokat a levezetéseket teszi lehetővé a sorrendtelen szétszórt környezet nyelvtan mátrixaiból minden lehetséges sorrenddel elkészített mátrixok segítségével (azok száma is véges).

További változatokat is bemutató irodalmakat adunk a fejezet végén.

2.2.2.2.3.3. Általánosított párhuzamos nyelvtanok

Az orosz párhuzamos nyelvtan és a k-párhuzamos nyelvtanok egyfajta keverékeként hozhatjuk létre a következő általánosított párhuzamos nyelvtant.

Definíció: A PG = (N,T,S,H) egy általánosított parallel nyelvtan, ahol N,T, és S ugyanaz, mint az orosz parallel nyelvtannál, H pedig

(A → r,i) alakú párok halmaza, ahol a pár első tagja (A ∈ N, r ∈ (N∪T)*) egy átíró szabály, az i ∈ {=n,≥ n,≤ n

| n természetes szám} ∪{t} pedig azt jelzi, hogy az adott szabályt milyen módon kell alkalmazni: az A nemterminális pontosan hány (=n), legalább hány (≥n), legfeljebb hány (≤n), vagy minden (t) előfordulása esetén kell alkalmazni. Egy u szóból közvetlenül levezethető a v szó (jelben

u ⇒ v), ha előfordulását r-re cseréljük, vagyis valamilyen m természetes számra, u = p1Ap2…pmApm+1 és

v = p1rp2…pmrpm+1, ahol p1,p2,…,pm,pm+1 ∈ ((N\{A})∪T)*.

A levezethetőség és a generált nyelv fogalmát ugyanúgy kapjuk, mint az orosz párhuzamos nyelvtan esetén.

A rendszer tekinthető az orosz parallel nyelvtanok általánosításának, azok egyszerűen szimulálhatóak vele, ha csak (A → r,=1), illetve (A→r,t) alakú szabályokat használunk. A k-párhuzamos nyelvtanok szimulációja viszont általános esetben nem megy, hiszen ott egyszerre különböző nemterminálisokat is átírhatunk, illetve különböző szabályokat alkalmazhatunk akár ugyanolyan nemterminálisok átírására egy levezetési lépés során.

Mindezek ellenére az általánosított párhuzamos nyelvtanok esetén mind a korlátozott, mind a korlátozás nélküli (írjuk át az összes előfordulást egyszerre) használható, sőt a korlátozásoknál változatos feltételeket alkalmazhatunk akár egy levezetés során is.

Példa (általánosított párhuzamos nyelvtan)

Legyen PG = ({S},{a,b,c},S,H), ahol a szabályok a következők

H = {(S → SS,≤ 50),(S → a,=50),(S → b,≥ 50),(S → c,t)}. Ekkor L(PG) tartalmaz minden olyan w ∈ {a,b,c}*

szót, amire teljesülnek a következő feltételek:

- w csak ötvennel osztható számú a-t tartalmazhat;

- ha w tartalmaz b-t, akkor legalább ötven darabot tartalmaz.

Az előző példa mutatja, hogy általánosított párhuzamos nyelvtanok segítségével nagyon tömören tudunk bizonyos feltételeket megfogalmazni.

Itt jegyezzük meg, hogy rengetegféle hasonló formális modell létezik, ahol a levezetést valamilyen mechanizmussal kontrolláljuk (pl. programozott nyelvtanok, indexelt nyelvtanok, mátrix nyelvtanok, rendezett nyelvtanok), és akár továbbiak definiálhatóak pl. ezek kombinálásával, adott cél elérése érdekében.

2.2.4. Összefoglaló kérdések és feladatok

1. Mik a Chomsky-féle generatív nyelvtanok és az indiai parallel nyelvtanok fő különbségei?

2. Generálja indiai párhuzamos nyelvtannal az {anbam | n,m természetes számok} és {anban|n természetes szám}

nyelveket!

6. Generálja k-párhuzamos nyelvtannal az {anbncndn | n ≥ 1} nyelvet! Milyen k értékkel célszerű dolgozni? Adjon meg több lehetséges megoldást is!

7. Adjon meg olyan szétszórt környezet nyelvtant, amivel a {www | w ∈ {a,b}*} nyelv generálható!

8. Adjon meg olyan abszolút párhuzamos nyelvtant, amivel az {anbncn | n ≥ 1} nyelv generálható!

9. Adjon példát olyan szétszórt környezet nyelvtanra, amely nem generálja ugyanazt a nyelvet, ha abszolút párhuzamos nyelvtanként értelmezzük!

10. Generálható-e valamilyen k értékre k-párhuzamos nyelvtannal az {anbmcndm | m,n ≥ 1} vagy az {anbmanbm | m,n

≥ 1} nyelv? Lehet-e generálni ezeket a nyelveket orosz vagy általánosított parallel nyelvtannal?

11. Milyen az indiai, az orosz és az általánosított parallel nyelvtanokkal generált nyelvosztályok viszonya?

Adjon meg példanyelvet, ami mindhárom típusú parallel nyelvtannal generálható! Adjon meg olyan példanyelvet, ami ezek közül csak kettő típusúval generálható! Tud-e olyan nyelvet megadni, ami ezek közül csak egyféle típussal generálható? És olyat, amelyik egyikkel sem?

12. Adjon példát általánosított párhuzamos nyelvtanokra, amelyek szabályai csak az alkalmazás módjaiban különböznek, a generált nyelvek pedig eltérőek!

2.2.5. Irodalom

J. Dassow, Gh. Paun: Regulated rewriting in formal language theory. EATCS Monographs in Theoretical Computer Science 18, Springer, 1989

J. Dassow, Gh. Paun, A. Salomaa: Grammars with controlled derivations, Chapter 3, in: G. Rozenberg, A.

Salomaa (eds.): Handbook of formal languages, vol. 2, Springer, 1997. pp. 101–154.

J. Dassow: Grammars with regulated rewriting, in: Z. Ésik, C. Martín-Vide, V. Mitrana (eds.): Recent Advances in Formal Languages and Applications, Springer 2006. pp. 249–273.

In document Párhuzamos algoritmusmodellek (Pldal 40-44)