P proti NP (P vs NP): definicija, zgodovina in pomen v računalništvu
P proti NP: jasna definicija, zgodovina in pomen v računalništvu. Spoznajte ključne mejnike, implikacije za algoritme in zakaj je to največji odprt problem.
P proti NP je eno najpomembnejših in najbolj znanih nerešenih vprašanj v računalništvu in matematiki. V jedru gre za vprašanje: ali lahko vsak problem, katerega rešitev lahko računalnik hitro preveri, računalnik tudi hitro reši? Z drugimi besedami, ali sta množici problemov P in NP enaki ali različni?
Za lažje razumevanje: P so problemi, ki jih lahko determinističen računalnik reši v polinomskem času (to pomeni "razumno hitro" glede na velikost podatkov). NP je množica problemov, za katere lahko determinističen računalnik hitro preveri pravilnost podane rešitve ali pa jih rešuje nedeterminističen računalnik v polinomskem času. Intuitivno: če vam nekdo priskrbi kandidatno rešitev, jo lahko v kratkem času preverite, tudi če iskanje te rešitve na prvi pogled traja dolgo.
Kratek zgodovinski pregled
Leta 1956 je Kurt Gödel napisal pismo Johnu von Neumannu, v katerem je razmišljal o tem, ali je mogoče reševati določene logične probleme v kvadratnem ali linearnem času — to je ena izmed zgodnjih različic vprašanja, ki vodi do sodobne formulacije P proti NP. Leta 1971 je Stephen Cook v članku "The complexity of theorem proving procedures" natančno opredelil problem P proti NP in pokazal pomembno lastnost: obstajajo problemi, ki so vsaj tako težki kot vsak problem v NP. Istočasno je Leonid Levin v Sovjetski zvezi neodvisno prišel do podobnih rezultatov.
Kmalu zatem (1972) je Richard Karp identificiral serijo koristnih praktičnih problemov (npr. problem zadovoljevanja bojnih izrazov SAT, problem trgovskega potnika v odločitveni različici, problem komuplete), ki so NP-polni, kar je znatno povečalo pomen te teorije v računalniški praksi.
Pomembne definicije
- P (polinomski čas): problemi, ki jih lahko determinističen algoritem reši v polinomskem času glede na velikost vhodnih podatkov.
- NP (nondeterministic polynomial time): problemi, za katere lahko predloženo rešitev preverimo v polinomskem času; ekvivalentno jih rešuje nedeterminističen algoritem v polinomskem času.
- NP-težki (NP-hard): problemi, ki so vsaj tako težki kot najtežji problemi v NP; ni nujno, da so sami v NP.
- NP-polni (NP-complete): problemi, ki so hkrati v NP in NP-težki. Če bi našli polinomskostni algoritem za enega NP-polnega problema, bi to pomenilo P = NP.
Primeri pogosto omenjanih problemov
- SAT (satisfiability) — ali obstaja dodelitev vrednosti spremenljivkam logičnega izraza, ki ga naredi resničnega?
- Traveling Salesman Decision (obstoji pot kratka do dolžine k?) — odločitvena različica problema trgovskega potnika.
- Grafično barvanje, npr. ali je graf k-barvljiv?
- Knapsack (vreča) — odločitveni in optimizacijski primeri; številni izmed teh problemov so NP-polni ali NP-težki.
Pomen in posledice
Vprašanje P proti NP ni le teoretično; ima velike praktične posledice:
- Če bi veljalo P = NP, bi mnoge težke probleme lahko rešili hitro, kar bi spremenilo področja, kot so optimizacija, avtomatsko dokazovanje teorij, strojno učenje, načrtovanje in biokemijsko iskanje zdravil. Vendar bi to tudi ogrozilo moderno kriptografijo, ki temelji na predpostavki, da nekateri problemi niso hitro rešljivi (npr. faktorizacija ali problemi, iz katerih se gradijo kriptografske sheme).
- Če bi veljalo P ≠ NP, bi to potrdilo, da obstajajo temeljno težki problemi, za katere učinkoviti (polinomskostni) algoritmi najverjetneje ne obstajajo. To bi utemeljilo uporabo približnih in heurističnih metod za reševanje praktičnih primerov.
Stanje raziskav in nagrade
Do danes (stanje: nerešeno) ni znanstveno sprejetega dokaza niti za P = NP niti za P ≠ NP. Večina računalničarjev in teorikov verjame, da je P ≠ NP, vendar to niso uspeli formalno dokazati. Problem je eden od sedmih t. i. milenijskih problemov, ki jih je za nagrado izbral Clay Mathematics Institute, s finančno nagrado 1.000.000 ameriških dolarjev za pravilno rešitev.
Pomembne teorije in ovire
Pri poskusih reševanja problema P proti NP so raziskovalci naleteli na različne tehnične ovirne rezultate, kot so relativizacija, rezultati o naravnih dokazih in interakcija z nasprotnimi modeli računanja. To pomeni, da so preproste tehnike za dokazovanje enakosti ali razlike že bile ovržene v splošnih primerih, zato je potrebna nova, bolj subtilna matematika ali računalniška teorija.
Kaj to pomeni za uporabnike in inženirje
Tudi brez dokončnega dokaza vprašanje P proti NP močno vpliva na prakso: inženirji pogosto sprejmejo pragmatičen pristop — iščejo hitre heuristike, približne algoritme ali algoritme, ki delujejo hitro v povprečju ali za realne vhode. Kriptografske sheme temeljijo na trenutnih prepričanjih o težavnosti določenih problemov, zato razvoj ali dokaz P = NP bi imel velike varnostne posledice.
Zaključek
Vprašanje P proti NP ostaja ena največjih skrivnosti sodobne znanosti. Njegova rešitev bi prinesla globoke teoretične uvide in velike praktične spremembe. Medtem pa nadaljnje raziskave razkrivajo strukturo težav in vodijo k boljšim algoritmom ter razumevanju, kdaj so težave dejansko rešljive ali le preverljive.
Pojasnila
Če imate na primer problem in nekdo reče: "Odgovor na vaš problem je niz števil 1, 2, 3, 4, 5", lahko računalnik hitro ugotovi, ali je odgovor pravilen ali napačen, vendar pa lahko traja zelo dolgo, preden računalnik sam pride do odgovora "1, 2, 3, 4, 5". Drug primer je iskanje praštevil. Enostavno je preveriti, ali je število praštevilo, vendar je zelo težko ta števila sploh najti. Pri nekaterih zanimivih, praktičnih vprašanjih te vrste nimamo nobenega načina za hitro iskanje odgovora, če pa nam je odgovor na voljo, je mogoče odgovor hitro preveriti - torej preveriti. Na ta način si lahko probleme NP predstavljamo kot uganke: morda je težko najti odgovor na uganko, toda ko enkrat slišimo odgovor, se nam ta zdi očiten. Pri tej primerjavi (analogiji) je osnovno vprašanje: ali so uganke res tako težke, kot mislimo, da so, ali pa nam kaj uide?
Ker so tovrstna vprašanja P proti NP praktično tako pomembna, želijo številni matematiki, znanstveniki in računalniški programerji dokazati splošno trditev, da je mogoče vsak hitro preverjen problem tudi hitro rešiti. To vprašanje je dovolj pomembno, da bo Clayjev matematični inštitut dal 1.000.000 dolarjev vsakomur, ki bo uspešno predložil dokaz ali veljavno razlago, ki ga bo ovrgla.
Če se nekoliko poglobimo, vidimo, da so vsi problemi P problemi NP: da je rešitev pravilna, lahko preverimo tako, da rešimo problem in primerjamo obe rešitvi. Vendar pa ljudje želijo vedeti tudi nasprotno: Ali obstajajo še kakšni drugi NP problemi, ki niso P problemi, ali pa so vsi NP problemi samo P problemi? Če problemi NP res niso enaki problemom P (P ≠ NP), bi to pomenilo, da splošnih, hitrih načinov za reševanje teh problemov NP ne more biti, ne glede na to, kako zelo se trudimo. Če pa so vsi NP problemi P problemi (P = NP), bi to pomenilo, da nove, zelo hitre metode reševanja problemov obstajajo. Le da jih še nismo našli.
Ker znanstveniki in matematiki po svojih najboljših močeh še niso našli splošnih in enostavnih metod za reševanje NP-problemov, mnogi verjamejo, da obstajajo NP-problemi, ki niso P-problemi (to pomeni, da je P ≠ NP resničen). Tudi večina matematikov verjame, da je to res, vendar tega trenutno še nihče ni dokazal s strogo matematično analizo. Če bi lahko dokazali, da sta NP in P enaka (P = NP je resničen), bi to imelo velik vpliv na številne vidike vsakdanjega življenja. Zato je vprašanje P proti NP pomembna in široko preučevana tema.
Primer
Recimo, da želi nekdo zgraditi dva stolpa, tako da zloži kamne različnih mas. Nekdo želi zagotoviti, da ima vsak od stolpov popolnoma enako maso. To pomeni, da bo moral kamne zložiti na dva kupa, ki imata enako maso. Če uganemo delitev kamnov, za katero menimo, da bo ustrezala, bomo zlahka preverili, ali smo imeli prav. (Odgovor lahko preverimo tako, da kamne razdelimo na dva kupa, nato pa s tehtnico preverimo, ali imajo enako maso.) Ker je ta problem, ki ga računalničarji imenujejo "delitev", enostavno preveriti - lažje kot ga rešiti, kot bomo videli -, to ni problem P. []
Kako težko ga je rešiti? Če začnemo s samo 100 kamni, obstaja 2^{100-1}-1 = 633.825.300.114.114.700.748.351.602.687 ali približno 6,3 x 10^{29} možnih načinov (kombinacij) za razdelitev teh kamnov na dva kupa. Če bi lahko vsak dan preverili eno edinstveno kombinacijo kamnov, bi za to potrebovali 1,3 x 10^{22} ali 1 300 000 000 000 000 000 000 000 let truda. Za primerjavo: fiziki menijo, da je vesolje staro približno 1,4 x 10^{10} let (450 000 000 000 000 000 000 000 ali približno 4,5 x 10^{17} sekund oziroma približno eno trilijoninko toliko časa, kot bi ga potrebovali za naš napor pri polaganju kamnov na kup. To pomeni, da bi morali, če vzamemo ves čas, ki je pretekel od začetka vesolja, vsako sekundo preveriti več kot dva bilijona (2.000.000.000.000.000) različnih načinov deljenja kamnin, da bi preverili vse različne načine.
Če bi programirali zmogljiv računalnik, ki bi preizkusil vse te načine delitve kamnin, bi lahko s sedanjimi sistemi preverili , 1, 000{\displaystyle000 1.000.000} kombinacij na sekundo. To pomeni, da bi še vedno potrebovali , 2, 000{\displaystyle000 2.000.000}
zelo zmogljivih računalnikov, ki bi delovali že od nastanka vesolja, da bi preizkusili vse načine delitve kamnin.
Morda pa je mogoče najti način, kako kamenje razdeliti na dva enaka kupa, ne da bi preverili vse kombinacije. Vprašanje "Ali je P enako NP?" je okrajšava za vprašanje, ali takšna metoda lahko obstaja.
Zakaj je to pomembno
Obstaja veliko pomembnih problemov NP, ki jih ljudje ne znajo rešiti na način, ki bi bil hitrejši od testiranja vseh možnih odgovorov. Tukaj je nekaj primerov:
- Potujoči prodajalec želi z vožnjo obiskati 100 mest, potovanje pa začeti in končati doma. Ker ima omejene zaloge bencina, lahko prevozi le 10.000 kilometrov. Zanima ga, ali lahko obišče vsa mesta, ne da bi mu zmanjkalo bencina.
- Šola ima 100 različnih razredov, učitelj pa mora izbrati eno uro za zaključni izpit vsakega razreda. Da bi preprečili goljufanje, morajo vsi učenci, ki obiskujejo razred, opravljati izpit za ta razred ob isti uri. Če učenec obiskuje več razredov, morajo biti vsi izpiti ob različnih urah. Učitelj želi vedeti, ali lahko vse izpite razpiše na isti dan, tako da bo vsak učenec lahko opravljal izpit za vsak svoj razred.
- Kmet želi na trg pripeljati 100 lubenic različnih mas. Lubenice mora zapakirati v škatle. V vsako škatlo lahko spravi le 20 kilogramov, ne da bi se razbila. Kmet mora vedeti, ali bo 10 škatel zadoščalo, da bo na trg odnesel vseh 100 lubenic. (To je trivialno, če največ ena lubenica tehta več kot 2 kg, potem jih lahko v vsak zaboj damo poljubnih 10, če največ deset lubenic tehta več kot 2 kg, potem lahko v vsak zaboj damo po eno itd. do hitre rešitve; opazovanje bo ključ do vsake hitre rešitve, kot je ta ali problem množice števil).
- V veliki umetniški galeriji je veliko sob, vsaka stena pa je prekrita s številnimi dragimi slikami. Lastnik galerije želi kupiti kamere, s katerimi bi opazoval te slike, če bi kateri od tatov skušal katero od njih ukrasti. Zanima ga, ali bo dovolj 100 kamer, da bo vsako sliko lahko videla vsaj ena kamera.
- Problem klike: ravnatelj šole ima seznam učencev, ki so med seboj prijatelji. Želi najti skupino 10 % učencev, ki so vsi prijatelji drug z drugim.
Eksponentni čas
V zgornjem primeru vidimo, da je pri {\displaystyle100 100} kamnov {\displaystyle2100 2^{100}}
načinov razdelitve množice kamnov. Pri n {\displaystyle n}
skalah obstaja n2 {\displaystyle 2^{n}}
kombinacij. Funkcija f ( n ) = n 2{\displaystyle f(n)=2^{n}}
je eksponentna funkcija. Za NP je pomembna, ker modelira najslabše možno število izračunov, ki so potrebni za rešitev problema, in s tem najslabše možno količino potrebnega časa.
Doslej so rešitve za težke probleme zahtevale n 2{\displaystyle 2^{n}} izračunov. Za vsak posamezen problem so ljudje našli načine, kako zmanjšati število potrebnih izračunov. Nekdo lahko ugotovi, da je mogoče narediti le 1 % najslabšega možnega števila izračunov, kar prihrani veliko računanja, vendar je to še vedno ×0.01 ( n2 ) {\displaystyle 0,01\krat (2^{n})}
izračunov. In vsaka dodatna skala še vedno podvoji število izračunov, potrebnih za rešitev problema. Obstajajo spoznanja, ki lahko ustvarijo metode za še manjše število izračunov, ki proizvajajo različice modela: npr. n 2/ n {\displaystyle 2^{n}/n^{3}}3
. Vendar eksponentna funkcija še vedno prevladuje, ko n {\displaystyle n}
narašča.
Razmislite o problemu razporejanja izpitov (opisano zgoraj). Nato predpostavimo, da je študentov 15.000. Obstaja računalniški program, ki upošteva urnike vseh 15000 študentov. Izvede se v eni uri in izdela razpored izpitov tako, da lahko vsi študenti opravijo izpite v enem tednu. Upošteva številna pravila (nobenih izpitov zapored, največ dva izpita v 28 urah ...), da bi omejil stres izpitnega tedna. Program se izvaja eno uro ob vmesnem odmoru in vsi poznajo svoj urnik izpitov ter imajo dovolj časa za pripravo.
Naslednje leto pa je v šoli 10 učencev več. Če isti program teče na istem računalniku, se bo ena ura spremenila v {\displaystyle210 2^{10}} ur, saj vsak dodatni učenec podvoji računanje. To je {\displaystyle6 6}
tednov! Če bi bilo še 20 učencev, potem bi
220 {\displaystyle 2^{20}} ur = {\displaystyle1048576 1048576}
ur ~ {\displaystyle43691 43691}
dni ~ {\displaystyle113 113}
let
Tako za {\displaystyle15000 15000} učencev traja eno uro. Za {\displaystyle15020 15020}
učencev traja {\displaystyle113 113}
let.
Kot lahko vidite, eksponentne funkcije rastejo zelo hitro. Večina matematikov meni, da najtežji problemi NP za rešitev potrebujejo eksponentni čas.
NP-popolni problemi
Matematiki lahko dokažejo, da obstajajo nekateri problemi NP, ki so NP-popolni. Problem NP-kompleta je vsaj tako težko rešljiv kot kateri koli drug problem NP. To pomeni, da če bi nekdo našel metodo za hitro reševanje katerega koli NP-skupnega problema, bi lahko isto metodo uporabil za hitro reševanje vsakega NP-problema. Vsi zgoraj našteti problemi so NP-popolni, zato bi lahko prodajalec, če bi našel način za hitro načrtovanje potovanja, to povedal učiteljici in ta bi lahko isto metodo uporabila za načrtovanje izpitov. Kmet bi lahko z isto metodo določil, koliko škatel potrebuje, ženska pa bi lahko z isto metodo našla način za gradnjo stolpov.
Ker lahko metoda, ki hitro reši enega od teh problemov, reši vse, si jo želi najti veliko ljudi. Ker pa je toliko različnih problemov NP-Complete in ker nihče do zdaj ni našel načina za hitro rešitev niti enega od njih, večina strokovnjakov meni, da hitro reševanje problemov NP-Complete ni mogoče.
Osnovne lastnosti
V teoriji računske zahtevnosti je razred zahtevnosti NP-kompleten (skrajšano NP-C ali NPC) razred problemov, ki ima dve lastnosti:
- Je v množici problemov NP (nedeterministični polinomski čas): Vsako rešitev problema je mogoče preveriti hitro (v polinomskem času).
- Prav tako je v naboru NP-težkih problemov: Ti so vsaj tako težki kot najtežji problemi v NP. Ni nujno, da so problemi, ki so NP-težki, elementi NP; morda celo niso rešljivi.
Formalni pregled
NP-kompleten je podmnožica NP, množice vseh odločitvenih problemov, katerih rešitve je mogoče preveriti v polinomskem času; NP lahko enakovredno opredelimo kot množico odločitvenih problemov, ki jih na stroju rešimo v polinomskem času. Problem p v NP je tudi v NPC, če in samo če se vsak drug problem v NP pretvori v p v polinomskem času. NP-polni naj bi se uporabljal kot pridevnik: problemi v razredu NP-polni so bili kot NP+polni problemi.
Probleme z NP-kompletom preučujemo, ker se zdi, da je sposobnost hitrega preverjanja rešitev problema (NP) povezana s sposobnostjo hitrega reševanja problema (P). Ugotovljeno je bilo, da je vsak problem v NP hitro rešen - kot se imenuje množica problemov P = NP:. Posamezen problem v NP-kompletu je rešen hitro, hitreje kot vsak problem v NP, ki je prav tako hitro rešen, saj definicija problema v NP-kompletu pravi, da mora biti vsak problem v NP hitro reduktibilen na vsak problem v NP-kompletu (reducira se v polinomskem času). [1]
Primeri
Znano je, da je problem Boolove zadovoljivosti NP popoln. Leta 1972 je Richard Karp oblikoval 21 problemov, za katere je znano, da so NP-popolni. Ti problemi so znani kot 21 Karpovih NP-popolnih problemov. Med njimi so problemi, kot so problem celoštevilskega programiranja, ki uporablja tehnike linearnega programiranja za cela števila, problem knapsack ali problem pokritja vrhov.
Vprašanja in odgovori
V: Kaj je problem tisočletja?
O: Problem tisočletja je eden najpomembnejših in najzahtevnejših matematičnih problemov tega stoletja, ki obravnava vprašanje, ali je vsak problem, ki ga računalniki zlahka preverijo, tudi zlahka rešljiv.
V: Kako lahko razvrstimo matematične probleme?
O: Matematične probleme lahko razvrstimo v P ali NP probleme glede na to, ali so rešljivi v končnem polinomskem času.
V: Kakšna je razlika med P in NP problemi?
O: Problemi P so relativno hitri in za računalnike "enostavni" za reševanje, medtem ko so problemi NP hitri in za računalnike "enostavni" za preverjanje, vendar niso nujno enostavni za reševanje.
V: Kdo je uvedel problem P in NP?
O: Stephen Cook je problem P proti NP predstavil leta 1971 v svojem članku "The complexity of theorem proving procedures".
V: Zakaj je problem P proti NP pomemben?
O: Problem P proti NP velja za najpomembnejši odprti problem v računalništvu in je eden od sedmih nagradnih problemov tisočletja, z nagrado 1 000 000 USD za rešitev, ki izzove objavljeno priznanje Clayjevega inštituta in domnevno tisto(e), ki spremeni celotno matematiko.
V: Ali je mogoče rešiti NP-poln problem v kvadratnem ali linearnem času?
O: Leta 1956 je Kurt Gödel napisal pismo Johnu von Neumannu, v katerem ga je vprašal, ali je mogoče določen NP-polni problem rešiti v kvadratnem ali linearnem času.
V: Zakaj mnogi matematiki upajo, da so problemi tisočletja med seboj povezani?
O: Številni problemi tisočletja se dotikajo povezanih vprašanj in sanje mnogih matematikov so, da bi iznašli združevalne teorije.
Iskati