Deze week staan twee onderwerpen centraal: het oplossen van vergelijkingen waarbij we slechts gehele getallen als oplossing toestaan, en het bestuderen van de efficiëntie van algoritmes. We brengen deze onderwerpen met elkaar in verband via het euclidische algoritme. Het analyseren van algoritmes past in het domein computational thinking, dat in het voortgezet onderwijs in opkomst is.

Vergeet niet om ook week 1 goed af te ronden – kijk met name zorgvuldig naar de verwerkingsopgaven van week 1!

Basis

Het algoritme van Euclides

Het algoritme van Euclides geeft je de grootste gemene deler (ggd) van twee getallen – en de uitgebreide variant laat je die ggd als lineaire combinatie schrijven, zoals in de stelling van Bézout. In dit basisdeel oefen je met het zelf kunnen uitvoeren van dit belangrijke algoritme. Een analyse volgt bij de verdieping.

Kern:
§5a van de reader
Extra ondersteuning:
Je kunt oefenen met het uitgebreide Euclidisch algoritme aan de hand van opgaven van de Universiteit van Berkeley; verberg de rechterkant van het blad als je de opgave oefent.
Het algoritme van Euclides: beperkte versie
Het algoritme van Euclides: uitgebreide versie
Blz. 41–44 in het boek van De Weger; er zijn ook opgaven: 1.44 en de helft van opgave 1.48 (uit §1.6)
Er zijn op internet (googelen) veel voorbeeldmateriaal en -films te vinden over de algoritmes.
Agendeer dit thema voor de bijeenkomst

Verdieping

Diophantische vergelijkingen en de Stelling van Brahmagupta

We kijken naar lineaire diophantische vergelijkingen: dat zijn lineaire vergelijkingen in meerdere variabelen, waarbij we ons beperken tot geheeltallige coëfficiënten en oplossingen. De Stelling van Brahmagupta vertelt je wanneer zo'n vergelijking een oplossing heeft; en wat die oplossingen dan zijn. De stelling moet je niet alleen kunnen toepassen, maar er wordt ook verwacht dat je het bewijs doorgrondt.

Kern:
§6 van de reader
Extra ondersteuning:
Stelling van Brahmagupta
Agendeer dit thema voor de bijeenkomst
Algoritmiek

Doel is dat je algoritmes op een wiskundige manier kunt beschrijven om ze vervolgens te analyseren op correctheid, eindigheid en snelheid (complexiteit of looptijd). We werken hierbij iets losser dan je bij wiskunde gewend bent, omdat dit nou eenmaal geen cursus theoretische informatica is. Het doel is dat je de manier van analyseren onder de knie krijgt; niet dat je formele bewijzen met algoritmes kunt geven. Dat losse blijkt uit de taal ('pseudo-code') die we hanteren en uit de omgang met het fenomeen looptijd.

Kern:
§5b van de reader
Extra ondersteuning:
De $\cal O$-notatie
Algoritmiek en complexiteit
§1.1 in het boek van De Weger biedt een eenvoudige inleiding tot de algoritmiek; §1.6 gaat vervolgens in op de complexiteit van het euclidische algoritme
Agendeer dit thema voor de bijeenkomst

Verwerking

De volgende opgaven gaan over diophantische vergelijkingen.

Opgave 1

Vind alle (!) oplossingen van de diophantische vergelijking $1485x+1745y=15$.

Loop je vast? Probeer de heuristiekboom!
Minder leerzaam: de uitwerking
Verzin zelf diophantische vergelijkingen en controleer je antwoorden in Wolfram Alpha (voorbeeld-instructie: solve diophantine equation 121x+434y=1).
Agendeer deze vraag voor de komende bijeenkomst
Opgave 2

Gegeven zijn gehele getallen $a_1$, ..., $a_k$ en $c$. Wanneer heeft de diophantische vergelijking $$a_1x_1+\cdots+a_kx_k=c$$een oplossing? (Dus $x_1,\ldots,x_k\in\ZZ$.) Formuleer een criterium – een bewijs wordt niet gevraagd.

Loop je vast? Probeer de heuristiekboom!
Minder leerzaam: de uitwerking
Agendeer deze vraag voor de komende bijeenkomst

In de volgende opgave maak je een eerste stap in het op een metaniveau kijken naar een algoritme: je wordt gevraagd (in onderdeel b) om een redenering aan de hand van het euclidische algoritme!

Opgave 3

Gegeven zijn $a,m,n\in\NN$ met $a\ge2$ en $m>n>0$.

  1. Stel $r$ is de rest bij deling van $m$ door $n$. Laat zien dat de rest bij deling van $a^m-1$ door $a^n-1$ gelijk is aan $a^r-1$.
  2. Voer naast elkaar op papier het euclidisch algoritme uit voor $\ggd(m,n)$ en $\ggd(a^m-1,a^n-1)$, totdat je kunt uitleggen dat $\ggd(a^m-1,a^n-1)={}$$a^{\ggd(m,n)}-1$.
Loop je vast? Probeer de heuristiekboom bij opgave 3a en bij opgave 3b!
Minder leerzaam: de uitwerking
Agendeer deze vraag voor de komende bijeenkomst

De volgende serie opgaven gaat over algoritmiek.

Opgave 4

Een methode om te bepalen of een geheel getal $n>1$ een priemgetal is, is door te controleren of het deelbaar is door een getal kleiner dan $n$. In feite is het genoeg om te controleren of $n$ deelbaar is door een getal $i$ met $2\le i\le\sqrt n$.

  1. Bewijs dit.
  2. Formuleer het algoritme in pseudocode.
  3. Beargumenteer dat het algoritme exponentiële complexiteit heeft.
Loop je vast? Probeer de heuristiekboom bij opgave 4a en bij opgave 4c!
Minder leerzaam: de uitwerking
Nadat je onderdeel b hebt beantwoord, kun je het algoritme in werking zien
Agendeer deze vraag voor de komende bijeenkomst
Opgave 5

Bekijk het euclidische algoritme:

euclides

invoer: $a,b\in\NN$ met $a>b>0$

uitvoer: $g\in\ZZ$

claim: $g=\ggd(a,b)$

  • 1   $r\leftarrow a\bmod b$
  • 2   zolang $r\not=0$
    • 2.1   $a\leftarrow b$
    • 2.2   $b\leftarrow r$
    • 2.3   $r\leftarrow a\bmod b$
  • 3   $g\leftarrow b$

Hier staat $a\bmod b$ voor de rest bij de deling-met-rest van $a$ door $b$.

  1. Beargumenteer dat dit algoritme eindig is, wat wil zeggen dat de lus 2–2.3 niet eindeloos wordt herhaald.

Zij $k$ het aantal keer dat de regels 2–2.3 volledig wordt uitgevoerd. Doel is een (scherpe) bovengrens te vinden voor $k$ als functie van $a$ en $b$. Hiervoor gebruiken we de volgende stelling:

als $a>b$ en $r=a\bmod b$, dan $r<\frac12 a$.
  1. Bewijs dit.
  2. Toon aan dat na twee herhaling van de lus 2–2.3 het getal $r$ meer dan gehalveerd is.
  3. Bewijs: $k<2\cdot\log[2]{a}$.
  4. Wat is dus de complexiteit van het algoritme?
Voer het algoritme uit
Loop je vast? Probeer de heuristiekboom bij opgave 5a, bij opgave 5b, bij opgave 5c, bij opgave 5d en bij opgave 5e!
Minder leerzaam: de uitwerking
Agendeer deze vraag voor de komende bijeenkomst
Opgave 6

De Zeef van Eratosthenes wordt in veel schoolboeken als verdiepingsstof behandeld. Het betreft het volgende algoritme:

eratosthenes

invoer: $n\in\NN$, $n\ge2$

uitvoer: $a_1,a_2,\ldots,a_n\in\{0,1\}$

claim: $a_i=1\iff i$ is een priemgetal

  • 1   $a_1\leftarrow 0$
  • 2   doorloop voor $i$ de waarden $2$ t/m $n$ en doe:
    • 2.1   $a_i\leftarrow 1$
  • 3   $p\leftarrow 2$
  • 4   zolang $p\le n$
    • 4.1   $j\leftarrow 2p$
    • 4.2   zolang $j\le n$
      • 4.2.1   $a_j\leftarrow 0$
      • 4.2.2   $j\leftarrow j+p$
    • 4.3   hoog $p$ net zolang met $1$ op, tot $a_p=1$
  1. Voer het algoritme handmatig uit met $n=30$, of overtuig je ervan dat het overeenkomt met het algoritme uit de schoolboeken.

Het algoritme kan in iets minder stappen door in regel 4.1 '$j\leftarrow 2p$' te vervangen door '$j\leftarrow p^2$' en in regel 4 '$p\le n$' door '$p^2\le n$'.

  1. Waarom verandert dit de uitvoer van het algoritme niet?

Zij $n$ de invoer van het algoritme en laat $X$ de verzameling priemgetallen in het interval $[1,n]$ zijn.

  1. Laat zien dat de instructies op regels 4.2.1 en 4.2.2 nooit vaker dan $\sum_{p\in X}\frac np$ maal wordt uitgevoerd.
  2. [Facultatief, alleen als je al aan de notatie bent gewend:] Laat zien dat het aantal regels dat wordt doorlopen ${\cal O}(n\ln\ln n)$ is. Je mag het volgende resultaat gebruiken: $\sum\frac1p={\cal O}(\ln\ln n)$.
Zie voor een bewijs van dit resultaat de Engelstalige Wikipediapagina Divergence of the sum of the reciprocals of the primes.
Loop je vast? Probeer de heuristiekboom bij opgave 6a en bij opgave 6c!
Minder leerzaam: de uitwerking
Agendeer deze vraag voor de komende bijeenkomst
Democratisch programma van de bijeenkomst

PROGRAMMA LESWEEK 7

26 maart 2025
TOETSonderdeel: Bundelopdracht 2
Als je graag dingen op papier wil, zijn hier alle opgaven van deze week, met uitwerkingen.
Ook is er de volledige reader. Maar denk om het milieu!

Welke onderwerp wil je toevoegen?

Welke specifieke vraag heb je?