Denkende Machines -- Computers, rekenen, redeneren - CWI
Denkende Machines -- Computers, rekenen, redeneren - CWI
Denkende Machines -- Computers, rekenen, redeneren - CWI
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
3.4. REKENTIJDEN 87<br />
3.4.4 Een Open Kwestie: P versus NP<br />
We hebben gezien dat we het oorspronkelijke kwadratische algoritme voor het beroemdheidsprobleem<br />
konden vervangen door een lineair algoritme. De vraag rijst nu of er niet ook een beter<br />
(polynomiaal) algoritme bestaat voor het vervulbaarheidsprobleem van de propositielogica. Dit<br />
blijkt een bijzonder moeilijke en diepe vraag te zijn. De enige bekende algoritmen gedragen zich<br />
allemaal exponentieel, en het is tot op de dag van vandaag niet bekend of er een polynomiale<br />
oplossing bestaat. De tijdscomplexiteit van het vervulbaarheidsprobleem is daarmee onbekend.<br />
Er bestaat wel een nauwkeurige benadering met betrekking tot zogenaamde non-deterministische<br />
algoritmen. Dit zijn algoritmen waarbij ook door de uitvoerder zelf keuzes gemaakt mogen<br />
worden (zonder een test). Een zeer simpel voorbeeld van zo’n non-deterministisch algoritme voor<br />
het vervulbaarheidsprobleem is de volgende methode:<br />
Kies een instelling van de bits (zoals in Figuur 3.10) en kijk of het lampje brandt.<br />
De non-deterministische complexiteit van een probleem is gedefinieerd als het snelste nondeterministische<br />
algoritme waarbij tijdens de uitvoering de meest optimale keuzes worden gemaakt.<br />
Als in het hierboven gedefinieerde vervulbaarheidsalgoritme met maximaal geluk gekozen<br />
wordt, dan zal in het geval van een vervulbare propositie een instelling gekozen worden waarbij<br />
het lampje gaat branden, want als het lampje in zo’n geval niet zou gaan branden, dan moet<br />
de uitvoerder niet optimaal geweest zijn in zijn keuze. Natuurlijk kost het de van zijn optimaal<br />
geluk overtuigde uitvoerder slechts polynomiaal veel tijd om op basis van dit algoritme met een<br />
juist antwoord te komen. Deze non-deterministische tijdscomplexiteit wordt aangeduid met NP,<br />
terwijl P staat voor deterministische polynomiale complexiteit.<br />
Non-deterministische tijdscomplexiteit lijkt een tamelijk academisch en onpraktisch begrip.<br />
De praktijk leert immers dat non-deterministische keuzen (willekeurige keuzen) niet altijd gouden<br />
grepen hoeven te zijn. Het begrip wordt veel natuurlijker als we het als volgt omschrijven:<br />
problemen in NP zijn de problemen waarvoor de beste aanpak die tot op heden is bedacht<br />
neerkomt op systematisch alle mogelijkheden uitproberen, terwijl het controleren of een oplossing<br />
de goede is juist heel efficiënt kan gebeuren. Kijken of bij een bepaalde stand van de bits<br />
(schakelaars) in Figuur 3.10 het lampje gaat branden kost slechts polynomiaal veel tijd. De complexiteitskarakterisering<br />
NP wordt dan ook veel gebruikt in de theoretische informatica. Veel<br />
combinatorische lastige rekenproblemen blijken zich net zo te gedragen als het vervulbaarheidsprobleem.<br />
Ze behoren allemaal tot de NP-klasse, maar P-algoritmen ervoor zijn niet bekend.<br />
Daarmee onderscheiden ze zich van problemen waarvan aangetoond is dat ze zich alleen maar<br />
met een exponentieel algoritme laten oplossen.<br />
Het vervulbaarheidsprobleem voor de propositielogica speelt een centrale rol in de NP-klasse.<br />
Het blijkt zo te zijn dat, als een P-algoritme voor dit probleem gevonden wordt, dat dan alle<br />
NP-problemen een P-algoritme moeten hebben. Elk probleem in NP laat zich namelijk vertalen<br />
naar het vervulbaarheidsprobleem, en die vertaling neemt maar polynomiaal veel tijd in beslag.<br />
Met een vertaling bedoelen we dat we een probleem A? kunnen omzetten, zodat het kan dienen<br />
als invoer van een vervulbaarheidsalgoritme, om vervolgens de uitvoer weer te vertalen naar een<br />
bevredigend antwoord op de vraag A?. Natuurlijk is voor deze omzetting van invoer en uitvoer<br />
weer rekentijd nodig, maar men is erin geslaagd te bewijzen dat voor elk NP-probleem een<br />
vertaling naar het vervulbaarheidsprobleem te geven is waarvan de rekentijd zich polynomiaal<br />
verhoudt tot de invoeromvang. In Figuur 3.11 is deze situatie weergegeven. Hieraan kun je zien