Diskrete Strukturen (WS 2009/10)

Werbung
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 57 –
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
I
I
I
I
Uhr: Stunden mod 24,
Minuten mod 60,
Sekunden mod 60, . . .
Rechnerarithmetik:
mod 2w , w ∈ {8, 16, 32, 64}
Prüfziffern mod 10 oder
mod 11
...
Ein Mod-5-Zähler in Hardware
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Division mit Rest
Satz 15
Seien a ∈ N0 und n ∈ N. Dann gibt es eindeutig bestimmte
q ∈ N0 , r ∈ {0, . . . , n − 1} mit
a = n ∗ q + r.
Ensprechend definieren wir die Operationen “ div ” und “ mod ”
durch
a div n = q und a mod n = r
(das ganzzahlige Teilen und die Berechnung des Restes).
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
– 58 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Die Kongruenz-Relation
Definition 16
Ist a mod n = b mod n, dann sind a und b kongruent modulo n,
wir schreiben
a ≡ b (mod n).
In welcher logischen Beziehung stehen die Aussagen
“a = b mod n” und “a ≡ b (mod n)”?
(Nein, das ist nicht ganz das Gleiche!)
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
– 59 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Eigenschaften der Kongruenz-Relation
Satz 17
Für alle a, b, n ∈ N gelten die folgenden Eigenschaften
Reflexivität: a ≡ a (mod n)
Symmetrie: a ≡ b (mod n) ⇔ b ≡ a (mod n)
Transitivität: (a ≡ b (mod n)) ∧ (b ≡ c (mod n))
⇒ (a ≡ c (mod n))
(Allgemein bezeichnet man Relationen, die reflexiv und
symmetrisch und transitiv sind, als “Äquivalenzrelationen”.)
Satz 18 (Regel vom Vielfachen)
Für alle a, b ∈ N mit a > b gilt: (a ≡ b (mod n)) ⇔ n|(a − b).
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
– 60 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Rechenregeln mod n
Satz 19
1. (a + b) mod n = (a mod n) + (b mod n) mod n
2. (a − b) mod n = (a mod n) − (b mod n) mod n
3. (a ∗ b) mod n = (a mod n) ∗ (b mod n) mod n
4. ad mod n = (ad−x ∗ ax ) mod n =
((ad−x mod n) ∗ (ax mod n)) mod n
(für x ≤ d)
Bemerkung
!!! Im Allgemeinen gilt ad mod n = ad mod n mod n nicht!
(Die Regel für Potenzen werden wir noch kennenlernen . . . )
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
– 61 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Folgerungen
1. Bei Berechnungen modulo n kann man
Zwischenergebnisse (alle Summen, alle Differenzen und
alle Produkte) auf Werte in {0, . . . , n − 1} reduzieren.
2. Insbesondere kann man effizient ad mod n berechnen:
Mit Hilfe des Square-and-Multiply Algorithmus
in höchstens kubischer Zeit!
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
– 62 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Effizientes Rechnen mod n
Man berechne
4
4(4 ) (mod 7).
Wir wollen die Zahl
4
4(4 ) =
1340780792994259709957402499820584612747936582059239
3377723561443721764030073546976801874298166903427690
031858186486050853753882811946569946433649006084096
keinesfalls zuerst berechnen und dann durch 7 teilen!
2: Zahlentheorie / Restklassen
2.1: Modulare Arithmetik
– 63 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
2.2: Anwendung: EAN- bzw. GTIN
Prüfziffer
EAN: 13-stellige “European Article Number”;
2009 umbenannt in “Global Trade Item
Number” (GTIN), bestehend aus
I Länderpräfix (z.B. 40–44 für
Deutschland),
I Unternehmensnummer,
I Artikelnummer des Herstellers und
I Prüfziffer x13
I Präfix, Unternehmensnummer und
Artikelnummer zusammen 12 Ziffern
x1 , . . . , x12 ∈ {0, . . . , 9}.
2: Zahlentheorie / Restklassen
2.2: Anwendung: EAN/GTIN
– 64 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 65 –
EAN- bzw. GTIN Prüfziffer (2)
Die GTIN (x1 , . . . , x12 , x13 ) ist gültig, falls
(x1 + 3x2 + x3 + 3x4 + x5 + 3x6 + · · · + x11 + 3x12 + x13 ) mod 10 = 0.
I
I
Sei (x1 , . . . , x12 ) gegeben. Wie muss man die Prüfziffer x13
berechnen, um eine gültige GTIN zu erhalten?
Erkennungsleistung: Besonders häufige Fehler (bei
menschlicher Eingabe) werden meistens erkannt:
1. Veränderung einer gültigen GTIN in nur einer Ziffer
erkennt man immer. (Nachrechnen!)
2. Das Vertauschen zweier benachbarter Ziffern
wird meistens, aber nicht immer erkannt.
(Für welche Ziffern x 6= y gilt x + 3y ≡ 3x + y mod 10?)
3. Das Vertauschen zweier beliebiger Ziffern
wird in mehr als 50 % aller Fälle nicht erkannt.
2: Zahlentheorie / Restklassen
2.2: Anwendung: EAN/GTIN
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 66 –
Warum ist die Erkennungsleistung so?
Könnte man sie verbessern?
Satz von Bézout
Seien a, b, n ∈ N gegeben. Ist a teilerfremd zu n, dann ist die
Gleichung
ax ≡ b (mod n)
lösbar. Es gibt genau eine Lösung x ∈ {0, . . . , n − 1}.
(Werden wir noch beweisen!)
I
I
I
I
Verändern einer Ziffer: 1 und 3 sind teilerfremd zu 10.
Vertauschen zweier Ziffern: 2x ≡ b ist nicht eindeutig
lösbar. Man beachte, dass 2 und 10 nicht teilerfremd sind!
Alternative: Berechnung der Püfziffer mod 11 (Primzahl!).
Problem: zusätzliche Ziffer “10” oder “verbotene” Eingaben.
2: Zahlentheorie / Restklassen
2.2: Anwendung: EAN/GTIN
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 67 –
International Standard Book Number
(ISBN – veraltet)
Eine ISBN (x1 , . . . , x9 , x10 ) ist gültig, falls
1x1 + 2x2 + 3x3 + 4x4 + 5x5 + 6x6 + 7x7 + 8x8 + 9x9 ≡ x10 (mod 11).
I
I
I
I
Die 11 möglichen Prüfziffern sind ∈ {0, 1, . . . , 9, ’X’}.
Veränderung einer gültigen ISBN in nur einer Ziffer
erkennt man immer.
Das Vertauschen zweier benachbarter Ziffern erkennt
man immer – und sogar das Vertauschen zweier
beliebiger Ziffern!
Statt der alten 10-stelligen ISBN verwendet man inzwischen
13-stellige, bestehend aus einem Pseudo-Ländercode 978,
der 9-stellingen ISBN (ohne Prüfziffer) und der GTIN
Prüfziffer.
2: Zahlentheorie / Restklassen
2.2: Anwendung: EAN/GTIN
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
2.3: Der Satz von Bézout
Den folgenden Satz haben wir bereits ohne Beweis behauptet.
Er wird auch als “Fundamentalsatz der Arithmetik” bezeichnet:
Satz 20 (Eindeutigkeit der Primzahlzerlegung)
Jede Zahl n ∈ N, n ≥ 2, lässt sich eindeutig in der Form
n = p1e1 ∗ p2e2 ∗ · · · ∗ pkek
darstellen, wobei p1 < p2 < . . . < pk und e1 , e2 , . . . , ek ∈ N gilt.
( Beweis der Existenz induktiv;
Eindeutigkeit als Widerspruchsbeweis! )
2: Zahlentheorie / Restklassen
2.3: Der Satz von Bézout
– 68 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Teilerfremde Zahlen
Definition 21
Der größte gemeinsame Teiler ggT(a, b) von a, b ∈ N ist die
größte natürliche Zahl, die sowohl a als auch b teilt.
Zwei Zahlen a und b sind teilerfremd (wir sagen auch relativ
prim), wenn ggT(a, b) = 1 ist.
Die Existenz und Eindeutigkeit des ggT ergibt sich aus der
Eindeutigkeit der Primzahlzerlegung.
Genau dann, wenn p prim ist, gilt ggT(p, a) = 1 für alle
a ∈ {1, . . . , p − 1}.
2: Zahlentheorie / Restklassen
2.3: Der Satz von Bézout
– 69 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 70 –
Linearkombinationen
Definition 22
Linearkombinationen von zwei Zahlen a, b ∈ Z sind alle Zahlen
L = ax + by, für x, y ∈ Z. Die x, y heißen Koeffizienten von L.
Eine Linearkombination L = ax + by ist positiv, wenn L ∈ N.
Satz 23
Die kleinste positive Linearkomb. von a und b ist ggT(a, b).
Beispiel 24
Die Linearkombinationen von 4 und 6 sind
{. . . , −4, −2, 0, 2, 4, . . .}, also alle geraden Zahlen in Z.
Die kleinste pos. Linearkomb. von 4 u. 6 ist 2 = 6 ∗ 1 + 4 ∗ (−1).
2: Zahlentheorie / Restklassen
2.3: Der Satz von Bézout
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Der Hilfssatz von Euklid
Satz 25
Aus n|ab und ggT(a, n) = 1 folgt n|b.
Folgerung 26
Ist p eine Primzahl und p|ab, dann ist p|a oder p|b.
2: Zahlentheorie / Restklassen
2.3: Der Satz von Bézout
– 71 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Kürzen mod n
Im Allgemeinen gilt nicht ax ≡ ay (mod n) ⇒ x ≡ y (mod n).
Z.B.
10 ≡ 30 (mod 20) aber 5 6≡ 15 (mod 20).
Nur wenn wir die Wahl von a einschränken, dürfen wir durch a
kürzen:
Satz 27 (Kürzungsregel)
Ist a teilerfremd zu n und
ax ≡ ay (mod n),
dann gilt
x ≡ y (mod n).
2: Zahlentheorie / Restklassen
2.3: Der Satz von Bézout
– 72 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Lösbare lineare Gleichungen
Satz 28 (Satz von Bézout)
Seien a, b, n ∈ N gegeben. Ist a relativ prim zu n, dann ist die
Gleichung
ax ≡ b (mod n)
lösbar. Es gibt genau eine Lösung x ∈ {0, . . . , n − 1}.
Beispiel: 3x ≡ 7 mod 8.
Folgerung 29
Ist a relativ prim zu n, dann ist die Funktion
πa : {0, . . . , n − 1} → {0, . . . , n − 1},
eine Permutation.
2: Zahlentheorie / Restklassen
2.3: Der Satz von Bézout
πa (x) = ax mod n
– 73 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
2.4: Der Restklassenring mod n
Modulo n sind alle Werte a ± kn äquivalent.
Wir interessieren uns für die Menge der echt verschiedenen
Werte, d.h., für a1 , a2 , . . . mit ai 6≡ aj (mod n) :
Definition 30
Seien n ∈ N und a ∈ Z. Die Restklasse von a modulo n ist
{kn + a|k ∈ Z}
Ein Element einer Restklasse bezeichnet man auch als
Repräsentant der Restklasse. Die natürlichen Repräsentanten
sind die Zahlen 0, . . . , n − 1.
Die Menge aller Restklassen modulo n, geschrieben Zn , bildet,
zusammen mit der Addition und der Multiplikation, den
Restklassenring mod n.
2: Zahlentheorie / Restklassen
2.4: Der Restklassenring mod n
– 74 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 75 –
Bemerkungen
I
I
I
I
I
Jede Restklasse hat genau einen natürlichen
Repräsentanten a ∈ {0, . . . , n − 1}, aber unendlich viele
beliebige Repräsentanten a + kn ∈ Z.
Nie vergessen: Mathematisch bedeutet eine Berechung in
Zn , dass egal ist, wie eine Restklasse repräsentiert wird!
Zn besteht aus genau n Restklassen.
In Zn können wir rechnen wie in Z (→ Rechenregeln
mod n), bis auf die etwas andere → Kürzungsregel.
Wenn klar ist, das wir für ein bestimmtes n in Zn rechnen,
können wir statt “a ≡ b (mod n)” auch “a = b” schreiben.
2: Zahlentheorie / Restklassen
2.4: Der Restklassenring mod n
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Der Begriff “Ring”
Was genau ein “Ring” ist, werden wir im Kapitel über endliche
algebraische Strukturen definieren. Für uns ist wichtig: In Zn
gelten, wie in Z, die folgenden arithmetischen Gesetze:
I
Assoziativgesetze:
I
I
I
Kommutativgesetze:
I
I
I
I
I
Addition: a + b = b + a und
Multiplikation: ab = ba.
Neutrale Elemente:
I
I
Addition: a + (b + c) = (a + b) + c und
Multiplikation: a(bc) = (ab)c.
Addition: 0 + a = a + 0 = a und
Multiplikation: a1 = 1a = a.
Inverses Element der Addition: a + (−a) = 0.
Distributivgesetz: a(b + c) = ab + ac
2: Zahlentheorie / Restklassen
2.4: Der Restklassenring mod n
– 76 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Division in Zn
I
I
I
In Z ist die ganzzahlige Division nur partiell definiert:
a/b = c, falls es ein c ∈ Z gibt mit bc = a. Z.B. ist
3 ∗ 4 = 12, 3 ∗ 5 = 15, und ensprechend sind 12/4 und
15/5 in Z definiert, aber 13/3 und 14/5 nicht.
Auch in Zn wollen wir die Division zumindest partiell
definieren.
Beispiel Z10 :
I
I
I
I
4 ∗ 3 = 2 und 3 ∗ 5 = 5.
Analog zu Z müsste 2/3 = 4 und 5/5 = 3 gelten.
5/5 = 3? Kann doch nicht sein!
Tatsächlich ist 1 ∗ 5 = 3 ∗ 5 = 5 ∗ 5 = 7 ∗ 5 = 9 ∗ 5 = 5,
also könnte 5/5 eine beliebige ungerade Zahl sein . . .
Und 2/5? D.h. k ∈ N mit 2k ≡ 5 (mod 10)? Gibt’s nicht!
2: Zahlentheorie / Restklassen
2.4: Der Restklassenring mod n
– 77 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Multiplikative Inverse modulo n
Definition 31
Sei a ∈ Zn . Das multiplikative Inverse von a mod n ist ein Wert
a−1 mit a ∗ a−1 ≡ 1 (mod n).
Beispiel 32
Das multiplikative Inverse von 3 mod 10 ist (→ Tafel)
Es gibt kein multiplikatives Inverses von 5 mod 10, denn in Z10
gilt k 5 ∈ {0, 5} für alle ganzen k .
Satz 33
In Zn existiert das multiplikative Inverse einer ganzen Zahl a
modulo n genau dann, wenn a teilerfremd zu n ist.
(Satz von Bézout, Widerspruchsbeweis)
2: Zahlentheorie / Restklassen
2.4: Der Restklassenring mod n
– 78 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Division in Zn – jetzt richtig
I
I
I
Wenn ein multiplikatives Inveres von b in Zn existiert,
dann ist a/b = a ∗ b−1 .
Wenn ein solches Inverses nicht existiert,
dann ist a/b nicht definiert.
Wenn man in Zn rechnet, darf man niemals (!!!) a/b ∈ Q
verwenden . . .
denn a und b sind Restklassen, die jeweils unendlich viele
verschiedene Zahlen als Repräsentanten haben können.
(Anders als in Z, wo a und b eindeutig bestimmte Zahlen
sind, und a/b ∈ Q für b 6= 0 eindeutig bestimmt ist.)
2: Zahlentheorie / Restklassen
2.4: Der Restklassenring mod n
– 79 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
2.5: Die Berechnung des Inversen in Zn
Frage 1: Wie können wir effizient feststellen,
ob b−1 mod n existiert?
D.h.: Wie kann man den ggT von a und n berechnen?
Frage 2: Wie können wir b−1 mod n
effizient berechnen?
Denn: “Teste für alle x ∈ Zn , ob ax mod n = 1 gilt”
funktioniert zwar, ist aber nur für kleine n effizient.
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 80 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Die brutale Berechnung des ggT:
Eine Nicht-Antwort auf Frage 1
Eingabe: a, b ∈ N
Ausgabe: ggT(a, b)
Algorithmus:
for i from min{a, b} downto 1 do
if i|a and i|b then
return i
end if
end for
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 81 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Warum keine Antwort auf Frage 1?
Der Algorithmus funktioniert doch . . .
Beispiel:
I
I
I
Für alle Z ∈ N gilt ggT(2Z − 1, 2Z − 2) = 1. (Warum?)
Der Brutal-Algorithmus probiert 2Z − 2 verschiedene Teiler
i, bis er endlich mit i = 1 den ggT findet.
Ersetzt man Z durch Z + 1,
I
I
dann werden die Zahlen nur um 1 Bit länger,
aber die Laufzeit des Algorithmus verdoppelt sich!
Allgemein:
Die Laufzeit zur Berechnung des ggTs zweier Z -bit Zahlen
(d.h., für a, b < 2Z die Berechnung von ggT(a, b))
kann sich etwa proportional zu 2Z verhalten.
I Eine solche Laufzeit nennt man exponentiell.
=⇒ Exponentielle Laufzeiten sind schlecht!
I
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 82 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 83 –
Zwei hilfreiche Eigenschaften des ggT
Satz 34
1. Ist b|a, dann ist ggT(a, b) = b.
2. Ist r = a mod b, dann ist ggT(a, b) = ggT(b, r ).
(Zweite Beh.:
r = a mod b entspricht r = a − bx für ein x ∈ N0 .
(a) Jeder gemeinsame Teiler von a und b teilt auch r .
(b) Jeder gemeinsame Teiler von b und r teilt auch a = bx + r .)
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Antwort auf Frage 1:
Der Euklidische Algorithmus zur
Berechung des ggT
Eingabe: a, b ∈ N
Ausgabe: ggT(a, b)
Algorithmus:
r := a mod b
while r 6= 0 do
a := b
b := r
end while
return b
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 84 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Die Laufzeit des Euklidischen
Algorithmus
Satz 35
Seien a und b Z -bit Nummern, d.h., a, b < 2Z .
Dann terminiert der Euklidische Algorithmus spätestens nach
2Z Schleifendurchläufen.
(Für a ≥ b gilt: a ≥ b + r > 2r .)
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 85 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Zwei Varianten des Euklidischen
Algorithmus
Eingabe: a, b ∈ N
Ausgabe: ggT(a, b)
Eingabe: a, b ∈ N
Ausgabe: ggT(a, b)
Algorithmus (iterativ):
r := a mod b
while r 6= 0 do
a := b
b := r
end while
return b
Algorithmus (rekursiv):
r := a mod b
if r = 0 then
return b
else
return ggT(b, r )
end if
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 86 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 87 –
Worin unterscheiden sich die beiden
Varianten?
I
I
I
I
I
der gleiche Algorithmus (die gleichen Werte a, b, und r )
Laufzeit: # Schleifendurchläufe = # rekursiver Aufrufe
Laufzeitanalyse (scheinbar) einfacher bei iterativer Variante
Korrektheit klarer bei rekursiver Variante
beim Rechnen von Hand finde ich die rekursive Variante
einfacher, z.B.,
ggT(50, 23) = ggT(23, 4) = ggT(4, 3) = ggT(3, 1) = 1.
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Beispiele
Berechne ggT(33, 27), ggT(343, 77) und ggT(3343, 77).
ggT(a, b)
Gleichung
r
ggT(33, 27)
33 = 1 ∗ 27 + 6
6
ggT(27, 6)
27 = 4 ∗ 6 + 3
3
ggT(6, 3)
6=2∗3+0
0 Ergebnis=3
ggT(343, 77)
343 = 4 ∗ 77 + 35
35
ggT(77, 35)
77 = 2 ∗ 35 + 7
7
ggT(35, 7)
35 = 5 ∗ 7 + 0
0 Ergebnis=7
ggT(3343, 77) 3343 = 43 ∗ 77 + 32 32
ggT(77, 32)
77 = 2 ∗ 32 + 13
13
ggT(32, 13)
32 = 2 ∗ 13 + 6
6
ggT(13, 6)
13 = 2 ∗ 6 + 1
1
ggT(6, 1)
6=6∗6+0
0 Ergebnis=1
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 88 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 89 –
Gesucht: Die Koeffizienten der
Linearkombination ggT
Beobachtung
Sei ggT(a, b) = 1. Dann ist 1 die kleinste positive
Linearkombination von a und b. D.h., es gibt Koeffizienten x und
y mit
ax + by = 1.
Wenn wir diese Koeffizienten kennen,
dann können wir multiplikative Inverse berechnen:
ax ≡ 1 (mod b),
also a−1 ≡ x (mod b).
Genauso:
b−1 ≡ y (mod a).
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Zwei hilfreiche Beobachtungen,
neu aufgemischt
Satz (bereits bekannt)
1. Ist b|a, dann ist ggT(a, b) = b.
2. Ist r = a mod b, dann ist ggT(a, b) = ggT(b, r ).
Satz 36
1. Ist b|a, dann ist b = ggT(a, b) = 0a + 1b.
2. Ist z = a div b und ggT(a, b) = xb + yr , dann
ggT(a, b) = ggT(b, r ) = ya + (x − zy)b.
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 90 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 91 –
Der Erweiterte Euklidische Algorithmus
(→ Frage 2)
Eingabe: a, b ∈ N, a < n
Ausgabe: (d, x, y ),
d = ggT(a, b) ∈ N x, y ∈ Z : ax + by = d
Algorithmus XggT(a, b):
r := a mod b
if r = 0 then
return (b, 0, 1)
(∗ b = ggT(a, b) = 0a + 1b ∗)
else
(d, x, y ) := XggT(b, a mod b) (∗ d = ggT(a, b) = xb + yr ∗)
z := a div b
return (d, y , x − zy ) (∗ d = ggT(a, b) = ya + (x − zy )b ∗)
end if
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 92 –
Eigenschaften des EEA
1. Laufzeit: Genau so viele rekursive Aufrufe, wie beim
Euklidischen Algorithmus
2. Korrektheit:
2.1 d = ggT(a, b): Gleiche Operationen wie beim Euklidischen
Algorithmus
2.2 ax + by = d: Induktiv (Anfang: r = 0)
r := a mod b
if r = 0 then
return (b, 0, 1)
(∗ b = ggT(a, b) = 0a + 1b ∗)
else
(d, x, y ) := XggT(b, a mod b) (∗ d = ggT(a, b) = xb + yr ∗)
z := a div b
return (d, y , x − zy ) (∗ d = ggT(a, b) = ya + (x − zy )b ∗)
end if
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
Beispiel (1)
Berechne den erweiterten ggT von 33 und 27 und – wenn
vorhanden – das multiplikative Inverse von 27 mod 33.
ggT(a, b)
ggT(33, 27)
ggT(27, 6)
ggT(6, 3)
Gleichung
33 = 1 ∗ 27 + 6
27 = 4 ∗ 6 + 3
6=2∗3+0
r,
z
r = 6, z = 1
r = 3, z = 4
r =0
Ergebnis
(3,-4,5)
(3,1,-4)
(3,0,1)
Probe: 33 ∗ (−4) + 27 ∗ 5 = −132 + 135 = 3
Man beachte die Reihenfolge in der Berechnung: zuerst links
von oben nach unten, dann rechts von unten nach oben!
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
– 93 –
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 94 –
Beispiel (2): 77−1 mod 3343
ggT(a, b)
Gleichung
ggT(3343, 77) 3343 = 43 ∗ 77 + 32
ggT(77, 32)
77 = 2 ∗ 32 + 13
ggT(32, 13)
32 = 2 ∗ 13 + 6
ggT(13, 6)
13 = 2 ∗ 6 + 1
ggT(6, 1)
6=6∗6+0
r
z Ergebnis
32 43 (1, −12, 521)
13
2 (1, 5, −12)
6
2 (1, −2, 5)
1
2 (1, 1, −2)
0 — (1, 0, 1)
1=0∗6+1∗1
1 = 1 ∗ 13 + (−2) ∗ 6 = 13 − 12
1 = (−2) ∗ 32 + 5 ∗ 13 = −64 + 65
1 = 5 ∗ 77 + (−12) ∗ 32 = 385 − 384
1 = (−12) ∗ 3343 + 521 ∗ 77 = −40116 + 40117
“Heureka! Alles stimmt!”
Ergebnis: 521 ∗ 77 − k ∗ 3343 = 1 ⇒ 77−1 ≡ 521 (mod 3343).
Probe: (0)
(1)
(2)
(3)
(4)
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
Stefan Lucks
Diskrete Strukturen (WS 2009/10)
– 95 –
Iterative Variante
Es gibt auch eine iterative Variante des Erweiterten Euklidischen
Algorithmus. Suchen Sie in einem Mathebuch Ihrer Wahl oder
im Internet nach einer Beschreibung der iterativen Variante.
Siehe z.B.
http://www-dm.informatik.uni-tuebingen.de/
lehre/kryptoVL/ws0607/EGGT.pdf
2: Zahlentheorie / Restklassen
2.5: Die Berechnung des Inversen in Zn
Herunterladen