Prof. Dr. Gerhard Berendt Mathematische Grundlagen

Werbung
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 1 von 9
Ein wesentliches Unterscheidungsmerkmal zwischen Ring und Körper ist die Frage
der Teilbarkeit, die zunächst am Beispiel der ganzen Zahlen demonstriert werden
soll.
Grundlegende Eigenschaften der ganzen Zahlen.
Die Menge Z ist mit den Operationen der Addition und der Multiplikation ein Ring;
daher existiert nicht zu jedem (tatsächlich zu fast keinem) z  Z ein multiplikatives
Inverses. Möglich ist in der Regel nur eine ganzzahlige Division mit Rest 1:
Satz 1.3:
Seien a und b ganze Zahlen, b > 0. Dann existieren eindeutige ganze Zahlen q
und r mit 0  r < b, so dass
(1.1)
ist.
a=qb+r
Beweis:
Man betrachte die Folge
... -3b, -2b, -b, 0, b, 2b, 3b, ...
Dann gilt für ein geeignetes q  Z , dass
q b  a < (q + 1)  b
bzw.
0a–qb<b
ist. Mit r : = a – q  b, ist daher (1.1) erfüllt.
Die Eindeutigkeit folgt wie üblich durch Widerspruchsbeweis:
Angenommen, es existieren zwei Zahlenpaare q1 , r1 und q2 , r2 , die (1,1) erfüllen,
dann ist also
(q1 – q2)  b = r2 – r1 .
Sei nun o.B.d.A. etwa r2 > r1 , dann teilt also b die Differenz r2 – r1 , was unmöglich
ist, da r2 – r1 < b ist. Mithin muß r2 = r1 und daher – da Z keine Nullteiler enthält –
auch q1 = q2 sein.
1
Ringe, in denen das möglich ist, werden als Euklidische Ringe bezeichnet.
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 2 von 9
Definition 1.4:
Sei a = 2 q + r, a, q, r  Z, 0  r < q.
Dann heisst a gerade, wenn r = 0 und ungerade, wenn r = 1 .
Definition 1.5:
Wenn r = 0 in (1.1), dann heisst a " teilbar durch b" oder "b teilt a". Man schreibt
dann (b | a).
Folgerung:
Falls für ganze Zahlen a und b gilt, dass (d | a) und (d | b), dann teilt d auch jede
ganzzahlige Linearkombination von a und b.
Die Frage der Teilbarkeit führt unmittelbar auf die wichtige Teilmenge der ganzen
Zahlen, die nur durch sich selbst und 1 ohne Rest teilbar sind.
Primzahlen.
Definition 1.6:
Eine natürliche Zahl a > 1 heisst Primzahl (kurz: prim), wenn sie nur durch sich
selbst und durch 1 teilbar ist.
Eine natürliche Zahl, die nicht prim ist, heisst zusammengesetzt.
Satz 1.7 (EUKLID):
Es gibt unendlich viele Primzahlen.
Beweis (aus der Schule bekannt):
Angenommen, es gäbe nur endlich viele Primzahlen, und N sei ihr Produkt. Dann
betrachte man die Zahl X = p1 p2 ... pk + 1. Falls X prim ist, ist sie größer als N
und daher eine neue Primzahl. Andernfalls hat X einen Primfaktor q. Wäre q eine
Primzahl  N, dann wäre q | p1 p2 ... pk , und da q | X , müsste q auch die Differenz, also 1, teilen, was unmöglich ist. Also muss q eine neue Primzahl sein.
Über Primzahlen gibt es eine Reihe von einfachen Sätzen, z.B. :
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 3 von 9
Satz 1.8:
Wenn n eine natürliche Zahl ≥ 1 ist, dann existiert eine Primzahl p mit n < p  n!+1.
Beweis:
Man betrachte die Zahl N = n!+1. Falls N prim ist, setzt man p = N. Ist N nicht prim, dann besitzt
es einen Primfaktor p. Falls p  n, dann ist p Teiler von n!, also auch von (N – n!), was sinnlos
ist, da N – n! = 1 ist. Also ist p > n.
Satz 1.9:
Sei x eine reelle Zahl > 1, dann existiert eine Primzahl zwischen x und 2x.
Zum Beweis vgl. z.B. Hardy, G.H., Wright, E.M., "An Introduction to Theory of Numbers", Oxford
University Press, 1979.
Satz 1.10:
Sei n eine ganze Zahl ≥ 2. Dann gibt es keine Primzahlen zwischen n!+2 und n!+n.
Beweis:
Da n! das Produkt aller ganzer Zahlen zwischen 1 und n ist, gilt 2 | n!+2, 3 | n!+3, ..., n | n!+n.
Satz 1.11:
Falls n zusammengesetzt ist, hat n einen Primteiler p 
n.
Beweis:
Sei p der kleinste Primteiler von n . Ist n = rs, dann ist p  r und p  s. Also ist p 2  rs = n,
mithin p 
n.
Das bekannte "Sieb des Eratosthenes" verwendet den Satz 1.11 zur Bestimmung aller Primzahlen
unterhalb einer gegebenen positiven ganzen Zahl n. Über die Anzahl der Primzahlen unterhalb einer
natürlichen Zahl n gibt die in der Zahlentheorie genauer untersuchte Funktion π(n) Auskunft.
Der Fundamentalsatz der Zahlentheorie.
Eine einfache, aber wichtige Eigenschaft der zusammengesetzten Zahlen beschreibt
der
Satz 1.12:
Jede zusammengesetzte Zahl besitzt einen Primfaktor.
Beweis:
Sei n eine zusammengesetzte Zahl. Dann ist
n = n1 n2,
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 4 von 9
wobei n1 und n2 positive ganze Zahlen mit n1 ,n2 < n sind. Falls entweder n1 oder n2
prim sind, ist der Satz bewiesen. Sind beide nicht prim, dann ist
n1 = n3 n4 ,
wobei n3 und n4 positive ganze Zahlen mit n3 ,n4 < n1 sind. Die Fortsetzung des
Gedankens führt entweder nach endlich vielen Schritten auf einen Primfaktor von n,
oder aber wir erhalten eine Folge natürlicher Zahlen
n > n1 > n3 > ... > n2k-1 > 0,
die notwendig nach endlich vielen Schritten mit einem n2k-1 , das prim ist, abbrechen
muß.
Damit kann der Fundamentalsatz der Zahlentheorie bewiesen werden:
Satz 1.13 (Fundamentalsatz der Zahlentheorie):
Jede natürliche Zahl n > 1 kann eindeutig als Produkt von Primzahlpotenzen
geschrieben werden:


n  p1 1 p2 2  pk
(1.2)
k
k
  pi
i
i 1
Beweis:
als Übung.
Der grösste gemeinsame Teiler (ggT).
Definition 1.14:
Seien a und b ganze Zahlen, die nicht beide gleich Null sind. Der grösste Teiler d
derart, dass d | a und d | b gilt, heisst grösster gemeinsamer Teiler von a und b. Er
wird mit ggT(a,b) bezeichnet.
Satz 1.15:
Der ggT(a,b) kann als ganzzahlige Linearkombination von a und b geschrieben
werden (x, y  Z):
(1.3)
d  ggT (a, b)  a  x  b  y .
Beweis:
Man betrachte die Menge M aller Linearkombinationen a  u + b  v, wobei u und v
über alle ganzen Zahlen laufen. Diese Menge enthält positive und negative Elemente
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 5 von 9
und auch die Null. Man wähle nun diejenigen Werte x und y, für die das Element m =
ax+by den kleinsten positiven Wert in M annimmt. Nach Satz 1.3 gibt es ein r mit
0  r <m, so dass a = m  q + r gilt.
Dann ist
r  a  m  q  a  q(ax  by)  (1  q  x)  a  (q  y)  b ,
und daher ist r ebenfalls eine Linearkombination von a und b. Da jedoch r < m ist,
folgt aus der Definition von m, dass r = 0 ist. Folglich ist a = m q, d.h m | a .
Ebenso zeigt man, dass m | b . m ist mithin ein gemeinsamer Teiler von a und b.
Da d ebenfalls a und b und mithin auch deren Linearkombination m teilt, muss
d  m sein; da andererseits jedoch d = ggT(a,b) ist, folgt d = m .
Definition 1.16:
Zwei ganze Zahlen a und b heissen relativ prim, wenn ggT(a,b) = 1 ist.
Es gilt der
Satz 1.17:
Seien a und b zwei ganze Zahlen, die nicht beide gleich Null sind. Dann sind a und b
genau dann relativ prim, wenn zwei ganze Zahlen x und y mit
a x + b y = 1
existieren.
Beweis:
Falls a und b relativ prim sind, also ggT(a,b) = 1 ist, dann folgt die Behauptung aus
Satz 1.15.
Sei umgekehrt a x + b y = 1 und d = ggT(a,b). Da a und b durch d teilbar sind,
gilt dies auch für a x + b y; mithin ist 1 durch d teilbar. Also ist d = 1.
Satz 1.18:
Falls a | bc und ggT(a,b) = 1, dann ist auch a | c .
Beweis:
als Übung.
Analog zum ggT(a,b) wird das kleinste gemeinsame Vielfache kgV(a,b) definiert.
Formulieren Sie die Definition als Übung.
Interessant ist noch der folgende
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 6 von 9
Satz 1.19 (KNUTH):
Falls a und b zufällig gewählte ganze Zahlen sind, ist die Wahrscheinlichkeit dafür,
dass ggT(a,b) = 1 ist, gleich 6 / π 2 = 0.60793…
Zum Beweis vgl. man D.E. Knuth, "The Art of Computer Programming II - Seminumerical Algorithms, Addison-Wesley 1998.
Der EUKLIDische Algorithmus zur Bestimmung des ggT.
Der EUKLIDische Algorithmus erlaubt die Bestimmung des ggT zweier ganzer
Zahlen a und b und – in erweiterter Form – die Berechnung der Faktoren von a und
b in der Linearkombination aus Satz 1.15. Der Algorithmus ist ein Korollar von
Satz 1.20:
Seien a, b, q, r ganze Zahlen mit b > 0 und 0  r < b so, dass a = b q + r . Dann ist
ggT(a,b) = ggT(b,r).
Beweis:
Seien X = ggT(a,b) und Y = ggT(b,r). Falls für eine ganze Zahl c gilt, dass c | a und
c | b , dann folgt, dass auch c | r gilt. Mit dem gleichen Argument folgt, dass jeder
gemeinsame Teiler von b und r auch Teiler von a ist. Daher ist auch X = Y.
Wendet man die Aussage von Satz 1.20 sukzessive auf die ganzzahligen
Divisionswerte und jeweiligen Reste an, dann muss das Verfahren nach endlich
vielen Schritten abbrechen, weil die Reste eine streng monoton fallende Folge von
natürlichen Zahlen bilden und daher irgendwann ein Rest Null auftritt. Der Rest des
Schritts davor ist dann der ggT(a,b):
Algorithmus 1.21 von EUKLID zur Bestimmung von ggT(a,b), (a,b ≠0):
1.
Wähle |a|  |b| und setze r = a und s = b.
2.
Bestimme q und p mit r = q  s + p . Falls p = 0 ist, gib d = s als ggT(a,b) aus
und beende den Algorithmus.
3.
Setze r = s und s = p und gehe zu 2.
Bemerkungen:
Die Laufzeit des EUKLIDischen Algorithmus ist polynomial. Sie kann auf
verschiedene Weisen abgeschätzt werden (vgl. dazu auch den Satz 1.24 am Schluß
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 7 von 9
des Arbeitsblatts). Hier soll eine eher klassische Abschätzung der Laufzeit notiert
und der dazugehörige Beweis skizziert werden:
Satz 1.22:
Seien a und b ganze Zahlen mit |a | > |b | > 0. Dann gilt für die Anzahl n der
Divisionen, die der EUKLIDische Algorithmus zur Bestimmung des ggT(a,b)
benötigt:
n  1 + 5  log10 |b | .
Beweisskizze:
Man betrachtet die Folge Fn der so genannten FIBONACCI-Zahlen, die für jedes nicht-negative
ganzzahlige n durch
Fn+2 = Fn+1 + Fn ; F0 = 1, F1 = 1
definiert ist. Dann beweist man zunächst durch Induktion, dass für die k-ten Reste rk bei der
Durchführung des EUKLIDischen Algorithmus, der nach n Divisionen abbricht, gilt
rn-k  Fk+2 , k = 1, 2, ... n .
Daher ist speziell |b | = r1  Fn+1 und |a | = r0  Fn+2 .
Ist nun n = 1, dann ist nichts zu beweisen. Ist n  2, dann zeigt man (wieder durch vollständige
Induktion), dass
Fn+1 > (8/5) n-1
gilt. Daher ist
|b |  Fn+1 > (8/5) n-1.
5
Schließlich ergibt sich also wegen 8 / 5  10 , dass
log10 | b |  (n  1) log10
8
1
 (n  1) log10 (5 10 )  (n  1) 
5
5
ist, woraus die Behauptung unmittelbar durch Auflösung nach n folgt.
Die Anzahl der Divisionen, die der Algorithmus zur Berechnung des ggT erfordert, ist mithin durch
das Fünffache der Stellenzahl der kleineren der beiden Zahlen nach oben beschränkt; der EUKLIDische Algorithmus ist daher auch bei großen Argumenten sehr schnell.
Da jeder Rest eine Linearkombination der beiden zuvor berechneten Reste ist, kann
auch die Linearkombination in Satz 1.15 rekursiv ermittelt werden. Hierzu kann der
folgende Algorithmus dienen:
Algorithmus 1.23 zur Bestimmung der Faktoren u und v in ggT(a,b ) = ua+vb:
1.
Setze u = 1 und d = a. Falls b = 0 ist, setze v = 0 und beende den
Algorithmus, andernfalls setze v1 = 0 und v2 = b..
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 8 von 9
2.
Berechne q und r mit d = q  v2 + r durch eine Division mit Rest, und setze t =
u - q v1, u = v1 , d = v2 , v1 = t und v2 = r.
3.
Falls v2 = 0 ist, setze v = (d - au) / b und beende den Algorithmus; ansonsten
gehe zu 2.
Bemerkung:
Der Algorithmus 1.23 kann zur Bestimmung von Inversen in Restklassen benutzt
werden.
Beispiel 1:
Der ggT von 1547 und 560 soll mit dem EUKLIDischen Algorithmus bestimmt
werden.
Man erhält:
1547  2  560  427
560  1  427  133
427  3  133  28
133  4  28  21
28  1  21  7
21  3  7  0
Also gilt ggT(1547, 560) = 7.
Um diesen Teiler als Linearkombination von 1547 und 560 auszudrücken, berechnet
man sukzessive:
7 = 28  1 21 = 28  1 (133  4  28)
= 5  28  1  133 = 5  (427  3  133)  1  133
= 5  427  16  133 = 5  427  16  (560  1  427)
= 21  427  16  560 = 21  (1547  2  560)  16  560
= 21  1547  58  560 .
Beispiel 2:
Um die multiplikative Inverse zu a  5 mod 21 zu bestimmen, berechnet man mit
dem Algorithmus 1.23 die Koeffizienten in der Gleichung (ggT(21, 5) = 1):
1 = x  21 + y  5
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 1 b / S. 9 von 9
zu x = 6 und y = - 25  17 mod 21.
Mithin ist 5  17 = 85 = 4  21 + 1  1 mod 21 , also 17  5 -1 mod 21 .
Aufgabe:
Implementieren Sie die Algorithmen 1.21 und 1.23 in einer Sprache Ihrer Wahl.
Satz 1.24:
Der ggT zweier ganzer Zahlen a und b mit a > b erfordert einen Rechenaufwand von
O(log3 a).
Beweis:
Um den Rechenaufwand abzuschätzen, muß die Anzahl der erforderlichen
Divisionen ermittelt werden. Wie gezeigt, bilden die sukzessiven Reste eine streng
monoton gegen Null fallende Folge ganzer Zahlen. Wir zeigen zunächst, dass jeweils
r j+2 < ½ r j
gilt:
Ist r j+1  ½ r j , dann folgt sofort r j+2 < r j+1  ½ r j . Sei also r j+1 > ½ r j . In diesem
Falle ergibt die nächste Division
r j = 1  r j+1 + r j+2 ,
und damit r j+2 = r j – r j+1 < ½ r j , wie behauptet.
Da nun nach jeweils 2 Schritten der Rest höchstens halb so groß ist wie anfangs, und
da der Rest niemals unterhalb 1 gelangt, gibt es also höchstens 2  log2 a Divisionen;
dies ist O(log a). Jede Division enthält keine größere Zahl als a, und benötigt daher
O(log2 a) Bit-Operationen. Daher ergibt sich der Gesamtaufwand des Algorithmus zu
O(log a)  O(log2 a) = O(log3 a).
Bemerkung:
Der gleiche Aufwand ergibt sich für die Bestimmung der Koeffizienten in der
Linearkombination in Satz 1.17.

Herunterladen