• Nem Talált Eredményt

Egyéb változatok

In document Párhuzamos algoritmusmodellek (Pldal 50-54)

H. Fernau: Parallel grammars: a phenomenology, Grammars 6 (2003), 25–87

2.3. Lindenmayer rendszerek

2.3.2.3.3. Egyéb változatok

A 0L-rendszerek olyan kiterjesztéseit mutatjuk be ebben az alfejezetben, amelyekkel anélkül tudunk minden véges nyelvet generálni, hogy bevezetnénk egy bővebb ábécét annál, mint amivel a nyelvet definiáljuk.

2.3.2.3.3.1. Véges axiómahalmazos (F0L) rendszerek

Arra, hogy a véges nyelvek ne ,,lógjanak ki'' a modellünkben kezelhető rendszerek közül, egy másik kézenfekvő megoldás az, ha az egyetlen kiindulási axióma helyett egy véges axiómahalmazt adhatunk meg kiindulásként.

Definíció: Az FLS = (T,F,H) egy véges axiómahalmazos 0L (F0L) rendszer, ha T véges ábécé, F ⊂ T* véges axiómahalmaz. A H véges szabályhalmaz szabályai pedig a → r alakúak (a T, r T*), mint a 0L-rendszereknél. Ekkor az FLS által generált nyelv az F elemeiből generálható nyelvek uniója: L(FLS) = {w | s

⇒* w,s ∈ F}.

Egy FLS = (T,F,H) esetén a (T,s,H) 0L-rendszert szokás az FLS komponens rendszerének hívni s ∈ F esetén.

Így a komponens rendszerek által generált nyelvek uniója adja a teljes rendszer által generált nyelvet.

Példa (véges axiómahalmazzal generált nyelv)

Legyen FLS = ({a},{a,aaa},{a → aa}) egy DF0L-rendszer. Ekkor könnyen ellenőrizhető, hogy az ezzel a rendszerrel generált nyelv L(FLS) = {an | n a 2 valamely nemnegatív egész kitevős hatványa vagy annak 3-szorosa}.

2.3.2.3.3.2. Felnőttnyelv használata

Most egy másik lehetőséget mutatunk arra, hogy a rendszerek korlátozottságát megszüntessük. Egy 0L-rendszer által generált felnőttnyelv pontosan azokat a szavakat tartalmazza, amik LS fixpontjai, vagyis LS nem változtatja meg őket, formálisan a következőképpen írhatjuk ezt le.

Definíció (felnőtt nyelv): Legyen LS = (T,s,H) egy 0L-rendszer. Ekkor az LS által generált felnőttnyelv L(A - LS) = {w | s⇒* w, és {w} = {u | w ⇒* u}}. Ha az LS felnőttnyelvére vagyunk kíváncsiak, akkor általában LS-t A0L-rendszernek hívjuk.

Könnyen belátható, hogy a felnőttnyelv egy úgynevezett T' felnőttábécéhez kötődik, ahol T' ⊆ T, ami egy adott 0L-rendszer esetén meghatározható. Továbbá minden A0L-rendszerrel van olyan ekvivalens A0L-rendszer, amiben a felnőttábécé elemeire csak olyan szabály van, ami nem változtatja meg őket, vagyis a rendszer egyetlen szabálya a ∈ T' esetén a → a.

A felnőttnyelvekkel kapcsolatos egyik fő eredmény, hogy a Chomsky-hierarchiával szoros rokonságba hozható.

Tétel: Az 0L-rendszerek felnőttnyelveinek osztálya (A0L-nyelvek) és a környezetfüggetlen nyelvek (CF) osztálya egybeesik. Bármely LS 0L-rendszerhez megkonstruálható egy G környezetfüggetlen nyelvtan, hogy L(A - LS)=L(G). Ugyancsak, bármely G környezetfüggetlen nyelvtanhoz megkonstruálható egy LS 0L-rendszer, hogy L(A - LS) = L(G).

Bizonyítás: A bizonyítás konstruktív, az első irányhoz legyen tehát adott LS = (T,s,H). Az általánosság csorbítása nélkül feltehetjük, hogy a rendszer s axiómája egy olyan S egybetűs szó, amely nem szerepel a felnőttábécében, és a felnőttábécé elemeire csak egyetlen átíró szabály van: a ∈ T' esetén a → a. Ekkor legyen G = (T\T',T',S,H\{a → a | a ∈ T'}). Könnyen belátható, hogy L(G)=L(A - LS).

A fordított irányhoz tegyük fel, hogy G = (N,T,S,H) Chomsky-féle normálformában adott, oly módon, hogy nem tartalmaz felesleges nemterminálisokat (olyan nemterminálisokat, amelyek nem érhetőek el a mondatszimbólumból, illetve amikből nem lehet terminális szót levezetni). Legyen LS = (N∪T,S,H∪{a → a | a

∈ T}). Világos, hogy LS egy 0L-rendszer. Ekkor az LS-ben egy levezetés tulajdonképpen megfelel az eredeti környezetfüggetlen nyelvtanban történő levezetési fa szintenkénti párhuzamos előállításának, másrészt a terminálisok nem változnak meg, így a csak terminálisokat tartalmazó szavak lesznek a levezetés fixpontjai. Így könnyen belátható, hogy L(A -LS) = L(G). √

2.3.2.3.4. Táblás rendszerek

Ebben az alfejezetben további még összetettebb, de széles körben használt L-rendszereket mutatunk be. Az E0L-rendszereket tovább általánosíthatjuk, ha a biológiai analógiánál maradva, különböző környezeti tényezőket veszünk figyelembe azzal, hogy különböző szabályrendszereket használunk egy rendszeren belül. A biológiából jó példa például a fák évgyűrűinek létrejötte.

Definíció: A TLS = (T,s,H) egy párhuzamos (egyszerű típusú) átíró rendszer, ahol T egy véges ábécé, s ∈ T*

(axióma), H pedig olyan h szabályhalmazok (táblák) halmaza, amelyekre a (T,s,h) hármasok 0L-rendszerek.

Ezeket komponensrendszereknek hívjuk. Ekkor TLS egy táblás L-rendszer. Ha TLS minden komponense D0L-rendszer, akkor TLS egy DT0L-rendszer.

Akkor u ⇒ v, ha valamely komponensrendszerben ez fennáll. A generált nyelv definíciója pedig a szokásos (az axiómából levezethető szavak halmaza).

Tehát, ha a rendszert más-más tábla alapján írjuk át, azzal azt tudjuk szimulálni, mintha a környezet megváltozott volna.

Példa (véges nyelv)

Legyen TLS = ({a,b,c,d},ababa,{{a → ddd,b → b,c → c,d → d},{a → cc, b → b,c → c,d → d}}). Ekkor L(TLS) = {ababa,dddbdddbdddb,ccbccbcc}. Érdekességként említjük, hogy ez a véges nyelv nem D0L-, illetve nem 0L-nyelv.

Viszont a DT0L-rendszerekkel sem generálható minden véges nyelv.

Példa (véges, de nem DT0L-nyelv)

Legyen L = {00,1111,11111,111111}. Ekkor csak a 00 lehetne axióma, de ekkor a nyelv minden szavának páros hosszúságúnak kellene lennie.

A következő példában nem véges reguláris nyelvet generálunk nemdeterminisztikus módon.

Példa (0+ ∪1+ nyelv)

Legyen TLS = ({0,1},0,{{0 → 0,0 → 00,1 → 1},{0 → 1,1 → 1}}). Ekkor az első tábla első két szabályának segítségével bármilyen, csak 0-kból álló szót generálhatunk, a második tábla segítségével pedig a 0-kat 1-esekre cserélhetjük, így L(TLS) = 0++1+.

A következő definícióban szereplő rendszereknél már nem gond a véges nyelvek generálása, hiszen az ábécé bővített.

Definíció: Az ETLS = (V,T,s,H) egy átíró rendszer, ahol V,T és s ugyanazok, mint az E0L-rendszerek esetén, H pedig olyan h szabályhalmazok (táblák) halmaza, amelyekre (V,T,s,h) négyesek E0L-rendszerek. Ezeket komponensrendszereknek hívjuk. Ekkor ETLS egy kiterjesztett ábécéjű táblás L-rendszer, röviden ET0L-rendszer. Ha ETLS minden komponense ED0L-rendszer, akkor ETLS egy EDT0L-rendszer. A TLS = (V,s,H) T0L-rendszert (vagy DT0L-rendszert) szokás az ETLS alaprendszerének hívni.

Akkor u ⇒ v, ha valamely komponensrendszerben ez fennáll. A generált nyelv definíciója pedig a szokásos (az axiómából levezethető, csak terminálisokat tartalmazó szavak halmaza).

Példa (egy EDT0L-rendszer)

Legyen ETLS = ({S,A,B,a,b,c},{a,b,c},SSS,{{S → A,A → Sa,B → c,a → a, b → b,c → c},{S → B,A → c,B → Sb,a → a,b → b,c → c}}). Ekkor könnyen ellenőrizhető, hogy L(ETLS) = {cwcwcw | w ∈ {a,b}*}.

A következő eredmények azt mutatják, hogy az ET0L-rendszerek generáló ereje megmarad bizonyos megszorítások esetén is.

Tétel: Minden ET0L-rendszerrel van olyan ekvivalens ET0L-rendszer, ami pontosan két táblát tartalmaz.

Továbbá teljesül a következő eredmény.

Tétel: Minden ET0L-rendszerrel van olyan ekvivalens ET0L-rendszer, amiben minden terminálisra csak az a

→ a alakú átíró szabály van.

Az ET0L-rendszerek esetén is szokás a szinkronizáltság fogalmának bevezetése.

Definíció: Akkor mondjuk egy ET0L-rendszerről, hogy szinkronizált, ha benne minden a ∈ T betűre teljesül, hogy belőle nem vezethető le terminális szó, vagyis tetszőleges w ∈ V* esetén, ha a ⇒* w és legalább egy levezetési lépés történt, akkor w ∈ T*.

A szinkronizált rendszerek esetén a terminális betűket egyszerre kell bevezetni sikeres levezetés utolsó lépéseként. Az E0L-rendszerekhez hasonlóan az ET0L-rendszerek esetén is hasonló tétel fogalmazható meg a szinkronizált rendszerekkel kapcsolatosan.

Tétel: Legyen ETLS = (V,T,s,H) egy ET0L-rendszer. Ekkor van olyan algoritmus, aminek a segítségével megkonstruálható az ETLS' = (V',T,s',H') szinkronizált ET0L-rendszer úgy, hogy L(ELS)=L(ELS'). Továbbá az ETLS' axiómája, s' ∈ V\T, illetve pontosan egy F hibaszimbólum van, amelyre F ∈ V\T, F ≠ s', továbbá minden egyes a T terminálisra pontosan egy szabály létezik a rendszerben, minden táblában az a → F alakú.

Hasonlóan a hibaszimbólumra is minden táblában az F → F alakú szabály vonatkozik.

Bizonyítás nélkül közöljük a kiterjesztett ábécéjű táblás L-rendszerek zártsági tulajdonságairól szóló tételt.

Tétel: Az ET0L és az EDT0L-rendszerekkel definiált nyelvosztályok zártak az unió, a konkatenáció, az iteráció, a morfizmus és a reguláris nyelvekkel vett metszet műveletekre is.

A szóprobléma eldöntésében az ET0L- és EDT0L-rendszerek különbözőképpen viselkednek.

Tétel: Az ET0L-nyelvek esetén a szóprobléma NP-teljes probléma.

Bizonyítás: A bizonyítás azon múlik, hogy megadható olyan ET0L-rendszer, ami egy NP-teljes nyelvet generál.

A legrövidebb közös tartalmazó sorozat feladat a következő: adott n darab szó egy T ábécé felett. Keressük meg a legrövidebb olyan szót (sorozatot), amelyből az n szó bármelyike előáll oly módon, hogy belőle tetszőleges számú (akár 0) betűt törlünk. Ez a probléma már bináris ábécé esetén is NP-teljes, ha legalább 3 kiindulási szó adott. Ugyancsak NP-teljes az a változata a problémának, ha az n szó mellett adott egy k érték, és a kérdés az, hogy van-e legfeljebb k hosszúságú közös tartalmazó sorozat. Most egy olyan ET0L-rendszert mutatunk, ami tulajdonképpen ennek a feladatnak a példányait, mint szavakat, vagyis ezt az NP-teljes nyelvet generálja.

Legyen ETLS = ({A,B,C,X,F,0,1,$},{0,1,$},XA,{h1,h2}), ahol h1 = {A → AA,A → A,B → C,C → B,$ → F}∪{x

→ x | x ∈ {F,X,0,1}} és h2 = {A → B,B → B, B → 0B,B → $,C → C,C → 1C,C → $,X → 1X,X → $,$ → F}∪{x → x | x ∈ {F,0,1}}. Ez a rendszer generálja a legrövidebb közös tartalmazó sorozat probléma példányait a következő formában: w=1k+1$w1$w2$...$wn$ (w1,w2,...,wn∈{0,1}*), ahol w L pontosan akkor, ha a {w1,w2,...,wn} halmaz szavainak van maximum k hosszúságú közös tartalmazó sorozata. A generálás során az XA axiómából indulunk ki, az F betű pedig a rontott levezetésekben fog megjelenni (ez nem fog tudni terminálni, e miatt a $ jeleket egyszerre kell bevezetni, ezzel megkapva a ,,levezetett'' terminális szót). Az első szabályhalmaz segítségével XAn alakú szóhoz juthatunk, amiből a másik tábla segítségével XBn áll elő. Ezután, attól függően, hogy a szavunkban B-k vagy C-k szerepelnek, az n darab szó bármelyikéhez hozzáfűzhetünk egy 0-t vagy egy 1-est (B-ről C-re, illetve vissza az első táblával tudunk váltani). Minden olyan lépésben, amikor valamely szó hosszát növeljük, egyben növeljük az első rész hosszát is (vagyis a közös tartalmazó sorozat hosszát). Végül minden B-t vagy C-t (ami éppen aktuálisan szerepel) és az X-et $ jelre cseréljük. Világos, hogy kezdetben az n darab üresszóra az üresszó egy közös tartalmazó sorozat. Ezután viszont mindig, amikor valamilyen (és szigorúan ugyanazt) a betűt (a 0-t vagy 1-et) hozzáfűzöm valamely szavakhoz, ugyanezt a betűt a közös tartalmazó sorozathoz hozzáfűzve, az szintén közös tartalmazó sorozata lesz az új, immáron kiegészített (illetve, ha voltak olyanok, akkor változatlanul hagyott) szavak halmazának. Erre a nyelvre tehát a szóprobléma eldöntése NP-teljes, így az ET0L-nyelvek esetén sem lehet egyszerűbb. A bizonyításnak a másik részét, hogy nemdeterminisztikusan polinomiális időben megoldható a feladat, itt nem részletezzük. √

Itt jegyezzük meg, hogy az eredeti bizonyítás (Jan Van Leeuwen: The membership question for ET0L-languages is polynomially complete, Information Processing Letters 3 (1975), 138–143.), amit több könyv is átvett, a SAT probléma alapján bizonyítja a szóprobléma eldöntését, viszont unáris kódolást használ a változókra, ami miatt az input hossza exponenciálisan hosszabb, mint pl. bináris kódban. Ezt a bizonyítást nem sikerült kijavítani; a könyvbéli bizonyítást az irodalomjegyzékben is szereplő M. Middendorf által írt cikkből vettük át.

Az előző tétellel szemben a kiterjesztett determinisztikus táblás interakció-mentes L-rendszerekben a szóprobléma determinisztikusan polinomiális időben megoldható, habár az ezidáig ismert algoritmusokban a polinóm fokszáma függ a nemterminálisok számától. Ennek megfelelően egy nevezetes, mindezidáig megoldatlan probléma (Rozenberg-Salomaa, 1980) olyan algoritmus készítése, amiben a polinóm fokszáma nem függ a vizsgált EDT0L-rendszertől.

Érdekes a következő eredmény.

Példa (a prímhosszú szavak nyelve)

A {w | w hossza prímszám} nyelv nem ET0L-nyelv.

Az előző példa azt is mutatja, hogy az ET0L-nyelvek osztálya, amely egyébként a legbővebb interakció-mentes L-rendszerekkel előállítható nyelvosztály, valódi részhalmaza a CS környezetfüggő nyelvek halmazának.

Itt jegyezzük meg, hogy pl., ha egy DT0L vagy T0L rendszer felnőtt nyelvére vagyunk kíváncsiak, akkor ADT0L-, illetve AT0L-rendszerről beszélünk. Az irodalomjegyzékben megadott szakirodalomban ezekkel kapcsolatosan is találunk eredményeket és alkalmazásokat.

In document Párhuzamos algoritmusmodellek (Pldal 50-54)