L sungshinweise zur 09. bung

Werbung
Übung 9
Mathematik für Informatiker 1
Francesco Kriegel
Zuallererst bitte das Skript „Modulo“ zur Vorlesung vom 16.11.2007 durcharbeiten, dies ist zu finden
unter http://www.math.tu-dresden.de/∼ganter/inf0708/material.html.
Es werden stets nur Teile der Aufgaben dargestellt, sodass einiges zur selbstständigen Übung verbleibt.
Den 26 Buchstaben des Alphabets sind wie folgt Elemente von Z26 zugeordnet:
A ↔ 0, B ↔ 1, . . . , Y ↔ 24, Z ↔ 25.
Ü49.
(a) Verschlüsseln Sie den Text KOMMEMORGEN durch die Funktion
f 1 : Z26 −→ Z26 mit f 1 (x) = 11 · x + 6 mod 26.
Lösung:
Die Verschlüsselung erfolgt buchstabenweise. Zuerst ordnen wir jedem Buchstaben die
zugehörige Zahl zu, dann berechnen wir den Funktionswert dieser Zahl mit der Verschlüsselungsfunktion f 1 und schließlich ordnen wir dieser Zahl wieder ihren entsprechenden Buchstaben zu.
Dies ist in folgender Tabelle dargestellt:
K
O
M
M
E
M
O
R
G
E
N
l
l
l
l
l
l
l
l
l
l
l
x
10
14
12
f 1 (x)
12
4
8
l
l
l
l
l
l
l
l
l
l
l
M
E
I
I
Y
I
E
L
U
Y
T
↓
Nun stellt sich die Frage, wie das Berechnen von f 1 (x) geschieht. Als Beispiel wählen wir den ersten Buchstaben K, der durch die Zahl 10 repräsentiert wird. Um den Buchstaben zu verschlüsseln
müssen wir f 1 (10) = 11·10+6 mod 26 auswerten. Es ist 11·10+6 = 116 und 116 mod 26 ist nun der
ganzzahlige Rest, den 116 bei der Division durch 26 lässt, in Formeln 116 mod 26 = 116−b 116
26 c·26 =
116 − b4, . . . c · 26 = 116 − 4 · 26 = 116 − 104 = 12, siehe auch Seite 5 im Skript. Für b 116
26 c = b4, . . . c sind
die Nachkommastellen unwichtig, denn durch die Abrundung werden diese abgeschnitten -- es ist
demnach salopp gesagt b 116
26 c diejenige Zahl, wie oft 26 in 116 passt, und das ist 4mal. Die Berechnung bzw. Verschlüsselung der restlichen Werte erfolgt analog.
(b) Die Zeichenfolge ICRREIB sei durch Verschlüsselung mit der Funktion f 2 : Z26 −→ Z26
mit f 2 (x) = 5 · x + 10 mod 26 entstanden. Wie lautet der Originaltext?
Lösung:
Der Text soll entschlüsselt werden, dies geschieht auch buchstabenweise. Einerseits
haben wir hier die Möglichkeit, eine Zuordnungstabelle für die Funktion f 2 aufzustellen, d.h. alle Buchstaben mit f 2 zu verschlüsseln:
x
A
B
...
f 2 (x)
K
P
...
Z
Dann lassen sich aus der Tabelle schnell die Originalbuchstaben und damit der Originaltext ablesen, dazu schaut man in der unteren Zeile nach dem zu entschlüsselnden Buchstaben und der
Originalbuchstabe steht dann darüber. Andererseits lässt sich die Funktion f 2 umkehren, d.h. wir
bilden die Entschlüsselungsfunktion. Dies kann so geschehen:
y ≡ 5 · x + 10
mod 26
13. 12. 2007
=⇒
y − 10 ≡ 5 · x
=⇒
x ≡5
−1
=⇒
x ≡ 21 · y − 2
mod 26
=⇒
x ≡ 21 · y + 24
mod 26
mod 26
· y −5
WS 2007 / 2008
−1
· 10 mod 26
Seite 1 / 4
Übung 9
Mathematik für Informatiker 1
Francesco Kriegel
Was ist 5−1 ? Das ist das multiplikativ inverse Element zu 5 in Z26 , d.h. dasjenige Element x ∈ Z26 mit
5 · x ≡ 1 mod 26. In den beiden folgenden Aufgaben kommt ein Algorithmus zur Berechnung multiplikativ inverser Elemente zur Anwendung. Hier finden wir es auch durch „scharfes Hinsehen“,
denn es gilt 5 · 5 ≡ 25 ≡ −1 mod 26 und damit ist 5 · (−5) ≡ 1 mod 26. Wegen −5 mod 26 = 21 ist also
21 das multiplikativ Inverse zu 5 in Z26 .
Nach obigen Umformungen ist die Entschlüsselungsfunktion also f 2−1 (x) = 21 · x + 24 mod 26, damit können wir nun buchstabenweise entschlüsseln:
I
C
R
R
E
I
B
l
l
l
l
l
l
l
x
8
2
f 2−1 (x)
10
14
l
l
l
l
l
l
l
K
O
R
R
E
K
T
↓
Die Auswertung der Funktion erfolgt analog wie in (a).
(c) Für welche Buchstaben stimmen Original und Bild bei Verschlüsselung mit f 1 bzw. f 2 überein?
Finden Sie Funktionen f : Z26 −→ Z26 mit f (x) = a · x + b mod 26 (a, b ∈ Z26 ) und f (x) 6= x für alle
x ∈ Z26 .
Lösung:
Zuerst sind die Fixpunkte von f 1 bzw. f 2 gesucht, d.h. alle x ∈ Z26 mit f 1 (x) = x bzw.
f 2 (x) = x. Hier möchte ich einen Satz zu Hilfe ziehen:
Satz 1
Eine lineare Kongruenz a · x ≡ b mod n ist genau dann
• lösbar, falls der größte gemeinsame Teiler von a und n ein Teiler von b ist,
d.h. falls ggT(a, n) | b ,
• eindeutig lösbar, falls a und n teilerfremd sind, d.h. falls ggT(a, n) = 1.
Um die Fixpunkte von f 1 zu finden, suchen wir also alle Lösungen von x ≡ 11 · x + 6 mod 26
bzw. -- durch Umstellen -- von der linearen Kongruenz 10 · x ≡ 20 mod 26. Wegen ggT(10, 26) =
ggT(2·5, 2·13) = 2 und 2 | 20 hat die Kongruenz nach obigem Satz mehrere Lösungen. Leider können
wir diese Kongruenz nicht nach x umstellen, denn 10 lässt sich in Z26 nicht multiplikativ invertieren, denn 10 und 26 sind nicht teilerfremd, d.h. 10 ist ein Nullteiler in Z26 und keine Einheit. Daher
müssen die Fixpunkte durch Probieren gefunden werden - bei f 1 sind das C und P.
Allgemein kann man nach obigen Satz sagen, dass eine Funktion f : Z26 −→ Z26 mit f (x) = a · x +
b mod 26 (a, b ∈ Z26 ) fixpunktfrei ist, d.h. f (x) 6= x für alle x ∈ Z26 erfüllt, d.h. kein Buchstabe zu
sich selbst verschlüsselt wird, falls die Gleichung x ≡ a · x + b mod 26 keine Lösungen hat, d.h. falls
die Kongruenz (a − 1) · x ≡ −b mod 26 nicht lösbar ist, d.h. falls der größte gemeinsame Teiler von
a − 1 und 26 kein Teiler von b ist. Für ggT(a − 1, 26) - b gibt es drei Fälle:
• a = 1, b 6= 0
(Dies entspricht gerade der Verschiebung zweier Buchstabenreihen gegeneinander um b Positionen, sind also insbesondere Verschiebungspermutationen,
z.B. für b = 2:
A
B
C
D
C
D
E
F
...
...
W
X
Y
Z
Y
Z
A
B
Hierbei ist auch ersichtlich, dass nicht b = 0 gewählt werden darf.)
• a > 1 ungerade, b ungerade
• a = 14, b ∉ {0, 13}
13. 12. 2007
WS 2007 / 2008
Seite 2 / 4
Übung 9
Mathematik für Informatiker 1
Francesco Kriegel
Berechnen Sie für die gegebenen Werte von a und b den größten gemeinsamen Teiler ggT(a, b),
und stellen Sie ihn in der Form ggT(a, b) = α · a + β · b mit α, β ∈ Z dar.
Ü50.
(a) a = 24, b = 129
Lösung:
Zur Berechnung des größten gemeinsamen Teilers zweier natürlicher Zahlen verwen-
den wir den Euklidischen Algorithmus:
Algorithmus 1
Gegeben seien uns zwei natürliche Zahlen a, b ∈ N. OEdA sei a ≥ b . Wir möchten nun den größten
gemeinsamen Teiler ggT(a, b) berechnen und ihn als Linearkombination α· a +β·b von a und b mit
α, β ∈ Z darstellen. Dazu erstellen wir eine Tabelle mit fünf Zeilen, die wir anfangs mit den Werten
belegen, die rechts als Anfangswerte angegeben sind.
Anfangswerte: r 0 = a, r 1 = b
i
0 1 2 ...
m
m +1
α0 = 1, α1 = 0
ri
a
b
ggT(a, b)
0
β0 = 0, β1 = 1
qi
Iteration: r i +1 = r i −1 − qi · r i = r i −1 mod r i
¥ r ¦
b
αi
1 0
α
(−1)m+1 · ggT(a,b)
q i +1 = r i = r i div r i +1
βi
0
β
1
i +1
αi +1 = αi −1 − q i · αi
a
(−1)m · ggT(a,b)
βi +1 = βi −1 − q i · βi
Nun beginnt die Iteration nach den Formeln rechts neben der Tabelle, dabei werden alle freien
Felder ausgefüllt. Die obere Zeile i dient nur als Laufindex, dieser wird mit jeder neuen Spalte um 1
erhöht. Nach endlich vielen Schritten entsteht in der Reste-Zeile r i eine 0, dies ist dann die Spalte
m + 1 und in der vorhergehenden Spalte m können sofort der ggT(a, b) sowie α und β abgelesen
werden, d.h. es gilt dann ggT(a, b) = α · a + β · b . Die beiden Werte αm+1 und βm+1 dienen lediglich
der Kontrolle -- falls kein Rechnenfehler in der entsprechenden Zeile vorliegt, dann ist αm+1 gerade
b
a
(−1)m+1 · ggT(a,b)
und βm+1 = (−1)m · ggT(a,b)
.
Nun soll ggT(24, 129) berechnet werden. Da hier a < b gilt, vertauschen wir während der Berechnung die Rollen von a und b, d.h. wir haben die Anfangswerte r 0 = b, r 1 = a und α0 = 0, α1 = 1
sowie β0 = 1, β1 = 0.
i
0
1
2
3
4=m
5
ri
129
24
9
6
3 = ggT(a, b)
0
qi
5
2
1
2
αi
0
1
-5
11
−16 = α
b
m
43 = (−1)4 · 129
3 = (−1) · ggT(a,b)
βi
1
0
1
-2
3=β
a
m+1
−8 = (−1)4+1 · 24
· ggT(a,b)
3 = (−1)
Es gilt schließlich ggT(24, 129) = 3 = −16 · 24 + 3 · 129.
(b) a = 1970, b = 1066
Lösung:
2 = −204 · 1970 + 377 · 1066
(c) a = 504, b = −294
Lösung:
42 = 3 · 504 + (−5) · 294
Beachte: -294 ist keine natürliche Zahl, aber es gilt ggT(504, −294) = ggT(504, 294) und damit lässt
sich auch hier der Euklidische Algorithmus verwenden.
13. 12. 2007
WS 2007 / 2008
Seite 3 / 4
Übung 9
Mathematik für Informatiker 1
Francesco Kriegel
Geben Sie jeweils auch das kleinste gemeinsame Vielfache kgV(a, b) von a und b an.
Es gilt der Zusammenhang ggT(a, b) · kgV(a, b) = a · b für alle a, b ∈ Z. Diese Formel lässt
Lösung:
sich nach kgV(a, b) umstellen. Damit ergeben sich kgV(24, 129) = 1032, kgV(1970, 1066) = 1050010 und
kgV(504, −294) = 3528.
Ü52.
(a) Berechnen Sie 17−1 mod 101, 357−1 mod 1234 und 3125−1 mod 9987.
Lösung:
Nach dem Skript auf Seite 24 sind Einheiten gerade diejenigen Elemente, durch die
man teilen kann, also die ein multiplikativ inverses Element haben. Ein Element x ∈ Zn ist genau
dann eine Einheit in Zn , wenn es teilerfremd zu n ist, d.h. falls ggT(x, n) = 1. Zusammengefasst ist
ein Element x ∈ Zn genau dann multiplikativ invertierbar, wenn es teilerfremd zu n ist, d.h. falls
ggT(x, n) = 1. Das Inverse von x bezeichnen wir mit x −1 und es gilt dann x · x −1 ≡ 1 mod n. Inverse
Elemente sind stets eindeutig bestimmt, falls sie existieren.
Wir wollen also nun 17−1 mod 101 berechnen, also das multiplikativ Inverse von 17 in Z101 . Zuerst
müssen wir uns fragen, ob 17 invertierbar ist, d.h. ob ggT(17, 101) = 1 gilt. Dies kann durch „scharfes Hinsehen“ oder mit dem Euklidischen Algorithmus geschehen. Da beide Zahlen prim sind, sind
sie teilerfremd, also lässt sich 17 invertieren. Wie im Skript auf Seite 47 dargestellt, können wir nun
das Inverse mit dem Euklidischen Algorithmus berechnen.
i
0
1
2
3
4
ri
101
17
16
1
0
qi
5
1
16
αi
0
1
-5
6
−101
Damit gilt also 17 · 6 ≡ 1 mod 101 und damit 17−1 mod 101 = 6.
(b) Lösen Sie 17x ≡ 8 mod 101, 357x ≡ 4 mod 1234 und 3125x ≡ 4 mod 9987.
Lösung:
Die lineare Kongruenz 17x ≡ 8 mod 101 lässt sich umstellen zu x ≡ 17−1 · 8 mod 101
und nach (a) ist 17−1 mod 101 = 6, also ist x ≡ 17−1 · 8 ≡ 6 · 8 ≡ 48 mod 101. Lösungen sind also alle
ganzen Zahlen, die kongruent zu 48 in Z101 sind, d.h. alle ganzen Zahlen, die bei Division durch 101
den Rest 48 lassen. (Das sind unendliche viele Lösungen!)
(c) Ermitteln Sie die Anzahl der Einheiten in Z101 , Z1234 und Z9987 .
Lösung:
Die Euler’sche ϕ-Funktion wird im Skript auf der Seite 25 eingeführt. ϕ(n) gibt die An-
zahl der Einheiten in Zn an. Es gilt folgender Satz für die ϕ-Funktion:
Satz 2
Sei p ∈ P eine Primzahl, dann gilt
ϕ(p) = p − 1.
Für beliebige natürliche Zahlen m, n ∈ N gilt
ϕ(m · n) = ϕ(m) · ϕ(n).
Um also ϕ(9987) zu berechnen, benötigen wir zuerst die Primfaktorzerlegung, diese ist 9987 = 3 ·
3329. Nach obigem Satz gilt nun ϕ(9987) = ϕ(3 · 3329) = (3 − 1) · (3329 − 1) = 2 · 3328 = 6656.
13. 12. 2007
WS 2007 / 2008
Seite 4 / 4
Herunterladen