Het Euclidisch Algoritme

© h.hofstede (h.hofstede@hogeland.nl)

           
Een algoritme moet je zien als een soort "recept".
Nou bedacht de Griekse Euclides een "recept" om van twee willekeurige getallen het grootste getal op te sporen waar beiden door gedeeld kunnen worden. Dat getal heet de Grootste Gemene Deler (GGD).

Stel bijvoorbeeld dat we graag willen weten wat het grootste getal is waar we 1470 en 825 door kunnen delen.
Je ziet natuurlijk zσ dat je beiden door 5 kunt delen, maar misschien is er wel een groter getal waar je beiden σσk door kunt delen.

't Is eigenlijk heel eenvoudig die GGD te vinden, maar je moet er maar opkomen....

Stel dat we de GGD van 1470 en 825 weten......
Laten we die mysterieuze GGD als een blauw blokje tekenen.
Dan kun je dus 1470 en 825 beiden zien als een ketting van blokjes die allemaal de grootte van die onbekende GGD hebben:
           

           
(het aantal blokjes in die twee kettingen is voorlopig natuurlijk nog onbekend)
Daarbij is het de vraag hoe we er achter kunnen komen hoe groot zo'n mysterieus blauw blokje is.
Nou, als we daarnaar op zoek gaan, dan kunnen we ons vraagstuk kleiner maken door de onderste blauwe rij van de bovenste af te trekken:
           

           
Haal eerst maar eens al die rooien weg! Daar wordt het probleem tenminste alvast iets kleiner door. Dan houden we het volgende over (1470 - 825 = 645, maar dat wist je natuurlijk wel)
           

           
Ik hoop dat je al door hebt waar dit naar toe gaat:  trek nu die 645 van de 825 af, en je houdt 180 over:
           
           
En nu kun je zelfs in plaats van ιιn keer die 180 van de 645 af te trekken, dat meteen drie keer doen, immers 180 past drie keer in 645. Dat gaat wel zo snel!
           
           
Dat geeft  (645 - 3 • 180 = 105)
 
 
nog een paar keer van elkaar aftrekken, en je krijgt dit:
 
           
En daar is ons mysterieuze blokje al!! Het is 15 !!!

Wat is hier gebeurd?

We hebben elke keer van twee getallen een nieuw getal gemaakt door de kleinste zo vaak mogelijk van de grootste af te trekken. Dat zag er zσ uit:

           
overgebleven: verkleinen:
1470 en 825:   1470 - 1 • 825 = 645
825 en 645: 825 - 1 • 645 = 180
645 en 180: 645 - 3 • 180 = 105
180 en 105: 180 - 1 • 105 = 75
105 en 75: 105 - 1 • 75 = 30
75 en 30: 75 - 2 • 30 = 15
30 en 15: 30 - 15 = 15
15 en 15: 15 - 15 = 0
           
In een blokschema zou Euclidisch Algoritme er zσ uit kunnen zien:
           

           
Het Uitgebreid Euclidisch Algoritme.

Het Euclidisch Algoritme kun je uitbreiden om een oplossing van de vergelijking  a • x + b • y = ggd(x, y) te vinden. Dat wil zeggen, bij gegeven x en y kun je de coλfficiλnten a en b vinden
Ik denk dat een voorbeeld wel zal duidelijk maken hoe het werkt.

Neem x = 1452 en y = 735.
Dan vinden we de GGD daarvan als volgt, waarbij we het verkleinen bij het Euclidisch algoritme als vermenigvuldiging plus rest noteren:
           
1452
735
717
18
15 
= 1 • 735 + 717
= 1 • 717 + 18
= 39 • 18 + 15
= 1 • 15 + 3
= 5 • 3 + 0
GGD 3
           
Dat geeft ons de mogelijkheid getallen a en b te vinden waarvoor de vergelijking   1452a + 725b = 3 klopt.
Maak eerst een nieuwe kolom met daarin de rest voorop geschreven:
           
1452
735
717
18
15 
= 1 • 735 + 717
= 1 • 717 + 18
= 39 • 18 + 15
= 1 • 15 + 3
= 5 • 3 + 0
1452
735
717
18
15
= 717 + 1 • 735
= 18 + 1 • 717
= 15 + 39 • 18
= 3 + 1 • 15
= 0 + 3 • 5
           
Nu gaan we vanaf de ιιn na onderste rij steeds een rij omhoog, waarbij we die rest invullen:
           
 
1452
735
717
18
15 
= 1 • 735 + 717
= 1 • 717 + 18
= 39 • 18 + 15
= 1 • 15 + 3
= 5 • 3 + 0
717
18
15
3
0
= 1452 - 1 • 735
= 735 - 1 • 717
= 717 - 39 • 18
= 18 - 1 • 15
= 15 - 3 • 5




 
3 = 40 • 735 - 41 • (1452 - 1 • 735) = 81 • 735 - 41 • 1452
3 = 40 • (735 - 1 • 717) - 1 • 717 = 40 • 735 - 41 • 717
3 = 18 - 1 • (717 - 39 • 18) = 40 • 18 - 1 • 717
3 = 18 - 1 • 15
-
           
Gelukt:   81 • 735 - 41 • 1452 = 3  dus a = -41  en b = 81  voldoen.
           
Stelling van Lamι
           
Een niet onbelangrijke vraag is:  "Hoe vaak moet je eigenlijk die blokjes eraf halen?" ofwel:  "Hoeveel stappen telt het Euclidisch algoritme?"
De stelling van Lamι zegt daarover:
           

Het aantal stappen dat nodig is in het Euclidisch algoritme
is hoogstens gelijk aan het aantal cijfers van het kleinste getal, vermenigvuldigd met 5.

           
In het voorbeeld van 1452 en 735 hierboven zou je maximaal 5 • 3 = 15 stappen nodig hebben (het waren er 4).

De volgende les zullen we een toepassing zien:  het oplossen van Diophantische vergelijkingen.
           

© h.hofstede (h.hofstede@hogeland.nl)