18. Algorithmus der Woche Der Euklidische Algorithmus Autor Friedrich Eisenrnd, Universität Dortmund Heute ehndeln wir den ältesten ereits us Aufzeichnungen us der Antike eknnten Algorithmus. Er wurde c. 300 v. Chr. von Euklid in seinem Buch Die Elemente eschrieen. Stell Dir vor, du hst zwei Stäe der Länge und, woei und gnze Zhlen sind. Du möchtest die Stäe in gleichgroße Stücke zersägen und zwr so, dss die Länge d der Stücke so groß ist wie möglich. d Zerteilen zweier Stäe in möglichst große Stücke Unser Algorithmus der Woche erechnet diese gesuchte Länge d. Der Algorithmus ht zwei Versionen. Die erste Version ist lngsm, die zweite ist schnell. Die Zhlen /d und /d sind ntürliche Zhlen, nämlich jeweils die Anzhl der Stücke, in die die Stäe zerschnitten werden. In dem Bild oen lässt sich der längere St in 5 Stücke der Länge d zerteilen und der kürzere in 3. Wie finden wir nun die gesuchte Länge d? Wenn eide Stäe gleich lng sind, dnn ist die gesuchte Länge d sofort klr. Es ist die gemeinsme Länge eider Stäe, wir müssen lso die Stäe nicht zersägen. Nehmen wir lso n, dss die Stäe unterschiedliche Längen hen, woei größer ist ls. d Die gesuchte Länge für und ist die gesuchte Länge für und Beim Neeneinnderlegen eider Stäe fällt Dir etws uf! Wenn eide Stäe sich in Stücke der Länge d ufteilen lssen, dnn können wir von dem längeren St ein Stück schneiden, ds genuso lng ist wie der kürzere St. Der Euklidische Algorithmus Seite 1 von 5 Friedrich Eisenrnd, Universität Dortmund
Ein Schritt des Algorithmus Der neue St ht jetzt die Länge und lässt sich eenflls exkt in Stücke der Länge d zersägen. Umgekehrt gilt: Wenn sich der neue St und der St der Länge in Stücke der Länge d zerteilen lssen, dnn lässt sich uch der lte St der Länge in Stücke der Länge d zerteilen. Ds wichtige Prinzip (P) ist lso kurz ds folgende: Wenn =, dnn ist die gesuchte Länge. Wenn größer ist ls, dnn ist die gesuchte Länge für und diesele wie die gesuchte Länge für und. Wir können jetzt einen Algorithmus ufschreien, der uns die gesuchte Länge erechnet. 1 Solnge nicht eide Stäe gleich groß sind: Säge von dem längeren St ein Stück, ds so lng ist wie der kürzere der eiden Stäe. Lege dieses Stück eiseite. 2 Jetzt sind eide Stäe gleich groß. Die gesuchte Länge ist die gemeinsme Länge der Stäe. Wir müssen uns n dieser Stelle frgen, o unser Algorithmus fertig wird und nicht immer weiter die Stäe in kleinere Stücke zersägt und nie ufhört. Hierzu knn mn folgendes eochten. Wir eginnen mit zwei Stäen, deren Längen jeweils ntürliche Zhlen und sind. Während der Algorithmus läuft, leien die Längen ntürliche Zhlen. Insesondere ist die Länge der eiden Stäe immer mindestens 1. D einer der Stäe in jeder Runde um mindestens eins gekürzt wird, endet der Algorithmus schließlich nch höchstens + Runden. Der größte gemeinsme Teiler Die gesuchte Länge d ist, so wie und, uch eine ntürliche Zhl. Es ist eine ntürliche Zhl, die sowohl ls uch teilt. Mthemtisch usgedrückt edeutet dies, dss es ntürliche Zhlen x und y git mit d x = und d y =. In unserer Anschuung ist x die Anzhl der Stücke, die wir us dem St der Länge schneiden und y ist die Anzhl der Stücke, die wir us dem St der Länge schneiden. Die Zhl d ist der größte gemeinsme Teiler von und, denn nch dem Prinzip (P) ist der größte gemeinsme Teiler der Stlängen nch jeder Säge-Runde dersele wie vor dieser Runde. Wir können den Algorithmus uch strkter ufschreien. Dnn kommen keine Stäe mehr vor. Die Einge sind zwei ntürliche positive Zhlen und und die Ausge ist der größte gemeinsme Teiler, der Der Euklidische Algorithmus Seite 2 von 5 Friedrich Eisenrnd, Universität Dortmund
ggt von und. Wir nennen den Algorithmus us Gründen, die gleich eleuchtet werden, LANGSAMEU- KLID. LANGSAMEUKLID 1 while 2 if > then := ; 3 if > then := ; 4 end while 5 Gi den gemeinsmen Wert der eiden Zhlen us. Schuen wir uns ein konkretes Beispiel n: Die Einge sollen die Zhlen 15 und 9 sein. Im ersten Schritt sutrhieren wir 9 von 15 und erhlten die Zhlen 6 und 9. Im zweiten Schritt erhlten wir die Zhlen 6 und 3. Im dritten Schritt erhlten wir die Zhlen 3 und 3 und der Algorithmus git die Zhl 3 us. Ds nächste Beispiel zeigt, wrum wir den Algorithmus LANGSAMEUKLID gennnt hen. Betrchte die Eingen = 1001 und = 2. Die eiden Zhlen während den Itertionen des Algorithmus sind 1001 und 2 999 und 2, 997 und 2 995 und 2... (ziemlich viele Runden) 3 und 2 1 und 2 1 und 1. Dss es so lnge duert, liegt drn, dss die zweite Zhl sehr klein ist. Eine Beochtung, die den Algorithmus erhelich eschleunigt Wie oft zieht mn die Zhl 2 insgesmt? Es gilt 1001 = 2 500+1. Die Zhl 2 wird genu 500 ml von der Zhl 1001 sutrhiert, is der Wert unter den Wert 2 fällt. Wie kmen wir uf die Zhl 500? Einfch indem wir 1001 durch 2 geteilt und gerundet hen. Wir wussten dnn, dss 1001 = 500 2+1 gilt und konnten dnn sofort die Zhlen 1001 und 2 durch die Zhlen 1 und 2 ersetzen. Ein Computer knn sehr schnell eine Division mit Rest usführen. Diese Opertion erechnet us und zwei ntürliche Zhlen q und r mit = q +r, woei r kleiner ist ls. Die Zhl q ist ds Ergenis des Arundens der Zhl / und r ist der Rest der Division von durch. In unserem Beispiel ist = 1001, = 2, q = 500 und r = 1. Wenn und die Einge des Algorithmus LANGSAMEUKLID sind und größer ist ls, dnn wird von entweder q-ml sutrhiert (wenn ttsächlich ein Rest leit) oder q 1-ml (wenn durch teilr ist und schließlich zwei Stäe der Länge entstehen). Wir können den Algorithmus lso eschleunigen, indem wir durch mit Rest teilen und sofort durch den Rest r ersetzen. Dei knn es pssieren, dss der Rest r Null ist. Ds edeutet, dss der gesuchte größte gemeinsme Teiler ist, und der Algorithmus ist fertig. Dies ist die Idee hinter dem folgenden Algorithmus, den wir jetzt EUKLID nennen. Der Euklidische Algorithmus Seite 3 von 5 Friedrich Eisenrnd, Universität Dortmund
EUKLID 1 if < then vertusche und ; 2 while > 0 3 erechne q,r mit = q +r, woei 0 r < ; 4 := ; := r; 5 end while 6 return ; Wir können erwrten, dss dieser Algorithmus viel schneller ist ls der Algorithmus LANGSAMEUKLID. Wrum ds so ist, knn mn genu egründen. Nehmen wir n, dss die größere der eiden Zhlen ist. Wie groß ist der Rest r, der ei der Division von durch ürig leit? Ds schuen wir uns n einem Bild n. /2 Der Rest ist klein Rest Mn sieht, dss der Rest immer eine Länge von höchstens /2 ht. Ds liegt drn, dss +r höchstens ist und r kleiner ls ist. Nch einer Runde wird durch den Rest r ersetzt, welcher höchstens so groß ist wie /2. In der zweiten Runde wird durch den Rest der Division von durch r ersetzt. Diese Zhl ist uch höchstens so groß wie /2. Also sind nch zwei Runden eide Zhlen höchstens hl so groß wie, welche die größere Zhl der Einge wr. Wenn wir jetzt 2 k Runden hintereinnder etrchten, dnn hen eide Zhlen höchstens den Wert /2 k. Wenn k > log, dnn hätten eide Zhlen den Wert Null. Ds knn er nicht pssieren, d der Algorithmus fertig ist, sold eine Zhl Null ist. Dher ist die Anzhl der Schleifendurchläufe des Algorithmus höchstens 2 log, woei wir wieder den Logrithmus zur Bsis 2 meinen. Die Anzhl der Ziffern, die wir in unserem Dezimlsystem ruchen um die Zhl ufzuschreien ist proportionl zu log. Während der Algorithmus LANGSAMEUKLID eine Lufzeit ht, die proportionl zu den Werten von und ist, ht der Algorithmus EUKLID eine Lufzeit, die proportionl zur Anzhl der Ziffern von und ist. Ds ist ein wesentlicher Unterschied. Zum Schluss erechnen wir noch von Hnd den größten gemeinsmen Teiler von = 1324 und = 145. Die erste Division mit Rest ergit 1324 = 9 145 + 19. Jetzt wird uf den Wert 145 gesetzt und uf den Wert 19. Die zweite Division mit Rest ist 145 = 7 19+12. Die nächste Division mit Rest ergit 19 = 1 12+7, dnn folgen 12 = 7+5, 7 = 5+2, 5 = 2 2+1 und 2 = 2 1+0, worus wir schließen können, dss der größte gemeinsme Teiler von 1324 und 145 die Zhl 1 ist. Mn sgt dnn uch, die Zhlen sind teilerfremd. Der Euklidische Algorithmus Seite 4 von 5 Friedrich Eisenrnd, Universität Dortmund
Autor: Prof. Dr. Friedrich Eisenrnd http://ls2-www.cs.uni-dortmund.de/ eisen/ Weitere Links: Applets zum lngsmen und schnellen Euklidschen Algorithmus http://ls2-www.cs.uni-dortmund.de/lgo-der-woche Der Autor dnkt Mrtin Dietzfelinger für hilfreiche Kommentre. Der Euklidische Algorithmus Seite 5 von 5 Friedrich Eisenrnd, Universität Dortmund