Algoritmen voor computers?

Een algoritme, dat is toch iets om mee te programmeren? Een systematisch recept met variabelen en iteraties, dat je moet vertalen naar een programmeertaal en dan te eten geven aan een computer? Nu computers aan terrein winnen, tot zelfs in de boekentasjes van de leerlingen toe, is het dan niet logisch dat we in het onderwijs meer aandacht besteden aan algoritmen? De leerlingen moeten toch meekunnen in deze digitale wereld waarin algoritmen zo belangrijk geworden zijn?

Dit is wellicht wat in het hoofd speelde van eindterm- en leerplanmakers bij het schrijven van eindtermen over “computationeel denken”. Is het waar dat algoritmen typische producten van dit computertijdperk zijn?

Algoritmen vóór computers

Lang voor er sprake was van (elektronische) computers, vormden algoritmen een belangrijk aspect van wiskunde.

In de Oudheid bedachten Babyloniërs, Indiërs en Grieken algoritmen om bv. vierkantswortels te berekenen. Euclides (rond 300 v.C.) stelde een algoritme op voor de grootste gemene deler van twee (natuurlijke) getallen. Elke Griekse constructie met passer en liniaal kun je bekijken als een algoritme waarbij je vertrekkend van een aantal gegeven punten stap voor stap cirkels en rechten toevoegt en met elkaar laat snijden. De methode om tweedegraadsvergelijkingen op te lossen met de ‘discriminant’ is een algoritme van de Perzische geleerde Al-Khwarizmi (9de eeuw). Het woord ‘algoritme’ is trouwens afgeleid van zijn naam. De Chinese wiskundige Liu Hui (3de eeuw) loste systematisch stelsels van eerstegraadsvergelijkingen op, met wat later de spilmethode van Gauss (19de eeuw) is gaan heten.

Ook veel bewijzen bevatten een algoritme. Als Euclides bewijst dat er oneindig veel priemgetallen zijn, doet hij dat door een algoritme te beschrijven om voor een willekeurige lijst van priemgetallen, een extra priemgetal te maken dat in de lijst ontbreekt. Als Hierholzer bewijst dat er in een graaf waarvan de graden van alle knopen even zijn, altijd een ‘Eulercircuit’ bestaat, dan doet hij dat door een algoritme te geven om in een dergelijke graaf een Eulercircuit te construeren (zie Perucca, 2020).

Algoritmen zoeken en visueel verklaren

Geen wiskunde zonder algoritmen dus. Maar de essentie van wiskunde is niet het uitvoeren van algoritmen. In sommige (helaas invul)handboeken van de eerste graad worden talloze werkwijzen vastgelegd in ‘stappenplannen’ (algoritmen) die de leerlingen letterlijk moeten uitvoeren. Voor een deel is het natuurlijk wel nodig dat leerlingen bepaalde berekeningen of oplossingswijzen automatiseren, zodat ze er niet telkens vanaf nul over moeten nadenken wanneer ze die nodig hebben. Maar laten we er niet mee overdrijven: voor het uitvoeren van algoritmen zijn er nu computers, en leerlingen zijn geen computers. Het uitvoeren van een algoritme is veel minder interessant dan het zoeken naar oplossingen en verklaringen, het bedenken van algoritmen… En dit gebeurt vaak op een visuele, meetkundige manier.

Ik geef een voorbeeld. Het Babylonisch algoritme om de vierkantswortel van een getal te benaderen, lijkt een beetje uit de lucht te vallen:

Benadering van vierkantswortels: algebraïsch

Je zoekt de vierkantswortel van \(27\). Doe een gok (die helemaal niet goed hoeft te zijn), bv. \(x_1=4\). Dan neem je het (rekenkundige) gemiddelde van \(4\) en \(\frac{27}{4}\), dat is \(x_2=5,375\). Dan neem je het gemiddelde van \(x_2\) en \(\frac{27}{x_2}\) , dat is \(x_3= 5,0232558\dots\) Dan neem je het gemiddelde van \(x_3\) en \(\frac{27}{x_3}\), dat is \(x_4=5,1991279\dots\) enz., enz. De rij van de opeenvolgende getallen \(x_1,\;x_2,\;x_3\dots\) convergeert naar \(\sqrt{27}=5,196152\dots\).

Dit algoritme is eenvoudig om uit te voeren, en wie vertrouwd is met een programmeertaal kan het ook aan een computer aanbieden (zie verder in de loep van dit nummer). Maar: hoe komt men bij dit algoritme? Waarom werkt het? Hoe komt het dat van \(x_n\) en \(\frac{27}{x_n}\) altijd één van de twee te groot is en één van de twee te klein? Om dit in te zien, bekijken we het even meetkundig.

Benadering van vierkantswortels: meetkundig

Je zoekt de zijde van een vierkant met oppervlakte 27. Je doet een gok voor die zijde: \(x_1=4\). Als je hiermee een rechthoek maakt met oppervlakte \(27\), dan is de andere zijde \(\frac{27}{4}\). Omdat \(4\) te klein is en de oppervlakte dezelfde blijft, moet \(\frac{27}{4}\) te groot zijn. Je neemt als nieuwe zijde het gemiddelde van de lengte en de breedte, enz.

Het vorige algoritme wordt hiermee visueel; je ziet wat je doet. Op die meetkundige manier, met indien nodig een duwtje in de rug, kunnen leerlingen het algoritme zelf bedenken…

Zo ook steunde Al-Khwarizmi op meetkunde bij zijn algoritme voor het oplossen van een tweedegraadsvergelijking. Zijn algoritme gaat terug op meetkundige oplossingswijzen van de Oude Grieken. Voor hem vormt de meetkunde de verklaring, het bewijs, van zijn algoritme. (Zie Roelens en Van den Broeck, 2015.)

Geen wiskunde zonder algoritmen.

Geen algoritmen zonder meetkunde.

Wel wiskunde zonder computers.

Wel algoritmen zonder computers.

 

Meer of minder algoritmen door computers?

Het is uiteraard waar dat algoritmen en programmeren een grote rol spelen op de achtergrond van het internet, sociale media, zoekmachines, navigatiesystemen enz. Maar in mijn eigen job als wiskundeleraar moest ik in de vorige eeuw veel vaker programmeren dan in deze eeuw. Dit komt omdat veel zaken nu voorgeprogrammeerd zijn, in GeoGebra, in grafische rekenmachines, in andere apps. Een grafiek laten tekenen door een computer; het effect van parameters onderzoeken, enz.: ik herinner me dat hiervoor moest worden geprogrammeerd. De laatste 25 jaar heb ik bijna nooit meer geprogrammeerd. En nu zal dit weer af en toe nodig zijn, omdat de leerplanmakers vinden dat dit bij het computertijdperk hoort…

Michel Roelens, namens de redactie

Bronnen

  • Perucca, A., De zeven bruggen van Koningsbergen. Uitwiskeling 36/1.
  • Roelens, M., Van den Broeck, L. Veeltermvergelijkingen van vroeger tot nu. Uitwiskeling 31/4.

Share this article

Al sinds 1960 ben ik Michel. Ik geef wiskundeles in Brussel (Maria-Boodschaplyceum) en ik leid wiskundeleraren op in Diepenbeek (UC Leuven-Limburg). Verder ben ik lid van de programmacommissie voor de Nationale WiskundeDagen (Nederland).

Post a comment