P kontra NP är frågan om huruvida varje problem vars lösning snabbt kan kontrolleras av en dator också kan lösas snabbt av en dator. Mer formellt: är mängden problem som kan lösas av en deterministisk Turingmaskin i polynomisk tid (P) densamma som mängden problem vars föreslagna lösningar kan verifieras i polynomisk tid av en deterministisk Turingmaskin (NP)? Enkelt uttryckt: om du snabbt kan kontrollera att ett svar är korrekt, kan du då också snabbt hitta ett sådant svar?

Definitioner i korthet

  • P: Problemen som en algoritm kan lösa i polynomisk tid (dvs. tid som är en polynomfunktion av inmatningens storlek). Dessa anses "lätta" ur beräkningssynpunkt.
  • NP: Problemen där en föreslagen lösning (ett bevis eller ett "certifikat") kan kontrolleras i polynomisk tid. Det betyder inte automatiskt att de är lätta att lösa, bara lätta att verifiera.
  • NP-komplett: De svåraste problemen i NP. Ett problem är NP-komplett om det ligger i NP och om varje problem i NP kan reduceras till det i polynomisk tid. Om ett NP-komplett problem kan lösas i polynomisk tid, följer att P = NP.
  • NP-hårda: Problem som är minst lika svåra som de svåraste NP-problemen; de behöver inte själva ligga i NP.

Historia

Redan 1956 skrev Kurt Gödel ett brev till John von Neumann där han frågade om vissa bevisproblem kunde lösas på kvadratisk eller linjär tid — ett tidigt exempel på den här typen av frågor. Den moderna, precisa formuleringen av P kontra NP tillskrivs främst Stephen Cook, som 1971 publicerade artikeln "The complexity of theorem proving procedures" där han bevisade att booleska satisfierbarhetsproblemet (SAT) är NP-komplett. Oberoende av Cook etablerade också Leonid Levin liknande resultat ungefär samtidigt. År 1972 listade Richard Karp 21 NP-kompletta problem och visade hur många praktiska problem faller i denna kategori.

Varför frågan är viktig

  • Praktiska konsekvenser: Många problem inom optimering, logistik, kryptografi, artificiell intelligens och bioinformatik är NP-kompletta eller NP-hårda. Om P = NP skulle många av dessa problem få effektiva algoritmer, med stora samhällsekonomiska konsekvenser.
  • Kryptografi: Modern offentlig-nyckel-kryptografi bygger på antaganden om svårigheten i vissa problem (t.ex. primfaktorisering, diskret logaritm). Om P = NP i en stark form skulle detta kunna äventyra många kryptosystem.
  • Teoretiskt värde: P kontra NP rör helt grundläggande frågor om vad som är beräkningsmässigt möjligt och om relationen mellan att lösa och att verifiera problem.

Konsekvenser av olika utfall

  • Om P = NP: Då finns polynomiska algoritmer för alla problem i NP. Det skulle innebära dramatiska förbättringar för optimerings- och sökproblem, men också stora säkerhetsrisker för nuvarande kryptosystem. Många problem skulle dock kunna kräva väldigt höga polynomgrader i praktiken, så inte alla praktiska konsekvenser vore omedelbart användbara.
  • Om P ≠ NP: Då finns problem i NP som inte kan lösas i polynomisk tid, vilket skulle formellt motivera användningen av heuristiker, approximationer och komplexa säkerhetsantaganden. Detta är vad de flesta teoretiska datavetare tror utifrån bevis och barriärer som studerats.

Viktiga resultat och teoretiska hinder

  • Cook–Levin-teoremet (1971): Visade att SAT är NP-komplett — det första kända NP-kompletta problemet.
  • Karp (1972): Visade att många praktiska problem är NP-kompletta genom polynomiella reduktioner.
  • Barriärer: Flera resultat visar svårigheten att lösa P kontra NP med vissa tekniker:
    • Relativisering (Baker–Gill–Solovay, 1975): Vissa tekniker som bevarar oraklar kan inte avgöra P vs NP eftersom det finns oraklar där P = NP och oraklar där P ≠ NP.
    • Naturliga bevis (Razborov–Rudich, 1997): Visar att många "naturliga" metoder inte räcker för att bevisa separeringar under antaganden från kryptografi.
    • Algebrisation (Aaronson–Wigderson): Visar ytterligare begränsningar för vissa bevismetoder.

Exempel på NP- och NP-kompletta problem

  • Boolean satisfiability (SAT) — första NP-kompletta problemet.
  • Hamiltonian path, graffärgningsproblem, knapsack/subset-sum, travelling salesman (beslutsversion), CLIQUE, Vertex Cover.
  • Praktiska exempel: Schemaläggning, ruttplanering, optimering av logistik, vissa varianter av pussel (t.ex. Sudoku) — lösningar går ofta att verifiera snabbt men är svåra att hitta i allmänhet.

Nutida läge

I dag anses frågan P kontra NP av många vara det viktigaste öppna problemet inom teoretisk datavetenskap. Det är ett av de sju millennieprisproblem som valts ut av Clay Mathematics Institute och som ger ett pris på 1 000 000 US-dollar för den första korrekta lösningen. Trots decennier av arbete har ingen korrekt lösning accepterats av forskar‑communityt. Majoriteten av experter lutar mot att P ≠ NP, men det finns inga matematiska bevis som fastställer det.

Sammanfattning

P kontra NP handlar om skillnaden mellan att verifiera och att hitta lösningar. Problemet är djupt teoretiskt men har mycket konkreta konsekvenser för teknik och säkerhet. Upplösningen—oavsett vilken sida som visar sig vara riktig—skulle vara ett av de största resultaten i modern matematik och datavetenskap.