Der Euklidische Algorithmus

Werbung
Der Euklidische Algorithmus
Vorlesung Grundlagen und Einzelfragen der Mathematik
Berechnung des ggT
Der Euklidische Algorithmus ist einer der ersten Algorithmen der Mathematik überhaupt. Er wurde
in der Antike durch Euklid entwickelt, und berechnet zu einem Paar (a, b) den größten gemeinsamen
Teiler ggT(a, b). Er verwendet die folgenden Eigenschaften des ggT:
• ggT(a, b) = ggT(b, a),
• ggT(a, b) = ggT(a, b − qa) für alle q ∈ Z.
Die beiden Identitäten werden sukzessive angewendet, bis der Ausdruck ggT(a, b) in die Form ggT(g, 0)
gebracht wurde, woraus ggT(a, b) = ggT(g, 0) = g folgt. Es ist zunächst klar, dass ggT(a, b) = ggT(b, a)
ist. Ist q ∈ Z beliebig und d irgend ein gemeinsamer Teiler von a und b, etwa a = a0 d und b = b0 d,
so gilt b − qa = b0 d − qa0 d = d · (b0 − qa0 ), d. h. d ist auch ein Teiler von a und b − qa für alle q ∈ Z.
Teilt dagegen ein d die Zahlen a und b − qa, so auch b − qa + qa = b. Also stimmen die Teiler überein
und damit auch deren Maximum, der ggT. Damit können die beiden Identitäten auf den Ausdruck
ggT(a, b) angewendet werden, ohne seinen Wert zu ändern. Ein typischer Ablauf sieht wie folgt aus:
(7, 25)
→
q=3
(7, 4) → (4, 7)
→
q=1
(4, 3) → (3, 4)
→
q=1
(3, 1) → (1, 3)
→
q=3
(1, 0)
Daraus folgt ggT(7, 25) = 1.
Tabellarische Notation
Wird der Euklidische Algorithmus als Computerprogramm formuliert, so ist die obige Notation völlig
ausreichend. Für eine übersichtliche Rechnung auf dem Papier (zum Beispiel in einer Prüfung) und
die folgende Verallgemeinerung auf den ELBA bietet sich dagegen eine tabellarische Notation der
Rechenschritte an. Dazu tauscht man ggf. die Zahlen, so dass a > b ist, und setzt a1 = a und a2 = b.
Danach wendet man sukzessive den Rekursionsschritt
an := an−2 − qn · an−1
c, das ist gerade die Division mit Rest von
mit dem größtmöglichen qn ∈ N0 an. Konkret ist qn = b aan−2
n−1
an−2 durch an−1 mit dem Quotienten qn und dem Rest an . Die definierende Eigenschaft der Division
mit Rest ist es, dass der Betrag des Rests an stets kleiner ist als der Betrag des Divisors an−1 , d. h. die
Beträge der so konstruierten Folge sind streng monoton fallend, was wegen aj ∈ Z nach endlich vielen
Schritten zu an = 0 führen muss. Wie im Euklidischen Algorithmus ist dann das letzte nichttriviale
Folgenglied gerade der ggT. In der zugehörigen Tabelle werden der Übersicht wegen die Reste an sowie die Quotienten qn notiert. Die Notation der Rechnung für a = 25 und b = 7 sieht dann wie folgt aus:
n an qn
1 25
2 7
3 4
3
4 3
1
5 1
1
6 0
3
Der letzte nichttriviale Rest a5 ist Eins wie erwartet.
1
ELBA
Ist ggT(a, b) = g, so gibt es stets Koeffizienten r, s ∈ Z mit ra + sb = g, d. h. der ggT ist stets
linear über Z kombinierbar. Der Euklidische Algorithmus kann erweitert werden, so dass er neben g
auch die Koeffizienten r, s ∈ Z berechnet (die im Allgemeinen nicht eindeutig sind). Dieses Verfahren
ist unter der Abkürzung ELBA bekannt (Euklid-Lagrange-Berlekamp-Algorithmus). Dabei wird die
Tatsache ausgenutzt, dass die Identitäten aus der Herleitung des Euklidischen Algorithmus für den
ggT auch für die Koeffizienten gelten. Die beiden Operationen Tauschen“ und Modulus abziehen“
”
”
werden beim ELBA parallel zum ggT auch auf das Paar (1, 0) angewendet (es gilt damit in jedem
Schritt der Rechnung, dass ra + sb gerade der Rest der letzten Umformung ist, d. h. im vorletzten
Schritt ist ra + sb = g). Die Werte der Koeffizienten werden wie die Reste als Folgen (rn ) und (sn )
aufgefasst und in der Tabelle mitgeführt, dabei sind in jedem Schritt wie die Werte rn bzw. sn als
Reste mit dem Quotienten qn zu berechnen:
rn := rn−2 − qn · rn−1
sn := sn−2 − qn · sn−1
Der Quotient qn stammt aus der Division mit Rest der (an )-Glieder des ursprünglichen Verfahrens.
Es wird r1 = 1 und s1 = 0 gesetzt, damit im ersten Schritt r1 a1 + s1 a2 = a1 gilt, bzw. r2 = 0 und
s2 = 1, d. h. r2 a1 +s2 a2 = a2 . Wird die obige Rekursionsvorschrift angewendet, so gilt in jedem Schritt
rn a1 + sn a2 = an wie gewünscht. Für das vorige Beispiel ergibt sich die folgende Tabelle, in der die
Koeffizienten rn und sn in jeder Zeile den Rest an aus den ursprünglichen Zahlen a und b kombinieren:
n an qn
1 25
2 7
3 4
3
1
4 3
5 1
1
6 0
3
rn
1
0
1
-1
2
-7
sn
0
1
-3
4
-7
25
Daraus ergibt sich die Linearkombination des ggT zu 2 · 25 + (−7) · 7 = 1.
Modulares Invertieren
Der erweiterte Euklidische Algorithmus kann verwendet werden, um im endlichen Körper Zp = GF(p)
(p Primzahl) ein Element zu invertieren. Dazu sei a 6≡ 0 mod p irgend ein Element mit einem Vertreter
a ∈ {1, . . . , p−1}. Wegen a < p ist der ggT von a und der Primzahl p gerade Eins, also können mit dem
ELBA Koeffizienten r, s ∈ Z ermittelt werden, so dass ra + sp = 1 gilt. Wir nehmen diese Gleichung
modulo p, und erhalten wegen sp ≡ 0 die Gleichung ra ≡ 1 mod p. Also ist r mod p das Inverse zu
a mod p in Zp . Als Beispiel sei 5 mod 7 zu invertieren. Berechnen der Koeffizienten mit dem ELBA
ergibt 3 · 5 + (−2) · 7 = 1, also ist 3 ≡ 5−1 das Inverse zu 5 mod 7 in Z7 .
Herunterladen