3.3. Eldöntési feladatok megoldása

Ebben a fejezetben eldöntési feladatok megoldását mutatjuk be. Az eldöntési feladatokban minden egyes adott inputra az „igen” vagy a „nem” választ várjuk az eldöntési algoritmusunktól . Ily formán azok az inputok, amelyekre a válasz „igen” egy (formális) nyelvet alkotnak. Akkor mondjuk, hogy az nyelv eldönthető egy intervallum-értékű számítással , ha van olyan tömören (logaritmikus tárral) leírható A algoritmus, ami minden egyes input szóhoz megad egy olyan megfelelő számítási sorozatot, aminek az utolsó eleme adja az intervallum-értéket úgy, hogy pontosan akkor, ha , vagyis a számítás végén előállított intervallum-érték nem üres. Mivel a számítás mindig véget ér, ilyenkor az nyelv komplementerét is eldönthetőnek tekintjük.

Szokás a számítási modellek „erejét” azzal megmutatni, hogy bonyolult problémákra gyors választ/megoldást adnak. A következő alfejezetben az NP-teljes SAT problémát tesszük vizsgálatunk tárgyává. Ezután pedig a SAT egy bonyolultabb változatát, a PSPACE-teljes qSAT-ot is megoldjuk lineáris lépésszámmal.

3.3.1. A SAT probléma megoldása lineáris időben

Általában a formulákat normálformában szokták vizsgálni, de ez esetben ez nem követelmény, a formula bármilyen propozicionális logikai formula lehet, tehát a SAT formula általános alakját fogjuk megoldani (a probléma leírása megtalálható az 1.4.1. alfejezetben).

Legyen a formulában előforduló propozicionális változók száma. Minden propozicionális változóhoz hozzárendelünk egy-egy intervallum-értéket ugyanúgy, mint a 2.4.4. alfejezetben az igazságtáblák vizuális szemléltetésénél tettük. A különbség az, hogy most nem csak szemléltetünk, hanem minden intervallum-értéket a kiinduló intervallum-értékből kapjuk meg a számítási sorozat segítségével. Tehát az -edik ítéletváltozóhoz az

értéket rendeljük. Ezeket a szorzás operátor felhasználásával elég gyorsan le tudjuk gyártani: . Lásd a 3.1. ábrát is.

3.1. ábra - Intervallum-értékek kiszámítása az ítéletváltozókhoz.

Intervallum-értékek kiszámítása az ítéletváltozókhoz.

Ezután egyszerűen értékeljük ki az adott logikai formulát a megfelelő intervallum-értékekkel, hasonlóan, mint ahogy a 2.4.4. alfejezetben pl. a 2.4. animáció is mutatja. A kiértékelés könnyen felírható a számítási sorozatként részeként. A formula részformuláit nemcsökkenő logikai összetettség szerint felsorolva, a következő formula fő logikai összekötőjele adja az operátort, az operandus(ok) pedig a már kiszámított közvetlen részformulá(k) intervallum-értéke(i). A számítási sorozat utolsó tagja a kiértékelendő formula fő logikai összekötőjelének operátorával magának a formulának az intervallum-értékét állítja elő. Amennyiben az eredmény a intervallum-érték lesz, akkor a formula kielégíthetetlen. Ellenkező esetben pedig a formula kielégíthető, sőt amennyiben az eredmény a , vagyis a teljes intervallum, a formula logikai törvény (Boole tautológia). Megmutatjuk azt is, hogy milyen értékeléssel lesz igaz egy kielégíthető formula: vegyünk egy olyan pontot, ahol az eredmény intervallum-értékének karakterisztikus függvénye 1-et ad. (Ilyen érték biztos, hogy van, hiszen az eredmény különbözött a -tól.) Nézzük meg, hogy ebben az pontban milyen karakterisztikus függvényértékkel bírnak a propozicionális változók. Ha minden változóra fennáll, hogy az -edik változó értéke éppen , akkor a propozicionális formula értéke igaz lesz.

Látható, hogy egy formula kielégíthetőségének vizsgálatához nincs szükség több intervallum-értékre, mint a formula hosszának négyszerese. Pontosabban mondva, az első változó értéke a számítási sorozat első eleme, minden további változó értékének előállítása négy lépést vesz igénybe. Ezután a kiértékelés pontosan annyi lépésből áll, mint a formulában szereplő logikai összekötőjelek száma (vagyis a formula logikai összetettsége). Tehát az inputformula hosszának lineáris függvényével felülről becsülhető az intervallum-értékű algoritmusunk lépésszáma.

Egy számítás belső párhuzamosságának a mérésére bevezethetjük a bitmélység fogalmát, ez megadja, hogy az adott számítás az adott inputon (maximum) hány bites. A szorzás operátorral tulajdonképpen a bit-mélység növelését végezhetjük el számítás közben.

3.3.2. A qSAT probléma és lineáris lépésszámú megoldása

A qSAT a SAT probléma kvantifikált változata. A kvantorok nem elsőrendű logikabeli kvantorok, hanem az ítéletváltozók lehetséges igazságértékeire (igaz, hamis) vonatkoznak. Legyen adott egy propozicionális logikai formula az ítéletváltozókkal. A SAT probléma az, hogy tudunk-e úgy igazságértéket rendelni ezen ítéletváltozókhoz úgy, hogy a formula kiértékelése igaz értéket adjon. A qSAT probléma a következő: igaz-e az, hogy az bármelyik igazságértéket is veszi fel, tudunk úgy igazságértéket választani az -nek, hogy az bármelyik igazságértéke mellett, van olyan igazságértéke az -nek ..., hogy a formula így kiértékelve igaz legyen. Minden változóra vonatkozik kvantor, minden páratlanadikra az univerzális, minden párosadikra pedig az egzisztenciális. Formálisan az elé írjuk a kvantoros előtagot, , ahol , ha páratlan, egyébként ; valamint az változóhoz a igazságértéket rendeljük:

Ennek a problémának az általános eldöntése PSPACE-teljes feladat. Egyébként a legtöbb kétszemélyes játék a PSPACE osztályba tartozik, és itt is megjelenik a „játékjelleg”: az univerzális kvantor az ellenfél választásánál (lépésénél), az egzisztenciális pedig a mi lépéseinknél: így egy és-vagy fával ábrázolható a feladat, mint egy játékfa, a feladat pedig azzal ekvivalens, hogy eldöntsük, van-e nyerő stratégiánk.

Most lássuk, hogyan oldható meg a qSAT probléma lineáris lépésszámmal az intervallum-értékű számítási paradigmában.

A feladat az formula kiértékelésével kezdődik, ugyanúgy, mint a SAT problémánál, tulajdonképpen megoldjuk az formulára a SAT-problémát (lásd 3.3.1. alfejezet).

Ezután a kvantoros részformulák értékeit kell meghatároznunk. Ehhez azt kell először is látnunk, hogy azok a kiértékelések, amelyek csak igaz vagy hamis voltában térnek el egymástól, vagyis a többi igazságérték rögzített, az intervallum-értékben egymás mellett található. Így a részre osztott intervallum tulajdonképpen blokkot alkot. Ha univerzális kvantor tartozik az adott változóhoz, akkor azt kell megnéznünk, hogy a teljes blokk az intervallumunk része-e; egzisztenciális kvantor esetén pedig azt, hogy nem üres-e az adott blokk. Ehhez fogjuk az eltolás operátorokat használni, hogy a blokk egyik részéről az információt a másik részére is átvigyük, aztán univerzális kvantor esetén konjunkcióval, egzisztenciális kvantor esetén pedig diszjunkcióval tudjuk előállítani a kvantoros formula intervallum-értékét. Ha ezt az értéket meghatároztuk, akkor az utolsó olyan változó, amire a kvantoros kiértékelést még nem végeztük el, ugyancsak egymás melletti intervallumrészeken veszi fel az igaz és hamis értékeket, úgy hogy közben a többi még nem értékelt kvantorú változó értéke rögzített. Ennek megfelelően a kiértékelés az előzőekben leírt módon folytatódik, amíg a teljes kvantoros rész értékét meg nem határozzuk.

3.2. ábra - Az intervallum-értékű számítás egy kielégíthető formulára (balra) és a legbelső egzisztenciális kvantoros részformula kiszámítása lépésenként (jobbra).

Az intervallum-értékű számítás egy kielégíthető formulára (balra) és a legbelső egzisztenciális kvantoros részformula kiszámítása lépésenként (jobbra).

Formulákkal ezt a következőképpen írhatjuk le: jelölje azt a (kvantoros) részformulát amiben már az utolsó kvantort kiértékeltük. Így kezdetben adott a . Ha az páros, akkor univerzális kvantoros részformulát értékelünk ki:

Ha páratlan, akkor egzisztenciális kvantor áll a részformulában elől:

Ekkor a végeredményként kapott intervallum-érték üres, ha a formula nem kielégíthető (nincs benne a qSAT nyelvben), és az eredmény a , ha a formula kielégíthető, vagyis benne van a qSAT nyelvben, van nyerő stratégiánk. A 3.2. ábra a bal oldalon a formula kiértékelésének főbb állomásait mutatja be, míg a jobb oldalon egy egzisztenciális kvantoros kiértékelést mutat részletesen, lépésenként. Az ábrán a blokkokat is berajzoltuk a könnyebb követhetőség kedvéért, illetve szürke háttérrel jeleztük, ahol az univerzális kvantoros számítási lépéseket kell alkalmazni. A 3.3. ábrán a nem kielégíthető qSAT formulára mutatjuk meg a számítás néhány fontosabb értékét (balra), illetve egy univerzális kvantoros számítási sorozatrészletet szemléltetünk (jobbra).

3.3. ábra - Nem kielégíthető formula elemzése (bal oldalon) és egy univerzális kvantoros formula értékelése lépésenként (jobb oldalon).

Nem kielégíthető formula elemzése (bal oldalon) és egy univerzális kvantoros formula értékelése lépésenként (jobb oldalon).

Az algoritmus lépésszáma a kvantormentes részre, vagyis a SAT megoldása, a kvantormentes rész hosszának maximum 4-szerese. Ezután minden kvantoros tagra a kiértékelés 7 lépésben megtörténik. Ha úgy tekintjük, hogy egy kvantoros előtag leírása legalább két betűt vesz igénybe (az eredeti leírásunknak megfelelően ennél többet is), akkor minden egyes input qSAT formulára (akár kielégíthető akár nem) az eldöntési algoritmusunk lefut maximum négyszer annyi lépésben, mint a formula hossza. A bitmélyége ennek az algoritmusnak egybeesik az ugyanazon formula kvantormentes részére alkalmazott SAT probléma algoritmusának a bitmélységével.

Belátható, hogy a PSPACE problémaosztály jól jellemezhető az általunk tekintett speciális intervallum-értékű számításokkal.

Mielőtt rátérünk a diszkrét értékű függvények intervallum-értékű számításokkal való kiszámítására, megemlítjük, hogy NP-teljes gráfelméleti problémát is hatékonyan megoldhatunk intervallum-értékű számításokkal. Példaként említjük a hármas csoportosítás problémáját, ebben a gráf csúcsai három egyforma méretű diszjunkt csoportba oszthatók, és csoporton belüli csúcsok közt nincs él. A feladat az, hogy olyan csúcshármasokat adjunk meg, amelyben minden három csúcs össze van kötve a másik kettővel. A kérdés annak eldöntése, hogy az adott gráf esetén megoldható-e ez a feladat.