31.07.2013 Views

Denkende Machines -- Computers, rekenen, redeneren - CWI

Denkende Machines -- Computers, rekenen, redeneren - CWI

Denkende Machines -- Computers, rekenen, redeneren - CWI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

84 HOOFDSTUK 3. MODELLEN VAN BEREKENING<br />

Figuur 3.10: Het vervulbaarheidsprobleem: is het circuit zo dat het lampje bij de uitgang gaat<br />

branden voor een bepaalde stand van de bits, of blijft het altijd uit?<br />

1<br />

0<br />

circuit<br />

0 0 1 0 1 0<br />

praktijk wordt de meetlat dan ook lager gelegd dan de berekenbaarheidsgrens van Turing, en<br />

worden algoritmen, de rekenmethodes die ten grondslag liggen aan een programma, ook kritisch<br />

bekeken op zogenaamd combinatorisch explosief gedrag.<br />

Een goed voorbeeld van combinatorische explosie is de waarheidstabellenmethode voor propositielogica<br />

uit het vorige hoofdstuk. Als we willen weten of een propositie vervulbaar is, dan<br />

moeten we de hele tabel door<strong>rekenen</strong> en kijken of in de laatst in te vullen kolom een 1 voorkomt.<br />

We kunnen dezelfde methode voor een circuit toepassen: zo’n circuit correspondeert met een<br />

propositie en de bits met de propositieletters. De vervulbaarheidsvraag is dan of een lampje<br />

dat we bij de uitgang van het circuit hangen gaat branden voor een of andere instelling van<br />

de bits, zoals dat getekend is in Figuur 3.10. De waarheidstabellenmethode gaat netjes alle<br />

mogelijkheden af, en dat levert bijvoorbeeld in Figuur 3.10 in het ergste geval dat we 2 9 = 512<br />

keer de bits moeten instellen en kijken of het lampje gaat branden.<br />

De combinatorische explosie van deze methode bestaat eruit dat met maar een enkel bitje<br />

extra de rekentijd twee keer zo lang wordt. Zo moet je voor een circuit met 50 bits meer dan een<br />

biljard mogelijkheden door<strong>rekenen</strong> (om precies te zijn 1125899906842624, en dat is inderdaad<br />

wat meer dan 10 15 ), en in het geval 100 bits meer dan een biljard keer een biljard (meer dan 10 30 ).<br />

In plaats van ‘explosief’ wordt in de complexiteitstheorie, een discipline binnen de theoretische<br />

informatica, zo’n algoritme exponentieel genoemd, omdat de verhouding tussen rekentijd en de<br />

omvang van de invoer exponentieel is. In de tabel hieronder staat deze verhouding in de kolom<br />

helemaal links. Als de invoeromvang met een enkele stap toeneemt, dan wordt de wachttijd een<br />

bepaalde constante factor langer.<br />

Exponentieel Polynomiaal Lineair<br />

tijd ∼ constante |invoer| tijd ∼ |invoer| constante tijd ∼ constante · |invoer|<br />

De opdracht voor programmeur of informaticus is nu om algoritmen te ontwerpen om de variabele<br />

invoeromvang uit de exponent te krijgen. Een voor de praktijk zeer acceptabele wachtverhouding

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!