Naar de inhoudNieuw: Study Games · gratis met een account
StudyZone
COMMUNITY

Samenvatting · Informatica · vwo 5 Complexiteit van algoritmen: orde van grootte en efficiëntie

StudyZone
InformaticaVak
WAT ZIT ERIN
1Twee algoritmen kunnen hetzelfde probleem oplossen en toch enorm verschillen in snelheid. Bij een lijst van tien elementen merk je dat niet, bij een miljard wel. Na deze samenvatting bepaal je de orde van grootte van een algoritme en beoordeel je of het ook voor grote invoer…

Bewaar deze samenvatting

Twee algoritmen kunnen hetzelfde probleem oplossen en toch enorm verschillen in snelheid. Bij een lijst van tien elementen merk je dat niet, bij een miljard wel. Na deze samenvatting bepaal je de orde van grootte van een algoritme en beoordeel je of het ook voor grote invoer bruikbaar blijft.

Waarom complexiteit?

Je meet de snelheid van een algoritme niet in seconden, want die hangen af van de computer en de programmeertaal. In plaats daarvan tel je hoe het aantal basisstappen (vergelijkingen, optellingen, toewijzingen) groeit met de grootte van de invoer . Je kijkt naar het slechtste geval (worst case), omdat dat een garantie geeft.

Orde van grootte

Je geeft de groei aan met de grote-O-notatie: alleen de snelst groeiende term telt, constante factoren laat je weg. Een algoritme met stappen is .

ordenaamvoorbeeld
constanthet eerste element van een lijst lezen
logaritmischbinair zoeken
lineairlineair zoeken, alle elementen optellen
lineair-logaritmischsnelle sorteeralgoritmen (mergesort)
kwadratischbubble sort, selection sort
exponentieelalle deelverzamelingen proberen
faculteitalle volgordes proberen

Het aantal stappen bepalen

Kijk naar de lussen:

  • Een enkele lus die keer draait: .
  • Twee geneste lussen die allebei keer draaien: , dus .
  • Een lus die telkens halveert (n = n // 2 tot n = 1): rondes, dus .
  • Twee lussen na elkaar: de stappen tellen op en alleen de grootste telt, dus .
Voorbeeld
een inwendige lus die bij ronde maar keer draait, geeft in totaal stappen. Ook dat is , want de grootste term is .

Wat betekent een orde in de praktijk?

Wat gebeurt er met de rekentijd als twee keer zo groot wordt?

  • : twee keer zo lang.
  • : vier keer zo lang.
  • : maar één stap erbij.
  • : één extra element verdubbelt al de tijd.
Voorbeeld
binair zoeken in een gesorteerde lijst van 1 000 000 elementen kost maximaal ongeveer vergelijkingen, want . Lineair zoeken kost er in het slechtste geval een miljoen.

Efficiënt en onhandelbaar

Algoritmen met een orde (een macht van ) heten polynomiaal en zijn in de praktijk meestal bruikbaar. Algoritmen met een exponentiële of faculteitsorde groeien zo snel dat ze al bij matige onhaalbaar zijn.

Voorbeeld: het handelsreizigersprobleem. Een reiziger moet steden bezoeken en de kortste route zoeken. Alle routes proberen (brute force) kost een aantal stappen dat groeit als : bij 10 steden zijn dat al 3,6 miljoen volgordes en bij 20 steden meer dan . Voor zulke problemen is geen snel algoritme bekend dat altijd de beste oplossing vindt. In de praktijk gebruikt men heuristieken: slimme methoden die snel een goede, maar niet altijd de beste oplossing geven.

Ruimtecomplexiteit

Naast tijd telt ook geheugen. Een algoritme dat een kopie van de invoer maakt, heeft extra geheugen nodig; een algoritme dat alleen een paar variabelen gebruikt, . Tijd en geheugen ruilen vaak: een tabel met tussenresultaten maakt een algoritme sneller maar kost geheugen.

Let op

  • Alleen de snelst groeiende term telt. is .
  • Constanten tellen niet mee in O, maar wel in de praktijk bij kleine .
  • Slechtste, beste en gemiddelde geval kunnen verschillen. Lineair zoeken kan in het beste geval al bij het eerste element klaar zijn.
  • ** zegt hoe snel de tijd groeit,** niet hoe lang het precies duurt.

In het kort

  • Je telt basisstappen als functie van de invoergrootte , meestal in het slechtste geval.
  • Grote-O: alleen de snelst groeiende term telt, constanten vallen weg.
  • Een enkele lus is , twee geneste lussen , een halverende lus .
  • Bij betekent een dubbele invoer ongeveer vier keer zoveel tijd.
  • Exponentiële en faculteitsgroei zijn onhandelbaar; dan gebruikt men heuristieken.

Staat hier iets dat niet klopt of niet hoort? .

Probeer het met je volgende toets

Beginnen is gratis, zonder betaalgegevens.

Begin gratis