Inleiding tot de complexiteitstheorie: P, NP en de grenzen van efficiënte berekening
Belangrijkste punten
- •Big O-notatie beschrijft hoe de vereisten voor tijd en geheugen groeien met de invoergrootte, waardoor algoritmen onafhankelijk van de hardware waarop ze draaien kunnen worden vergeleken.
- •P bevat beslissingsproblemen die in polynomiale tijd oplosbaar zijn door een deterministische turingmachine, terwijl NP beslissingsproblemen bevat waarvan voorgelde oplossingen in polynomiale tijd kunnen worden geverifieerd.
- •De vraag P versus NP is nog steeds een van de diepgaandste onopgeloste problemen in de informatica en is een van de zeven Millennium Prize Problems van het Clay Mathematics Institute, elk met een prijs van $1 miljoen.
- •Als een willekeurig NP-volledig probleem, zoals het handelsreizigersprobleem, Booleaanse vervulbaarheid of het knapzakprobleem, in polynomiale tijd zou worden opgelost, dan zou P gelijk zijn aan NP.
- •Moderne cryptografie rust op de aanname dat bepaalde problemen voor aanvallers niet haalbaar zijn om binnen praktische tijdskaders op te lossen, waardoor de beantwoording van de vraag P versus NP gevolgen heeft voor de beveiliging.

De complexiteitstheorie is het vakgebied dat zich richt op de middelen die nodig zijn om rekenproblemen op te lossen. Het biedt een kader voor het analyseren van de efficiëntie van algoritmen, een kwestie van groeiend belang in een tijdperk waarin rekenkracht en gegevensopslag een steeds centralere rol spelen. In essentie probeert de discipline de inherente moeilijkheid van rekenproblemen en de beperkingen van efficiënte berekening te begrijpen.
Tijd, ruimte en Big O-notatie
In de basis houdt de complexiteitstheorie zich bezig met de hoeveelheid tijd en ruimte die een algoritme nodig heeft om een probleem op te lossen. Tijdcomplexiteit verwijst naar het aantal stappen dat een algoritme nodig heeft om af te ronden, terwijl ruimtecomplexiteit verwijst naar de hoeveelheid geheugen die het gebruikt. Deze twee maten zijn fundamenteel voor het beoordelen van de efficiëntie van een algoritme en worden doorgaans uitgedrukt in Big O-notatie, die een bovengrens geeft voor het aantal stappen of de hoeveelheid ruimte die nodig is. Omdat Big O beschrijft hoe het resourcegebruik groeit ten opzichte van de invoergrootte in plaats van de ruwe snelheid op specifieke hardware, kunnen algoritmen onafhankelijk van de machines waarop ze draaien worden vergeleken.
P en NP: de fundamentele klassen
Twee van de belangrijkste klassen in de complexiteitstheorie zijn P, kort voor Polynomial Time, en NP, kort voor Nondeterministic Polynomial Time. P bestaat uit beslissingsproblemen die in polynomiale tijd kunnen worden opgelost door een deterministische turingmachine, wat betekent dat de looptijd hoogstens polynomiaal toeneemt met de grootte van de invoer. NP omvat daarentegen beslissingsproblemen waarvan een voorgesteldelossing in polynomiale tijd kan worden geverifieerd door een deterministische turingmachine, ook al kan de oplossing zelf mogelijk niet snel worden gevonden.
Of P gelijk is aan NP is een van diepgaandste onopgeloste vragen in de informatica. Als P=NP, dan heeft elk probleem met een bekende efficiënte verificatiemethode ook een efficiënt algoritme om een oplossing te vinden. Als P≠NP, dan bestaan er problemen waarvoor geen efficiënt algoritme bestaat, zelfs wanneer een oplossing efficiënt kan worden geverifieerd. Hoeveel op het spel staat, blijkt uit de aanwijzing als een van de zeven Millennium Prize Problems die zijn ingesteld door het Clay Mathematics Institute, waarvan elk gepaard gaat met een prijs van $1 miljoen voor een oplossing. De beantwoording van deze vraag heeft belangrijke implicaties voor cryptografie, optimalisatieproblemen en veel gebieden van wetenschap en techniek, aangezien veel moderne cryptografie rust op de aanname dat bepaalde problemen voor aanvallers niet haalbaar zijn om binnen praktische tijdskaders op te lossen.
Reducties en NP-volledigheid
Een kernbegrip bij het aantonen van de moeilijkheid van problemen is reductie, waarbij het ene probleem wordt omgezet in het andere. Als probleem A kan worden gereduceerd tot probleem B, en B als moeilijk bekendstaat, dan is A ten minste zo moeilijk als B. NP-volledige problemen zijn die problemen in NP die ten minste zo moeilijk zijn als de moeilijkste problemen in NP. Als een willekeurig NP-volledig probleem een polynomiale oplossing blijkt te hebben, dan geldt P=NP. Bekende voorbeelden van NP-volledige problemen zijn het handelsreizigersprobleem, het Booleaanse vervulbaarheidsprobleem (SAT) en het knapzakprobleem. Dit soort problemen is allerminst puur academisch: ze doen zich regelmatig voor bij routering, planning en toewijzing van middelen, en waar geen efficiënt exact algoritme bekend is, grijpen praktijkmensen veelal naar approximatie-algoritmen en heuristieken die gegarandeerde optimaliteit inruilen voor hanteerbare looptijden.
De complexiteitstheorie biedt een rijk kader voor het begrijpen van de finesses van algoritmische efficiëntie en de grenzen van berekenbaarheid. Door de bril van P, NP en reducties krijgen onderzoekers inzicht in de fundamentele uitdagingen van het efficiënt oplossen van complexe problemen. Nu computing een steeds grotere rol in het dagelijks leven blijft innemen, blijft de studie van de complexiteitstheorie van vitaal belang, die de weg wijst naar efficiëntere oplossingen en de grenzen verlichtt van wat berekenbaar is. Tot de vraag P versus NP is beantwoord, zal de grens tussen problemen waarvan bekend is dat ze efficiënt oplosbaar zijn en problemen waarvoor geen oplossing is gevonden, zowel onderzoeksprioriteiten als technische praktijk blijven vormgeven.
Bron: OPEC