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.