Skaičiavimo sudėtingumo teorijoje P ir NP klasės vaidina esminį vaidmenį suprantant algoritmų efektyvumą ir skaičiavimo problemų sprendimo sunkumus. Šios klasės apibrėžiamos remiantis sąvoka sprendžiant ir tikrinant narystę kalbomis.
Klasė P susideda iš visų sprendimų problemų, kurias gali išspręsti deterministinė Tiuringo mašina daugianario laiku. Kitaip tariant, problema yra P, jei yra algoritmas, galintis ją išspręsti keliais žingsniais, kuriuos riboja įvesties dydžio daugianario funkcija. Pavyzdžiui, skaičių sąrašą galima rūšiuoti polinominiu laiku, nes yra veiksmingų algoritmų, tokių kaip sujungimo rūšiavimas ir greitasis rūšiavimas, kurie gali atlikti šią užduotį.
Kita vertus, klasė NP (kuri reiškia "nedeterministinį daugianario laiką") susideda iš sprendimų problemų, kurių sprendimas gali būti patikrintas daugianario laiku. Kitaip tariant, jei yra pasiūlytas NP problemos sprendimas, jis gali būti patikrintas daugianario laiku, siekiant nustatyti, ar jis teisingas, ar ne. Tačiau patį sprendimą rasti gali būti nelengva. Klasikinis NP problemos pavyzdys yra keliaujančio pardavėjo problema, kai užduotis yra rasti trumpiausią įmanomą maršrutą, kuris aplanko tam tikrą miestų rinkinį ir grįžta į pradinį miestą. Nors duotą maršrutą galima patikrinti per daugianario laiką, manoma, kad optimalų sprendimą sunku apskaičiuoti.
Ryšys tarp P ir NP yra pagrindinis skaičiavimo sudėtingumo teorijos klausimas, žinomas kaip P ir NP problema. Ji klausia, ar P yra lygus NP, o tai reiškia, kad kiekviena problema, kurios sprendimas gali būti patikrintas daugianario laiku, taip pat gali būti išspręstas daugianario laiku. Jei P iš tikrųjų yra lygus NP, tai reikštų, kad daugelis sudėtingų skaičiavimo problemų tampa efektyviai išsprendžiamos. Tačiau jei P nėra lygus NP, tai reiškia, kad yra problemų, kurias sunku išspręsti skaičiuojant, bet kurias lengva patikrinti.
Polinominio patikrinimo sąvoka yra glaudžiai susijusi su NP apibrėžimu. Teigiama, kad problema gali būti patikrinama polinomiškai, jei yra daugianario laiko patikrinimo algoritmas, kuris kaip įvestį priima siūlomą sprendimą ir problemos pavyzdį ir nustato, ar sprendimas yra teisingas, ar ne. Patvirtinimo algoritmas turėtų veikti daugianario laiku, neatsižvelgiant į problemos egzemplioriaus dydį. Ši sąvoka apima mintį, kad lengviau patikrinti sprendimo teisingumą, nei rasti patį sprendimą.
Apibendrinant galima pasakyti, kad P ir NP klasės skaičiavimo sudėtingumo teorijoje yra apibrėžiamos remiantis kalbų narystės nustatymo ir tikrinimo sąvokomis. Klasė P susideda iš uždavinių, kuriuos galima išspręsti daugianario laiku, o klasę NP sudaro uždaviniai, kurių sprendimas gali būti patikrintas daugianario laiku. Ryšys tarp P ir NP yra pagrindinis atviras kompiuterių mokslo klausimas, turintis įtakos algoritmų efektyvumui ir skaičiavimo problemų sprendimo sunkumui.
Kiti naujausi klausimai ir atsakymai apie sudėtingumas:
- Ar PSPACE klasė nėra lygi EXPSPACE klasei?
- Ar P sudėtingumo klasė yra PSPACE klasės poaibis?
- Ar galime įrodyti, kad Np ir P klasės yra vienodos, rasdami veiksmingą daugianario sprendimą bet kuriai NP užbaigtai problemai deterministinėje TM?
- Ar NP klasė gali būti lygi EXPTIME klasei?
- Ar PSPACE yra problemų, kurioms nėra žinomo NP algoritmo?
- Ar SAT problema gali būti visiška NP problema?
- Ar problema gali būti NP sudėtingumo klasėje, jei yra nedeterministinė tiūro mašina, kuri ją išspręs daugianario laiku
- NP yra kalbų, turinčių daugianario laiko tikrintuvus, klasė
- Ar iš tikrųjų P ir NP yra ta pati sudėtingumo klasė?
- Ar P sudėtingumo klasėje kiekviena kalba be konteksto?
Peržiūrėkite daugiau klausimų ir atsakymų skyriuje „Sudėtingumas“.