Az NP osztály, amely a nem-determinisztikus polinomidőt jelenti, központi szerepet játszik a számítási komplexitás elméletében, és olyan döntési problémákat foglal magában, amelyek polinomiális idejű hitelesítőkkel rendelkeznek. Döntési probléma az, amelyre igen vagy nem választ kell adni, a hitelesítő pedig ebben az összefüggésben egy olyan algoritmus, amely egy adott megoldás helyességét ellenőrzi.
Fontos különbséget tenni a probléma megoldása (számítás) és a megoldás ellenőrzése (ellenőrzés) között. Az NP-ben a hangsúly azon van, hogy létezik-e polinomiális idejű hitelesítő, amely meg tudja erősíteni a megoldás helyességét.
A P osztály, amely a polinomidőt jelenti, olyan döntési problémákat tartalmaz, amelyek polinomiális időn belül determinisztikus Turing-géppel megoldhatók. Így minden P-beli problémára nem csak létezik egy polinomiális idejű algoritmus a megoldás megtalálására, hanem létezik egy polinomiális idejű algoritmus is a megoldás ellenőrzésére.
A látszólagos ellentmondás abban a megfigyelésben rejlik, hogy minden P-beli probléma, amelynek eredendően polinomiális idejű megoldási algoritmusa van, rendelkezik egy polinomidő-ellenőrzővel is. Ez azonban nem mond ellent az NP definíciójának. Az NP meghatározó jellemzője a polinomiális idejű hitelesítő megléte, függetlenül attól, hogy mennyi ideig tarthat a megoldás megtalálása. Ez azt jelenti, hogy minden P-beli probléma NP-ben is szerepel, mivel megoldásuk polinomiális időben ellenőrizhető.
Vegyük például a prímszámok tesztelésének problémáját. Ez a probléma kétféleképpen fogalmazható meg: prímszámok generálásával és annak ellenőrzésével, hogy egy adott szám prím-e. A Sieve of Eratosthenes egy algoritmus az összes prímszám generálására egy bizonyos határig, és ezt hatékonyan teszi, de időbonyolultsága nem polinomiális a számítási komplexitáselméletben használt szoros értelemben; gyakran jelölik O(n log log n), ami jobb, mint a lineáris, de nem szigorúan polinom a P definíciója szerint. Másrészt az a probléma, hogy egy adott szám prím-e (prímszám tesztelés) más feladat. A hatékony algoritmusok, mint például az AKS primalitásteszt, lehetővé teszik a prím ellenőrzést polinomiális időben. Ezért a prímszám-tesztelési probléma a verifikáció kontextusában a P osztályba, valamint az NP-be esik, mert egy megoldás (hogy egy szám prím-e) polinomiális időben ellenőrizhető. Ez azt mutatja, hogy bár a prímszám-generálás és a prímszám-tesztelés összefüggenek, a számítási bonyolultság szempontjából eltérő megfontolásokat foglalnak magukban.
Összefoglalva, az NP definíciója, hogy polinomiális idejű hitelesítőkkel rendelkezik, összhangban van a P természetével. A megkülönböztetés nem az ellenőrzési lépésben, hanem a megoldások keresésének folyamatában történik: a P feladatok polinomiális időben megoldhatók és ellenőrizhetők, míg az NP feladatok polinomiális időben. polinomiális időben ellenőrizhetőek, de nem mindig tudjuk, hogy megoldhatók-e polinom időben.
További friss kérdések és válaszok ezzel kapcsolatban Bonyolultság:
- A PSPACE osztály nem egyenlő az EXPSPACE osztállyal?
- A P komplexitási osztály a PSPACE osztály részhalmaza?
- Bebizonyíthatjuk-e, hogy az Np és a P osztály azonos, ha hatékony polinomiális megoldást találunk bármely NP teljes feladatra egy determinisztikus TM-en?
- Egyenlő lehet az NP osztály az EXPTIME osztállyal?
- Vannak olyan problémák a PSPACE-ban, amelyekre nincs ismert NP algoritmus?
- Lehet egy SAT probléma NP teljes probléma?
- Lehet-e egy probléma NP komplexitási osztályban, ha van egy nem determinisztikus turinggép, amely polinomiális időben megoldja
- Az NP azon nyelvek osztálya, amelyek polinomiális időellenőrzőkkel rendelkeznek
- P és NP valójában ugyanaz a komplexitási osztály?
- Minden környezetfüggetlen nyelv a P komplexitási osztályban?
További kérdések és válaszok a Complexity oldalon