8.3. Bonyolult számítási problémák megoldása

Membránrendszerekkel időben hatékonyan oldhatunk meg nehéz problémákat. Az aktív membránok segítségével ahogy haladunk az időben (lineárisan), (exponenciális) teret (tárhelyet) csinálhatunk számításainknak. Ez adja e rendszerek erejét (gyorsaságát).

A következő alfejezetekben a Hamilton-út probléma, illetve a SAT probléma egy-egy hatékony megoldását mutatjuk be.

8.3.1. A Hamilton-út feladat megoldása membránok születésével

Ebben az alfejezetben, polarizáció nélküli (vagyis a töltés megváltoztatása nélküli, végig semleges töltésű) rendszerrel oldjuk meg a Hamilton-út problémát (így a töltést nem is írjuk ki most a felső indexbe). Legyen adott egy irányított gráf, csúcsai: és élei: . Legyen a csúcsok száma : . A feladat az, hogy döntsük el van-e a gráfban Hamilton-út az -től az -ig. Induljunk ki a következő membránstruktúrából: , tehát két membrán, az 1-es a 0-on (a külső membránon) belül. Ezen kívül legyen az objektum az 1-ben. Használjuk a következő ábécét: , vagyis az objektumaink párok, illetve a csúcsok nemüres részhalmazai, valamint az szimbólum lesznek.

Szabályaink a következőek:

, ahol

,

és minden értékre, és

.

Az ötlet, ami a konstrukció mögött van: Az objektum jelenti azt, hogy az -ből eljutunk az csúcsig úgy, hogy csúcson mentünk keresztül. Ahány helyre mehetünk az csúcsból tovább, annyi ilyen típusú objektum lesz bevezetve. Minden ilyen objektum létrehoz egy címkéjű membránt. A lehetséges utak tehát a membrán struktúrába lesznek bekódolva. Ha van hosszúságú utunk, akkor az a membrán struktúrában mélységben van. Ebből a mélységből visszafele elindulnak a csúcsok halmazának részhalmazai amik összegyűjtik azon csúcsokat, amik az adott úton szerepeltek. Mivel itt töltéseket nem használunk, a rendszer maximálisan párhuzamos működésében megengedjük egyszerre több 6., később pedig egyszerre több 3. típusú szabályának alkalmazását, így a rendszer determinisztikusan lépés alatt adja meg a megoldást: követve a számítást, amennyiben van -ből -be vezető Hamilton-út, akkor ennyi lépés után választ kapunk.

8.3.2. A SAT probléma megoldása elemi membránok osztódásával

Ebben az alfejezetben azt írjuk le, hogy pl. elemi membránok osztódását felhasználva hogyan oldhatjuk meg a SAT problémát hatékonyan (lineáris) lépésszámmal az input formula hosszától függően.

A módszer 1., 2., 3. és 5. típusú szabályokat használ és nem kooperatív, viszont a membránok töltését is felhasználja. Legyen adott egy ítéletlogikai formula konjunktív normál formában: legyen az elemi diszjunkciók (klózok) száma és az ítéletlogikai változók száma. Ekkor megkonstruálható a következő membránszámítógép, ami eldönti, hogy ad adott formula kielégíthető-e:

ahol

,

,

, a kezdeti struktúra, eredetileg semleges töltésekkel,

,

,

– a szabályok halmaza pedig a következőképpen épül fel:

+ , minden értékre. Minden változóhoz három darab objektumot is rendeltünk, amit ezen szabályok tartalmaznak. Az nemdeterminisztikus kiválasztása után osztódik az adott 2 címkéjű membrán úgy, hogy az adott változó igazságának ( ), illetve hamisságának ( ) megfelelő objektumokat tartalmazza a két létrejövő másolat, míg a többi objektum mindkettőben megjelenik. A töltés nem változik meg ezen szabályok használatakor, így ameddig maradt olyan változó, aminek megfelelő objektum van jelen a rendszerben, az további osztódást implikál a megfelelő szabály alkalmazásával. Végül mind a igazságérték-halmaz hozzárendelésével egy-egy 2 címkéjű elemi membrán jön létre az 1 címkéjű membránban. A membránstruktúra mélysége végig 2 marad. (Az eredmény pedig nem függ attól, hogy melyik membránban milyen sorrendben választottuk ki és használtuk fel osztódásra a még meglevő objektumokat, lépés után minden igazságérték hozzárendelést tartalmazni fog a rendszer.)

+ minden esetén.

+ .

+ . A objektumokat számlálóként használjuk: eredetileg volt az egyetlen 2-es címkéjű membránban. Az osztódáskor a számlálónak egy példánya mindig bekerül minden egyes 2 címkéjű membránba, és mivel ezekre az objektumokra ( ) 1. típusú evolúciós szabály van, az párhuzamosan az osztódással végrehajtódik, az osztódáskor létrejövő új membránokban a eggyel nagyobb indexszel lesz jelen, mint volt az előző konfigurációban. Az . lépésben a mellett is létrejön a 2 címkéjű membránokban, és ezek az objektumok fogják a számítást továbbvinni, ehhez viszont az is kell, hogy a objektumok az . lépésben elhagyják a 2 címkéjű membránokat és ezzel pozitívra állítják azok töltését (polarizációját).

+ minden értékre, ha pontosan az klózok tartalmazzák az . változót pozitív literálként.

+ minden értékre, ha pontosan az klózok tartalmazzák az . változót negatív literálként (vagyis negálva). Ekkor egy lépésben mind a darab 2 címkéjű membránban (amik polarizációja a számítás ezen fázisában már ), előállítjuk az objektumokat az összes olyan értékre, amelyre az . klózt kielégíti az adott értékelés. Ezek a szabályok evolúciós szabályok, így (maximálisan) párhuzamosan végbemennek egy lépésben. Ekkor, ha van olyan membrán, amiben az összes klózhoz tartozó ( ) jelen van, akkor a formula kielégíthető, egyébként nem. Már csak ezt az eredményt kell kinyernünk a rendszerből:

+ . Mind a darab belső membránra ellenőrizzük, hogy az benne van-e. Ha benne volt az adott membránban, akkor kiküldjük onnan, miközben a membrán töltése negatívvá válik. (Azok a membránok amikben nem volt pozitívak maradnak, és nem változnak a számítás további részében.)

+ , minden értékre.

+ , minden értékre.

+ . A negatív töltésű 2 címkéjű membránokban egyszerre két műveletet történik: egyrészt a kielégített klózokat számoljuk a indexének növelésével, miközben minden a membránban levő indexét csökkentjük. Tegyük fel, hogy az eddigi klózokat kielégítette egy adott értékelés, ekkor ha a következő klózt is kielégíti, újra képződik benne objektum. Miközben a legutolsó szabállyal egy kerül be és a töltés megint pozitívvá válik. Így megint lehetőség van az objektumok kiküldésére, miközben negatívvá válik a töltés. Ha valahol ez a folyamat megakadt, vagyis nem képződött az adott lépés során, akkor a bejövő pozitívvá változtatja a membrán töltését és blokkolja a további szabály alkalmazásokat. Érdekes megfigyelni, hogy az 1 címkéjű membránban pontosan annyi objektum van, mint ahány membrán töltése negatív. Az előző szabályok ciklusos alkalmazása addig megy, amíg folyamatosan kielégíthető klózok következnek az adott membránbeli kiértékeléssel. Végül maximum lépés után ezek a szabályok már nem alkalmazhatóak, és pontosan akkor jutunk el eddig a lépésszámig, ha volt olyan membrán, amiben az objektumok mindegyike jelen volt, és ekkor a objektum megjelenik benne.

+ .

+ . Ha a objektum keletkezett, akkor kielégíthető a formula, a választ az előző két szabály adja ki a rendszerből. A számítás lépésben zajlott le. Ha a formula nem kielégíthető, akkor a számítás már hamarabb elakad.

8.3.3. Általános párhuzamos membránszámítógép

Bonyolult problémák megoldására a párhuzamos számítási modellek segítségével általános stratégia, az összes lehetőség (megoldás jelölt) párhuzamos ellenőrzése, ahogy már eddig is láthattuk ezt. Ebben az alfejezetben egy ilyen általános stratégiát megvalósító elméleti eszközt mutatunk be kooperatív szabályokkal:

  1. A kiindulási konfiguráció két membránt tartalmaz.

  2. A belsőt membránt exponenciálisan sok másolatban hozzuk létre lineáris lépésszám alatt: Ez a belső „párhuzamos motor”, ami a maximális párhuzamosság kihasználásával, osztódással exponenciális méretű „adat medencét” hoz létre, miközben az „időzítő óra” folyamatosan ketyeg a szinkronizáció miatt.

  3. Az „adat medence” legenerálása után, kooperatív szabályokkal ellenőrizzük, hogy van-e megoldás a rendszerben.

  4. Amikor nyilvánvalóvá válik, üzenetet küld a legkülső membrán a környezetbe, hogy van vagy nincs megoldása a problémának.

Itt jegyezzük meg, hogy az utolsó két fázis minden probléma esetén konstans számú lépést vesz igénybe. A rendszert a 8.4. ábra szemlélteti.

8.4. ábra - Általános párhuzamos feladatmegoldó (membrán-) számítógép modellje.

Általános párhuzamos feladatmegoldó (membrán-) számítógép modellje.

A következő alfejezetben ezen problémamegoldások osztályozását mutatjuk be.

8.3.4. Megoldások uniformitása

A membránrendszerekkel történő probléma megoldás során felmerül, hogy egy adott membránrendszer csak egy adott probléma megoldására képes, vagy több hasonló paraméterrel rendelkező probléma megoldására is.

Szemi-uniform egy membránrendszer, illetve az általa megvalósított algoritmus, ha a problémaosztály egy adott problémájának megoldására képes, ekkor az input a rendszer objektumaiba és szabályaiba szokott belekódolva lenni. Ilyenek voltak az előzőekben említett Hamilton-út és SAT probléma megoldására készített eljárások. (A DNS számítógépek részben említett Adleman kísérlet is ide tartozik ebben az értelemben.)

Ezzel szemben, uniformnak nevezünk egy membránrendszert, ha a problémaosztály minden azonos paraméterekkel rendelkező problémáját képes megoldani. Ilyenkor egy lehetőség az input megadására, az ún. input membrán használata; az adott membránrendszerek kiinduló konfigurációi csak ennek a tartalmában térnek el egymástól. (Ilyen uniform problémamegoldásra jó példa a Lipton-féle módszer, amely a SAT probléma megoldására használható, és minden egyes rendszer (vagyis adott molekulahalmaz) maximum adott számú változó esetén bármely (konjunktív normálformájú) formulához, de ugyanazokkal a DNS molekulákkal működőképes. További részletek ezekről a DNS-t használó algoritmusokról a Nagy Benedek: DNS számítógépek és formális modelljeik című könyvben.) Viszont elvárás az az uniform membránrendszerek esetén, hogy maga a leírása a rendszernek történjen meg pl. Turing gép segítségével, pl. oly módon, hogy a Turing-gép az inputra adja meg (gyártsa le) azt a membránrendszert, ami az paraméterű problémaegyedeket képes megoldani.

Tehát nem a teljes, általános probléma minden (bármelyik, tetszőleges) egyedét tudja megoldani egy membránrendszer. Viszont azt elvárjuk az ilyen „membránalgoritmusoktól”, hogy a probléma különböző egyedeinek megoldására „hasonló” rendszerek legyenek képesek. Ezt a hasonlóságot szokás pl. a következőképpen definiálni:

A membránrendszerek egy családja polinomiális időben uniform módon felírható, ha van olyan Turing-gép, amely inputként kapva a problémát (vagy annak meghatározó paramétereit) polinomiális időben előállítja (leírja) azt a membránrendszert, ami az adott problémához, illetve adott paraméterrel rendelkező problémákhoz a megoldást szolgáltatja.

Ezek szerint azokat a membránrendszereket tekinthetjük hatékony probléma-megoldóknak, amiket polinomiális időben uniform módon elő tudunk állítani, és ők maguk is uniform megoldók, vagyis több azonos paraméterű problémaegyedet is meg tudnak oldani; és természetesen maguknak a membránrendszerek által megvalósított algoritmusoknak is polinomiális a lépésszáma.

A teljes problémaosztály problémáinak lefedésére, vagyis minden egyedének megoldására, azonban ilyenkor is csak a membránrendszerek egy végtelen családja képes. Hasonlóan működnek a logikai kapcsolókból felépített Boole-hálózatok is, ahol az ilyen hálózatok családja képes csak az eredeti problémaosztályt lefedni.

A fentiek szerint a membránrendszerekkel történő problémamegoldás során, egy problémaosztályhoz (pl. SAT konjunktív normál formájú formulákra) nem egy konkrét membránrendszert adunk meg, hanem egy membránrendszer családot, amelynek megfelelő eleme lesz képes az adott probléma példány megoldására (pl. az adott formula kielégíthetőségének eldöntésére). Itt jegyezzük meg azt a fontos tényt, hogy a felhasznált ábécé számossága (vagyis a lehetséges különböző objektumok száma) a probléma méretével még uniform membránrendszerek esetén is legalább lineárisan nő.

Ezzel szemben, például a Turing-géppel történő problémamegoldás esetén olyan Turing gép megkonstruálásáról van szó, amely a problémaosztály minden egyedére megoldást tud szolgáltatni, a bonyolultsági fogalmak is így nyernek értelmet. Ez az általánosan uniform megoldás kapcsolható össze az eredeti bonyolultsági osztályba tartozó (pl. NP-teljes), problémával. Ha Turing-géppel, vagy generatív grammatikával oldunk meg vagy írunk fel egy problémaosztályt, akkor az ábécé véges, rögzített. Minden problémapéldány a benne szereplő paraméter(ek) értékétől függetlenül ezzel az előre rögzített véges ábécével írható le. Ezzel szemben a membránszámítások során általában indexelt betűket használva az ábécé mérete függ a konkrétan megoldandó feladattól (szemi-uniform eset) vagy méretétől (uniform eset).

A jelen könyv megírásakor egyelőre nem ismert olyan membránrendszer, ami általánosan uniform megoldást ad pl. a SAT problémára, a gondot pl. az input véges ábécével való kódolása jelenti. Ehhez pl. összetett objektumok jelenthetnek megoldást (sztringek, vagy egyéb összetett objektumok, vagy akár intervallum-értékkel rendelkező objektumok).

A membránrendszereknél az objektumok száma, sőt a membránok száma is exponenciálisan nőhet az időben. Tulajdonképpen ez ad esélyt ezeknek a rendszereknek arra, hogy kis időbonyolultsággal oldjanak meg bonyolult (NP-teljes, PSPACE-teljes) problémákat is.