Tot voor kort waren algoritmen het domein van computerwetenschappers. Maar nu zijn ze ons leven binnengedrongen en worden ze alomtegenwoordig. Algoritme is geen vreemd woord meer. Algoritmische handel, algoritmische vooringenomenheid, het Facebook-algoritme, zelfs algoritmische oorlogsvoering – al deze termen zijn de afgelopen jaren deel gaan uitmaken van ons vocabulaire. Sommige mensen gaan zelfs zover te beweren dat we in een nieuw tijdperk leven: het tijdperk van het algoritme. Maar zo nieuw zijn de algoritmen niet. We gebruiken ze, bewust of onbewust, al honderden en duizenden jaren. Algoritmen zijn niet meer dan specifieke beschrijvingen van stapsgewijze handelingen die moeten gebeuren om een bepaald resultaat te bereiken. Ze zijn een van de meest gebruikte instrumenten om kennis te delen.
Praktisch gezien maakt elk proces om iemand te leren hoe hij iets moet doen gebruik van algoritmen.
Een aantal aspecten van algoritmen is de afgelopen decennia echter veranderd. Met name de introductie van computers heeft ertoe geleid dat veel algoritmen tegenwoordig veel complexer zijn dan we ons in het verleden ooit hadden kunnen voorstellen. Hoe zijn de algoritmen geëvolueerd zodat ze vandaag zo veel gesofisticeerder zijn dan in het verleden? Laten we eens kort naar hun geschiedenis kijken.
Algoritmen die menselijke handelingen begeleiden
De term algoritme is afgeleid van de naam van Muhammad ibn Mūsā al’Khwārizmī, een negende-eeuwse Perzische wiskundige. Zijn gelatiniseerde naam, Algoritmi, betekende “het decimale getallenstelsel” en werd eeuwenlang in deze betekenis gebruikt. Het moderne begrip algoritme ontstond in het Engels in de negentiende eeuw, en werd meer algemeen gebruikt sinds de jaren 1950, naar aanleiding van de opkomst van de eerste commercieel verkrijgbare computers.
Lang voordat algoritmen hun moderne naam kregen, werden ze echter al algemeen gemaakt en gebruikt.
De eerste algoritmen werden in het Oude Griekenland op papier vastgelegd. Geleerden als Nicomachus van Gerasa of Euclides creëerden toen de bouwstenen van de moderne wiskunde. Om het begrip en de toepasbaarheid van hun ideeën te vergemakkelijken, drukten zij veel ervan uit als stap-voor-stap handelingen.
Nicomachus van Gerasa introduceerde de Zeef van Eratosthenes. De Zeef wordt tot op de dag van vandaag gebruikt door studenten die leren efficiënte computercode te schrijven. Hij hielp het proces van het identificeren van priemgetallen te vereenvoudigen. Priemgetallen zijn natuurlijke getallen, groter dan één, die niet kunnen worden gevormd door vermenigvuldiging van twee kleinere natuurlijke getallen. Vier is bijvoorbeeld geen priemgetal omdat het kan worden gevormd door vermenigvuldiging van twee met twee. Vijf daarentegen is een priemgetal, omdat geen enkel natuurlijk getal kleiner dan vijf kan worden vermenigvuldigd om vijf te vormen. Hoewel het niet al te moeilijk is om de eerste paar priemgetallen te identificeren (bijvoorbeeld 2, 3, 5, 7, 11, 13, 17, 19, 23 en 29), kost het vinden van grote priemgetallen veel tijd. En grote priemgetallen zijn essentieel in de cryptografie. De Zeef van Eratosthenes geeft stap voor stap instructies om snel alle niet-priemgetallen uit een gedefinieerde verzameling getallen (bijvoorbeeld tussen 1 en 10.000) te verwijderen tot alleen nog priemgetallen overblijven. Vandaag zijn er talrijke algoritmen beschikbaar die de taak om dergelijke getallen te identificeren vereenvoudigen. De Zeef van Eratosthenes heeft een hele familie algoritmen op gang gebracht die hetzelfde doel hebben en steeds beter worden (sneller, of minder stappen vereisen) in het opsporen van priemgetallen.
Euclides, de andere hierboven genoemde geleerde, tegenwoordig veel bekender dan Nicomachus, introduceerde een algoritme voor het bepalen van de grootste gemene deler van twee getallen. Nogmaals, niet altijd een gemakkelijke taak, maar essentieel in veel situaties. Het algoritme van Euclides hielp om deze berekening gemakkelijk te maken. Waarom is het algoritme van Euclides nuttig? Stel je voor dat je een kamer hebt met de exacte afmetingen van 612 bij 2006 centimeter die een nieuwe vloer nodig heeft. Het algoritme van Euclides helpt je om de grootte van de grootste vierkante tegels te vinden die de vloer netjes zouden bedekken. Het antwoord, gegeven door het algoritme, is 34 cm bij 34 cm, wat resulteert in een indeling van 18 bij 59 tegels. Natuurlijk zal elke tegelzetter u vertellen dat het antwoord fout is en dat u geen idee hebt waar u mee bezig bent omdat het algoritme geen rekening houdt met de voegbreedte en daar geen ruimte voor laat. Vrees niet: ook dit kan worden berekend, en netjes uitgedrukt als een algoritme.
Algoritmen die machinehandelingen begeleiden
In de honderden jaren die volgden, werden nog veel meer algoritmen bedacht en op papier vastgelegd. Ze werden vervolgens door individuen gebruikt en stap voor stap gevolgd. Het eerste algoritme dat bedoeld was om op een machine te worden uitgevoerd, werd gemaakt door Ada Lovelace (geboren Byron) en gepubliceerd in 1843.