Ugrás a tartalomhoz

Adatstruktúrák és algoritmusok

Házy Attila, Nagy Ferenc (2009)

8. fejezet - NP-teljesség

8. fejezet - NP-teljesség

A következőkben vázlatosan betekintünk az algoritmusok bonyolultság elméletébe. Az előző fejezetekben tárgyalt algoritmusok általában legrosszabb esetben polinomiális idejűek voltak. Vajon minden probléma megoldására adható polinomiális idejű algoritmus? Sajnos a válasz az, hogy nem. A polinomiális időben megoldható problémákat tekintjük jól kezelhetőknek. Ezen problémák zárt osztályt képeznek, azaz, ha az egyikük eredményét egy másik ilyen probléma bemenetére adjuk, akkor az összetett probléma is polinomiális idejű lesz.

8.1. Definíció. Az absztrakt probléma egy kétváltozós reláció a probléma eseteinek (bemeneteinek) és a probléma megoldásainak halmazán.

Így egy inputhoz több output is tartozhat.

8.2. Definíció. Döntési (eldöntési) probléma az olyan absztrakt probléma, melynek a megoldása "igen", vagy "nem".

Ez azt jelenti, hogy a döntési probléma egy leképezés, ahol a nulla szimbolizálja a"nem"-et, az 1 az "igen"-t. Optimalizálási problémák például átalakíthatók döntésivé azon átfogalmazással, hogy az optimum kisebb-e egy előre megadott értéknél.

8.3. Definíció. Egy absztrakt objektumokból álló halmaz kódolása egy leképezés -ről a bináris sorozatokra.

Az algoritmusok a probléma eseteinek kódolását kapják inputként.

8.4. Definíció. Konkrét az absztrakt probléma, ha esetei a bináris sorozatok.

8.5. Definíció. Egy algoritmus egy konkrét problémát idő alatt megold, ha minden hosszúságú esetre a megoldás lépést igényel.

8.6. Definíció. Egy konkrét probléma polinomiális időben megoldható, ha létezik olyan algoritmus, amely idő alatt megoldja valamely számra.

8.7. Definíció. P bonyolultsági osztálynak nevezzük a polinomiális időben megoldható problémák halmazát.

8.8. Definíció. Azt mondjuk, hogy egy függvény polinomiális időben kiszámítható, ha létezik olyan A polinomiális algoritmus, amely tetszőleges bemenetre az -et adja eredményül.

8.9. Definíció. Azt mondjuk, hogy az és kódolások polinomiálisan kapcsoltak, ha léteznek olyan és polinomiális időben kiszámítható függvények, hogy bármely esetre és .

Polinomiálisan kapcsolt kódolások esetén mindegy, hogy melyiket használjuk a probléma polinomiális időben való megoldhatóságának az eldöntésére. Erős kapcsolat áll fenn a döntési problémák és a formális nyelvek között. A formális nyelvek valamely szimbólumok véges halmazát, amit ábécének neveznek, használják fel a formális nyelv megadására. Az ábécé elemeiből véges sorozatokat (szavakat) képezve, a nyelvet az így képezhető összes véges sorozatok halmazának részhalmazaként adják meg. Ha az ábécét a jelöli, akkor a sorozatokat a . Ha az ábécé a zérus és az egy jel, akkor a sorozatok halmaza az összes véges bináris jelsorozat, amihez hozzávesszük még az üres szót, amit -nal jelölünk. Mivel a nyelv eszerint egy halmaz (részhalmaz), ezért érvényesek rá és általában a formális nyelvekre a halmazelméleti műveletek, mint például az unió, a metszet, a komplementer képzés. További művelet a konkatenáció, amely a benne szereplő nyelvek szavainak egymás után írását, összekapcsolását jelenti. Jelölésben az és nyelvek konkatenáltja . Az nyelv lezártjának nevezik az nyelvet. A döntési problémák esetén a döntési probléma esethalmaza , a bináris jelsorozatok halamaza. Magát a döntési problémát pedig ezen halmazból az a nyelv jelöli ki, amely azon sorozatokból áll, amelyre a probléma egyet ad. Ha a probléma, akkor a neki megfelelő nyelv. .

8.10. Definíció. Azt mondjuk, hogy az algoritmus elfogadja az szót, ha , és elutasitja azt, ha .

8.11. Definíció. Azt mondjuk, hogy az algoritmus elfogadja az nyelvet, ha a nyelv minden szavát elfogadja.

Ez nem jelenti azt, hogy a nyelvhez nem tartozó szavak közül ne fogadna el egyet sem.

8.12. Definíció. Azt mondjuk, hogy az algoritmus eldönti az nyelvet, ha a nyelv minden szavát elfogadja, a többit pedig elutasítja.

8.13. Definíció. Azt mondjuk, hogy az algoritmus polinomiális időben elfogadja az nyelvet, ha a bármely hosszúságú szót időben elfogad valamely konstansra.

8.14. Definíció. Azt mondjuk, hogy az algoritmus polinomiális időben eldönti az nyelvet, ha a bármely hosszúságú szót időben elfogad, ha a szó -beli, vagy elutasít, ha nem -beli. Itt konstans.

8.15. Definíció. Azt mondjuk, hogy az nyelv polinomiális időben elfogadható/eldönthető, ha létezik algoritmus, amely polinomiális időben elfogadja/eldönti.

A bonyolultsági osztály azon nyelvek halmaza a fölött, amelyek polinomiális időben elfogadhatók. Könnyebb általában egy probléma megoldását ellenőrizni, mint azt megtalálni. Az ellenőrzés egfajta tanúsítvány, ami a megoldás helyességét bizonyítja.

8.16. Definíció. Ellenörző algoritmusnak nevezzük az olyan kétbemenetű algoritmust, amelynek egyik bemenete a döntési probléma bemenete, a másik pedig, amit tanúnak neveznek, egy bináris szó.

8.17. Definíció. Azt mondjuk, hogy az ellenörző algoritmus bizonyítja az szót, ha létezik olyan tanú, hogy , és bizonyítja az nyelvet, ha bizonyítja minden szavát és minden szó, amit bizonyít -ben van.

8.18. Definíció. Azon nyelvek osztályát, amelyek polinomiális időben bizonyíthatók, bonyolultsági osztálynak nevezzük.

Az megnevezés a "nondeterministic polinomial (time)" rövidítése. Annyi bizonyos, hogy , hiszen az ellenörző algoritmus lehet maga az nyelv polinomiális idejű eldöntő algoritmusa azáltal, hogy az bemenetet ignorálja. Azt nem tudjuk, hogy , vagy áll-e fönn, bár intuitíve az első látszik igaznak. A válasz egyelőre nem ismeretes. probléma például a Hamilton-kör probléma, amely azt óhajtja eldönteni, hogy van-e egy irányítatlan gráfban Hamilton-kör, azaz olyan kör, amely a gráf mindegyik csomópontján csak egyszer megy át. A problémák bonyolultságának összehasonlítását könnyíti meg a visszavezethetőségi elv. Ez az elv a problémát átfogalmazza egy másik problémává, olyanná, amelynek megoldásából már következik az eredeti probléma megoldása.

8.19. Definíció. Azt mondjuk, hogy az nyelv polinomiálisan visszavezethető az nyelvre (jelölése ), ha létezik olyan polinom időben kiszámítható függvény, hogy minden esetén .

Az függvény neve visszavezető függvény, a kiszámító algoritmusáé pedig visszavezető algoritmus. Teljesül az állítás, miszerint, ha egy probléma visszavezethető polinomiálisan egy másikra és a másik -beli, akkor az eredeti is -beli volt.

8.20. Definíció. Azt mondjuk, az nyelv -teljes, ha teljesül az következő két feltétel

Minden -re .

Az -teljes nyelvek halmazát -vel jelöljük. Ha egy nyelv a második tulajdonságot teljesíti, de az elsőt nem, akkor nehéznek nevezzük.

8.21. Tétel.

Ha létezik polinomiális időben megoldható NP-teljes probléma, akkor P=NP, azaz ha létezik NP-ben polinomiális időben nem megoldható probléma, akkor egyetlen NP-teljes probléma sem polinomiális.

A tétel nyílvánvaló, mert ha van olyan nyelv, amelyre , akkor az -teljesség 2. pontja alapján bármely esetén és emiatt akkor is fennáll. A jelenlegi állapotok alapján kicsi az esélye, hogy valaki előáll egy -probléma polinomiális megoldásával, ami azt jelentené, hogy . egy probléma -teljessége arra utal, hogy a probléma nehezen kezelhető.

Végül néhány -teljes probléma következzen.

  • Irányítatlan gráf Hamilton-köre. (HAM probléma.)

  • Boole-hálózat kielégíthetőségi problémája, azaz egy logikai kapukból (ÉS, VAGY, NEM) álló hálózatnak van-e olyan bemenete, amelyre 1-et ad a kimeneten. (C-SAT probléma.) Ugyanis, ha ilyen nem lenne, akkor helyettesíthető lenne egy konstans nullát adó elemmel, megtakarítva ezzel a bonyolult felépítést.

  • A 3-SAT probléma. A pontosan három elemű zárójeleket tartalmazó konjunktív normálformák kielégíthetőségének problémája.

  • Az irányítatlan gráf klikk-problémája, azaz létezik-e a gráfban -méretű klikk, olyan részgráf, amelyben minden csúcspár szomszédos.

  • A minimális lefedő csúcshalmaz probléma. Irányítatlan gráf lefedő csúcshalmaza a csúcsainak olyan részhalmaza, hogy minden élre az él két végpontján lévő csúcsok egyike, vagy mindkettő ezen csúcshalmazban van. A probléma a minimális lefedő csúcshalmaz méretének megkeresése.

  • A részletösszeg probléma. Adott a természetes számok egy véges részhalmaza. Egy adott természetes számra létezik-e olyan halmaz, melyben a számok összege pontosan a szám.

  • Az utazó ügynök probléma. Adott város, amelyet az ügynöknek tetszőleges sorrendben végig kell látogatnia. Ismert bármely két város között a közvetlen utazási költség, egész szám, ami lehet akár negatív is. Megkeresendő a minimális költségű körutazás.

Egy -probléma esetén nagy méreteknél kevés az esély polinomiális algoritmus megtalálására. (Eddig még nem sikerült.) Ilyenkor célszerű közelítő megoldást adó algoritmusokkal foglalkozni.