Von den Zufallszahlen und ihrem Gebrauch

Werbung
Von den Zufallszahlen und ihrem Gebrauch
J. Baumeister∗ und Tania Garfias Macedo†
Im Mai 2011
Zusammenfassung
Zufallszahlen sind aus vielen Anwendungsgebieten heute nicht mehr wegzudenken:
Computerspiele wären schnell langweilig, wenn nicht durch eingebauten Zufall der
Ablauf innerhalb des Spiels bzw. von Spiel zu Spiel variiert würde. Das Binomialmodell zur Ermittlung von fairen Optionspreisen bedient sich des Zufalls in der
Simulation des Auf und Ab von Aktienkursen. Um die Sicherheit bei der Übertragung
von Daten im Internet zu gewährleisten, werden kryptografische Programme verwendet, die sichere Zufallszahlen verwenden.
Viele Einträge im Internet zum Thema Zufallszahlen“ sind aufgelistet unter dem
”
Stichwort echte Zufallszahlen. Doch kann es echte Zufallszahlen geben? Oder anders
gefragt, wie soll man solche Zahlen in ihrer Echtheit/Verwendbarkeit bewerten,
und wie kann man brauchbare Zufallszahlen erzeugen? Bereits vom Pionier der
Computertechnik, John von Neumann, gab es ein erstes Verfahren zur Konstruktion
von Zufallszahlen auf einem Rechner. Aber er schreibt auch: Any one who considers
arithmetical methods of producing random digits is of course in a state of sin.
Die ersten Überlegungen sollten einer ganz einfachen Fragestellung gelten: was
ist ein Zufallsexperiment? Dies sind Experimente, die unterschiedliche Ergebnisse
haben können, deren Ausgang vor der Ausführung aber nicht vorausgesagt werden
kann. Als Beispiele für Zufallsexperimente sehr unterschiedlicher Natur können zur
Veranschaulichung etwa herangezogen: Münzwurf, Würfeln, Ziehen einer Kugel aus
einer Urne, Zeitpunkt des Zerfalls eines radioaktiven Materials, 2. Stelle nach dem
Komma der Laufzeit eines Programms auf dem Rechner. Man kann sich unschwer
vorstellen, dass jedes dieser angeführten Experimente zu einem Zufallsgenerator
umdefiniert werden kann. Einen komplizierteren Zufallsmechanismus erhält man,
wenn man ein Zufallsexperiment mehrmals unabhängig voneinander wiederholt. Nun
steht die Frage im Raum, was unabhängig“ heißen soll. Alle diese Umstände und
”
Fragen werden wir im Folgenden vertiefen.
Dies sind Aufzeichnungen zur Vorbereitung auf den Kurs J.1 der Juniorakademie
Meisenheim vom 30. Juni -16. Juli 2011. Eine Juniorakademie ist eine Fördermaßnahme auf Bundesländerebene für begabte Schülerinnen und Schüler der 8. und 9.
Klassen.
Im Kurs werden Erzeugungsmethoden für Zufallszahlen untersucht und Beispiele
für die Verwendung kennengelernt. Wir werden sehen, dass neben den zentralen Fragen viele interessante Themen berührt werden: schlechte Würfel, Benford-Zahlen,
euklidischer Algorithmus, statistische Tests. Zum Verständnis all dieser Fragen sind
∗
Prof. Dr. Baumeister, Fachbereich Informatik und Mathematik, Goethe-Universität, Robert Mayer–
Str. 6–10, 60054 Frankfurt am Main, Germany, [email protected].
†
Mathematisches Institut, Georg-August-Universität Göttingen, Bunsenstr. 3-5 37073 Göttingen
1
elementare Kenntnisse über die Behandlung des Zufalls und das modulare Rechnen
erforderlich.
Zentral für das Verständnis der Erzeugung von (Pseudo-)Zufallszahlen ist die
Arithmetik in den ganzen Zahlen. Die Tatsache, dass Division in den ganzen Zahlen
nicht uneingeschränkt möglich ist, kann erfolgreich dabei verwendet werden. Die
Hilfsmittel für die algebraischen Überlegungen, die bereitgestellt werden müssen,
sind Teilbarkeit, Division mit Rest und euklidischer Algorithmus. Als Grundlagen
für die Zufälligkeitstest benötigen wir den Wahrscheinlichkeitsbegriff für endliche
Ereignisräume und Verteilungsstests. Die Möglichkeiten der Erzeugung von Zufallszahlen berühren insbesondere das Thema Benfordzahlen“, das einige besonders
”
reizvolle Facetten bereithält.
Diese Aufzeichnungen sind im ganzen keine Vorlage für die Dokumentation,
die die Kursteilnehmer anzufertigen haben, lediglich Teile werden zur Vorbereitung zur Verfügung stehen. In den Abschnitten 6,7 werden Vorbereitungsaufgaben
formuliert und eine mögliche Liste von Vorträgen ausgearbeitet. Mit dem Literaturverzeichnis liefern wir einen ziemlich umfassenden Überblick über Monographien,
Übersichtsartikel und Originalarbeiten zur Thematik.
1
Modulare Arithmetik
Wenn CD aber AB nicht mißt
und man nimmt bei AB, CD
abwechselnd immer das kleinere
vom größeren weg, dann muss
(schließlich) eine Zahl übrig
bleiben, die die vorangehende
mißt.
Aus Euklid Die Elemente
Arithmetik ist das Teilgebiet der Mathematik, welches auch als Synonym zum Begriff
Zahlentheorie verstanden werden kann. Elementare Arithmetik bezeichnet allgemein das
Rechnen mit natürlichen Zahlen und ganzen Zahlen und die Untersuchung der Konsequenzen, die sich daraus ergeben, dass die Division in den ganzen Zahlen nur eingeschränkt
möglich ist. Das Rechnen mit ganzen Zahlen ist an vielen Stellen der Mathematik und
bei vielen Anwendungen von großer Bedeutung; siehe [2, 3, 6].
1.1
Ganze Zahlen
Hier deuten wir die Begriffe an, in denen Arithmetik betrieben wird. Die ganzen Zahlen
(Z) und natürlichen Zahlen (N bzw. N0 := N\{0}) rufen wir ins Leben“ durch
”
Es gibt Mengen N, Z , ein Element 0 ∈ Z, Abbildungen
Z × Z 3 (a, b) 7−→ a + b ∈ Z,
(Addition)
Z × Z 3 (a, b) 7−→ a · b ∈ Z,
(Multiplikation)
und eine Vergleichsoperation ≤ mit folgenden Eigenschaften:
1. (a + b) + c = a + (b + c) für alle a, b, c ∈ Z .
2. a + 0 = 0 + a für alle a ∈ Z .
3. Zu a ∈ Z gibt es genau ein (−a) ∈ Z mit
(a + (−a)) = 0 = ((−a) + a) .
4. a + b = b + a für alle a, b ∈ Z .
5. (a · b) · c = a · (b · c) für alle a, b, c ∈ Z .
6. a · b = b · a für alle a, b ∈ Z .
7. a · (b + c) = a · b + a · c für alle a, b, c ∈ Z .
8. N ⊂ Z , 1 6= 0 , Z = N ∪ {0} ∪ −N .
9. 1 · a = a , 0 · a = 0 für alle a ∈ Z .
10. a ≤ b ⇐⇒ b + (−a) ∈ N ∪ {0} .
(Assoziativgesetz)
(0 ist neutrales Element)
((−a) ist Negatives von a)
(Kommutativgesetz)
(Assoziativgesetz)
(Kommutativgesetz)
(Distributivgesetz)
(1 ist neutrales Element)
Zur Abkürzung führen wir noch die Subtraktion durch
Z × Z 3 (a, b) 7−→ a − b := a + (−b) ∈ Z
ein, schreiben meist kurz
ab für a · b
und vereinbaren die Schreibweise
a < b für a ≤ b, a 6= b .
Damit können wir nun in Z und N genauso rechnen, wie wir es gewohnt sind.
1
Wo bleibt die Division in den ganzen Zahlen? Offenbar sind ±1 die einzigen Zahlen
a in Z, für die 1/a, was wir meist als a−1 schreiben, in Z existiert. Wenn man für die
anderen Fälle nicht den Weg zu den rationalen Zahlen weitergehen will, muss man eine
Division mit Rest einführen, was eine Beschreibung der Tatsache gleichkommt, dass
die Division ganzer Zahlen nicht aufgeht“. Zunächst zur Teilbarkeit.
”
1.2
Teilbarkeit und Primzahlen
Definition 1.1 Seien a, b ∈ Z. Wir sagen, dass a die Zahl b teilt, wenn es k ∈ Z gibt
mit b = ka. Wir schreiben dafür a|b . Ist b nicht durch a teilbar, so schreiben wir a 6 | b. Srechweisen:
Für a|b: a teilt b, b ist Teiler von a, a ist durch b teilbar.
Für a 6 | b: a teilt b nicht, b ist kein Teiler von a, a ist nicht durch b teilbar.
Bei Teilbarkeitsfragen in Z können wir uns in der Regel immer auf positive Teiler, d.h.
auf Teiler in N, zurückziehen, da von den zwei Zahlen a, −a stets eine in N liegt, falls
a 6= 0 ist; der Fall a = 0 ist uninteressant, da dann auch b = 0 ist. Ohne Beweis führen
wir an:
Folgerung 1.2 Seien a, b, c, d ∈ Z. Dann gilt:
(1) a|a; a|b und b|a =⇒ a = ±b; a|b und b|c =⇒ a|c.
(2) d|a und d|b =⇒ d|(ax + by) für alle x, y ∈ Z.
(3) a|b und a|(b + c) =⇒ a|c.
Fragt man nach gemeinsamen Teilern zweier ganzer Zahlen a, b, so interessiert insbesondere der größte dieser gemeinsamen Teiler. Dabei können wir uns dann auf positive
Teiler beschränken, denn 1 ist stets ein gemeinsamer Teiler von a und b.
Definition 1.3 Seien a, b ∈ Z, die nicht beide 0 sind. Eine Zahl d ∈ N heißt größter
gemeinsamer Teiler von a, b genau dann, wenn
(1) d|a , d|b
(2) Ist d0 ∈ N ein Teiler von a und b, so teilt d0 auch d
gilt. Wir schreiben d = ggT(a, b) .
Der größte gemeinsame Teiler d gemäß Definition 1.3 ist eindeutig bestimmt dank der
Tatsache, dass wir d ∈ N gefordert haben.
Es sollte klar sein, wie nun der größte gemeinsame Teiler von endlich vielen ganzen
Zahlen erklärt ist. Beispiel:
ggT(6, 10) = 2, ggT(ggT(6, 10), 30) = 2, ggT(6, 10, 15) = 1 .
Definition 1.4 Eine Zahl p ∈ N, p 6= 1, heißt Primzahl, wenn 1 und p die einzigen
Teiler von p sind.
Seit Euklid kennen wir die Primzahlen, die Tatsache, dass es unendlich viele Primzahlen
gibt und auch die Aussage, dass eine natürliche Zahl, bis auf die Reihenfolge, eindeutig
in ein Produkt von Primzahlen zerlegt werden kann. Diese Zerlegung nennt man Primfaktorzerlegung und das Aufsuchen dieser Zerlegung eine Faktorisierung. Die obige
Definition des größten gemeinsamen Teilers hätten wir – wie dies in der Schule meist
geschieht – auch auf die Primfaktorzerlegung stützen können.
2
Satz 1.5 (Primfaktorzerlegung) Jede natürliche Zahl n ≥ 2 lässt sich bis auf die
Reihenfolge der Faktoren eindeutig als Produkt von Primzahlen darstellen.
Den Beweis lassen wir weg, die Vorbereitungen dafür, insbesondere für den Nachweis der
Eindeutigkeit, liegen hier nicht vor.
Bemerkung 1.6 Die Existenz der Primfaktorzerlegung konnte von Euklid noch nicht
bewiesen werden. Erst C.F. Gauss publizierte dieses Ergebnis, das allerdings lange vorher
schon zum Allgemeinwissen der Mathematik gehörte.
Die Eindeutigkeit der Primfaktorzerlegung ist ein Resultat, das wesentlich auf einer
Kürzungsregel“ basiert. Man sollte sich hüten, die Eindeutigkeit der Primfaktorzerlegung
”
als Selbstverständlichkeit hinzunehmen, die keines Beweises bedarf.
Mitunter ist nun eine kanonische Produktschreibweise für die Primfaktorzerlegung
nützlich. Wir denken uns die Primzahlen durchnumeriert, also p1 = 1, p2 = 3, p3 = 5, . . .
und schreiben jede Zahl n ∈ N so hin:
Y
n=
pαi i ;
i∈N
dabei ist αi die Vielfachheit, mit der der Primfaktor pi in der Primfaktorzerlegung vorkommt,
also αi = 0, falls die Primzahl pi kein Primfaktor von n ist.
Die Herstellung der Primfaktorzerlegung einer (großen) Zahl ist kein leichtes Unterfangen. Die Schwierigkeit wird u.a. dadurch beleuchtet, dass nahezu gleiche Zahlen eine
sehr verschiedene Primfaktorzerlegung besitzen können:
370273 = 43 · 79 · 109 , 370277 = 17 · 23 · 947 , 370279 = 7 · 13 · 13 · 313 .
Die Aufzählung p1 , p2 , . . . suggeriert, dass es unendlich viele Primzahlen gibt. Hier ist
der Beweis für die Tatsache, dass es unendlich viele Primzahlen gibt.1
Satz 1.7 (Unendlichkeit der Primzahlen/Euklid) Es gibt unendlich viele Primzahlen.
Beweis:
Annahme: Es gibt nur endlich viele Primzahlen.
Seien p1 , . . . , pr diese Primzahlen. Setze N := p1 · · · pr + 1. Dann ist N ∈ N und N ≥ 2.
Da N > pi für jedes i = 1, . . . , r ist, ist N keine Primzahl. Also ist N zerlegbar: N =
kp, p, k ∈ N mit 1 < p < N . O.E. kann man nun annehmen, dass eine der Zahlen k, p
eine Primzahl ist; sonst zerlege erneut. Sei also etwa p die Primzahl. Also kommt p unter
p1 , . . . , pr vor; o.E. p = p1 . Dann folgt:
1 + p1 p2 . . . p r = p 1 k .
Daraus liest man nun p = p1 = 1 ab, was ein Widerspruch ist.
Das kleinste gemeinsame Vielfache von Zahlen a, b ∈ N ist die kleinste Zahl m ∈ N,
für die a|m , b|m gilt. Kennt man die Primfaktorzerlegung von a und b, so kann man es
sehr einfach ablesen.
1
In [1] – ein Buch, dass in jedem Falle zur Lektüre eines Mathematikers gehören sollte – werden 6
Beweise für die Unendlichkeit der Primzahlen gegeben.
3
1.3
Division mit Rest
Der Division mit Rest, die wir nun vorstellen wollen, tritt uns im Alltag entgegen bei der
Umrechnung von Tageszeiten in unterschiedliche Zeitskalen (Minuten, Sekunden,. . . ), bei
der Berechnung von Wochentagen im Kalender, . . . .
Satz 1.8 (Division mit Rest) Für alle a ∈ Z, b ∈ N gibt es eindeutig bestimmte Zahlen
q, r ∈ Z mit
a = bq + r und 0 ≤ r < b.
Beweis:
Wir beweisen zunächst die Existenz von q, r für a ≥ 0 durch vollständige Induktion:
a = 0 : Setze q := r := 0 .
a + 1 : Ist a + 1 < b, so gilt a + 1 = 0 · b + (a + 1) und wir sind fertig. Ist a + 1 ≥ b,
so folgt aus der Induktionsvoraussetzung a + 1 − b = qb + r mit q ∈ Z, 0 ≤ r < b. Also
a + 1 = (q + 1)b + r.
Die Existenz folgt für a < 0 aus der Anwendung der eben bewiesenen Aussage auf −a
gemäß
−a = q 0 b + r0 , 0 ≤ r0 < b
durch
a=
(−q 0 − 1)b + (b − r0 ) , falls r0 6= 0
(−q 0 )b
, falls r0 = 0
Um die Eindeutigkeit zu beweisen, nehmen wir ein zweites Zahlenpaar q 0 , r0 mit
a = q 0 b + r0 , 0 ≤ r0 < b ,
wobei o. E. r ≥ r0 sei. Dann ist offenbar 0 ≤ r − r0 < b und r − r0 = −(q − q 0 )b . Aus
r − r0 < b folgt −(q − q 0 ) ≤ 0, aus r − r0 ≥ 0, folgt −(q − q 0 ) ≥ 0 . Zusammengefasst: q = q 0
und daher auch r = r0 .
Zahlen, die als Ersatz für Zufallszahlen dienen können, lassen sich mit der Dualdarstellung von natürlichen Zahlen erzeugen. Sie werden eingeordnet unter Quasizufallszahlen.
Van-der-Corput Folgen, werden mit der Dualentwicklung natürlicher Zahlen erzeugt,
und zwar durch Bit-Umkehr. Sei also
i = (dj . . . d0 )2 =
j
X
dk 2k
k=0
die Dualdarstellung von i ∈ N . Dann heißt
Φ2 (i) := xi := (.d0 . . . dj )2 =
j
X
dk 2−k−1
k=0
die i-te van der Corput-Zahl. Beispielsweise sind
1 1 3 1 5 3
, , , , ,
2 4 4 8 8 8
die ersten 6 van der Corput-Zahlen. Der Vorteil gegenüber den Zahlen, die wir später
als Pseudo-Zufallszahlen kennenlernen werden, ist, dass bereits berechnete Zahlen immer mitverwendet werden können. Klar, die Basis b = 2 lässt sich gegen jede beliebige
4
Basiszahl b ∈ N, b ≥ 2, austauschen.2 Alle diese van der Corput-Zahlen lassen sich algorithmisch einfach durch Division mit Rest bestimmen. Sie entsprechen also einer Liste von
Zahlen, die total den Anspruch der Zufälligkeit verloren haben. Was sie aber auszeichnet,
ist die Tatsache, dass sie gute Verteilungseigenschaften haben; siehe [4].
Die Konstruktion der van der Corput-Zahlen kann man nun nutzen, um Folgen in
[0, 1]d zu erzeugen. Dazu wähle man für jede Dimension j eine Basis bj , erzeuge damit die
van der Corput-Folge (xi,j )i∈N . Damit bilde man dann die Vektoren
xi := (xi,1 , . . . , xi,d ) ∈ [0, 1]d .
Im Allgemeinen nimmt man als Basen die ersten d Primzahlen. Diese so konstruierte Folge
von Punkten nennt man eine Folge von Halton-Punkten. Die guten Verteilungseigenschaften der van der Corput-Zahlen überträgen sich auf die Halton-Punkte.
1.4
Modulares Rechnen
Die modulare Arithmetik geht auf Gauß zurück. Sie beschreibt das Rechnen mit Resten:
man gibt sich eine natürliche Zahl m vor – diese Zahl nennen wir Modul – und ersetzt“
”
jede ganze Zahl a durch ihren Rest r, der bei Division von a durch m entsteht; siehe Satz
1.8. Die Zahlen a, die bei Division mit Rest den gleichen Rest ergeben, fasst man zu einer
Klasse, den Restklassen zusammen.
Die Restklassen sind nun so definiert:
Zm := {[0], [1], . . . , [m − 1]} wobei [i] := {z ∈ Z|z = qm + i für ein q ∈ Z} ,
Dass die Menge Zm m Elemente hat, ergibt sich aus der Tatsache, dass m Reste gemäß
Satz 1.8 auftreten können. Beachte, dass etwa die Restklasse [1] auch als die Restklasse
[m + 1] beschrieben werden kann: wir haben in der Definition von Zm ein naheliegendes
Representantensystem“ gewählt. Für m = 11 haben w ir etwa
”
[3] = [25] = [−8] = [91] .
Beispiel 1.9 Für m = 2 erhalten wir gerade die Einteilung der natürlichen Zahlen in
die Klassen gerade Zahlen ([0]) und ungerade Zahlen ([1]). Für diese Klassen hat man in
natürlicher Weise eine Addition und eine Multiplikation:
gerade + gerade = gerade , ungerade + gerade = ungerade
gerade · gerade = gerade , ungerade · gerade = gerade
Die Beobachtung aus Beispiel 1.9 bezüglich Addition, Multiplikation schreiben wir nun
fort auf Zm :
Addition: [i] + [j] := [i + j] , i, j ∈ {0, 1, . . . , m − 1} ;
Multiplikation: [i] · [j] := [i · j] , i, j ∈ {0, 1, . . . , m − 1} .
Beachte, dass die Verknüpfungssymbole +, · in zweifacher Bedeutung auftreten: Als Addition, Multiplikation in Zm und in Z .
Damit dies wohldefiniert ist, muss noch gezeigt werden: aus [i] = [i0 ], [j] = [j 0 ] folgt
[i + j] = [i0 + j 0 ] und [ij] = [i0 j 0 ] . Wir beweisen dies am Beispiel der Multiplikation.
[i] = [i0 ], [j] = [j 0 ] bedeutet i0 = pm + i, j 0 = qm + j für p, q ∈ Z . Daraus folgt
i0 j 0 = (pm + i)(qm + j) = (iqm + jpm + pqm)m + ij also [ij] = [i0 j 0 ] .
2
Van der Corput (1935) hat sie für die Basis 2 als erster betrachtet.
5
Assoziativgesetz Klammern fürfen bei der Addition beliebig gesetzt werden:
([i] + [j]) + [k] = [i] + ([j] + [k]) , i, j, k ∈ {0, 1, . . . , m − 1} .
Neutrales Element [0] ist das neutrale Element für die Addition:
[i] + [0] := [i] , i, j ∈ {0, 1, . . . , m − 1} .
Inverses [m − i] ist das Inverse von [i] bezüglich der Addition:
[m − i] + [i] = [m − i + i] = [0] = [m] .
Kommutativgesetz Die Summanden dürfen bei der Addition vertauscht werden:
[i] + [j] = [j] + [i] , i, j ∈ {0, 1, . . . , m − 1} .
Die angeführten Eigenschaft fasst man zusammmen in der Aussage: (Zm , +) ist eine kommutative Gruppe. Beachte, dass diese Eigenschaften auch für die ganzen Zahlen gelten,
also dass auch (Z, +) eine kommutative Gruppe ist.
Für die Multiplikation ist die Situation nicht ganz so komfortabel. Zwar gelten die
Aussagen
Assoziativgesetz Klammern fürfen bei der Multiplikation beliebig gesetzt werden:
([i] · [j]) · [k] = [i] · ([j] · [k]) , i, j, k ∈ {0, 1, . . . , m − 1}
Neutrales Element [1] ist das neutrale Element für die Multiplikation:
[i] · [1] := [i] , i, j ∈ {0, 1, . . . , m − 1}
Kommutativgesetz Die Faktoren dürfen bei der Multiplikation vertauscht werden:
[i] · [j] = [j] · [i] , i, j ∈ {0, 1, . . . , m − 1}
aber die Eigenschaft über das Inverse gilt nicht allgemein. Ein Gegenbeispiel folgt aus
[2] · [2] = [2 · 2] = [0] in Zm für m = 4 ,
denn hier kann [2] kein Inverses bezüglich der Multiplikation haben, da stets [i] · [0] =
[i · 0] = [0] ist. Aber man kann die Vermutung haben, dass diese Schwierigkeit im Fall,
dass m eine Primzahl ist, nicht auftritt. Dies trifft zu und wir halten fest: (Zm , ·) ist eine
kommutative Gruppe bezüglich der Multiplikation, falls m eine Primzahl ist (wobei wir
den Beweis noch nicht eigentlich erbracht haben).
Hier sind die Gruppentafeln – so nennt man die vollständige Auflistung der Verknüpfungen der Gruppenelemente innerhalb einer Gruppe – für m = 5 . Man beachte, dass sowohl
in der Gruppentafel zur Addition als auch in der Gruppentafel zur Multiplikation in jeder
Zeile und Spalte jede Klasse genau einmal vertreten ist. Beachte ferner, dass die Potenzen
des Elements [2] alle Elemente von Z∗5 := Z5 \{[0]} durchlaufen:
[2]0 = [1] , [2]1 = [2] , [2]2 = [4] , [2]3 = [3] , [2]4 = [1] .
Man nennt eine Gruppe, die ein solches zyklisches Element besitzt, eine zyklische
Gruppe.
Wir führen noch eine andere Schreibweise ein. Mit u, v ∈ Z schreiben wir:
u≡v
mod m : ⇐⇒ [u] = [v] ⇐⇒ m|(u − v) .
6
+
[0] [1] [2] [3] [4]
[0]
[0] [1] [2] [3] [4]
·
[1] [2] [3] [4]
[1]
[1] [2] [3] [4] [0]
[1]
[1] [2] [3] [4]
[2]
[2] [3] [4] [0] [1]
[2]
[2] [4] [1] [3]
[3]
[3] [4] [0] [1] [2]
[3]
[3] [1] [4] [2]
[4]
[4] [0] [1] [2] [3]
[4]
[4] [3] [2] [1]
(b)
(a)
Abbildung 1: Gruppentafeln zu Z5
Beispiel 1.10 Wie sehen die beiden letzten Dezimalstellen von 242008 aus? Dies ist die
Frage nach dem Rest von 242008 modulo 100 . Wir rechnen induktiv nach:
24k ≡ (−1)k+1 · 24
mod 100 , k = 1, 2, . . . .
Induktionsbegin k = 1: Klar
Induktionsschluss k → k + 1:
24k+1 ≡ (24k · 24) ≡ (−1)k+1 · 24 · 24 ≡ (−1)k+2 · 24
mod 100
Daraus folgt also
242008 ≡ −24 mod 100 ≡ 76 mod 100 ,
was bedeutet, dass die Zahl 22008 mit 76 endet.
Beispiel 1.11 Jede Zahl 10k hat wegen
10k − 1
10 = 9 ·
+ 1 = 9 · (10k−1 + · · · + 100 ) + 1
10 − 1
k
den Rest 1 modulo 9. Dies hat die Konsequenz, dass jede Dezimalzahl
z = an an−1 · · · a0 = an 10n + an−1 10n−1 + · · · + a0 100
modulo 9 den Rest an + · · · + a0 hat. Dies ist die so genannte Quersummenprobe auf
Teilbarkeit durch Neun: eine Zahl z hat bei Teilung durch Neun genau dann den Rest
r, wenn ihre Quersumme bei Teilung durch Neun den Rest r hat.
Daraus resultiert die Neunerprobe, eine Methode, die es gestattet, den Nachweis
einer fehlerhaften Addition, Subtraktion oder Multiplikation ohne lange Rechenoperationen
zu erbringen: man berechnet die Neunerreste der beiden Operanden und des Ergebnisses,
was man durch sukzessives Bilden von Quersummen tun kann. Hier ist ein Beispiel für
die Anwendung. Ist die Behauptung
40752 · 32111 = 1308587572
richtig? Nein, denn die Neunerreste erfüllen die Gleichung nicht:
Neunerrest von 40752 ist 0, denn: 4 + 0 + 7 + 5 + 2 = 18, 1 + 8 = 9
Neunerrest von 32111 ist 8, denn: 3 + 2 + 1 + 1 + 1 = 8
Neunerrest von 1308587572 ist 1, denn: 1 + 3 + 0 + 8 + 5 + 8 + 7 + 5 + 7 + 2 = 46, 4 + 6 =
10, 1+0 = 1 Beachte, eine umgekehrte Anwendung ist nicht erlaubt: wenn die Neunerprobe
keinen Widerspruch aufweist, muss das Ergebnis nicht korrekt sein.
Kombiniert man die Neunerprobe etwa mit der Elferprobe – wir gehen hier nicht darauf
ein – dann erhält man aus der Korrektheit der Proben schon eine ziemliche Sicherheit für
die Korrektheit der Rechnung.
7
Modulares Rechnen wird für Berechnungen mit dem Computer wichtig, wenn mit sehr
großen ganzen Zahlen exakt gerechnet werden soll.
Sei a ∈ N . Man wählt verschiedene Moduln m1 , . . . , ml und berechnet die Reste
r1 , . . . , rl von a bezüglich dieser Moduln. Der Rest r von a bezüglich des Moduls m :=
m1 · · · ml ist dann gleich r1 · · · rl und er legt a eindeutig fest, wenn a zwischen 0 und m − 1
liegt. Ist a ≥ m, dann liegt a immerhin noch in der Restklasse [r] bezüglich des Moduls
m.
Beispiel 1.12 Betrachte die Multiplikation der Zahlen 102, 99: 102 · 99 =????? .
Wir wählen (geschickt) die Moduln m1 = 9, m2 = 10, m3 = 11 und erhalten folgende Reste
für das Produkt:
102 · 99 ≡ (99 + 3) · (99 + 0) ≡ 3 · 0 ≡ 0 mod 9 ;
102 · 99 ≡ (100 + 2) · (100 − 1) ≡ 2 · (−1) ≡ −2 mod 10 ;
102 · 99 ≡ (99 + 3) · (99 + 0) ≡ 3 · 0 ≡ 0 mod 11 .
Eine Lösung der Gleichungen ist x = 198 . Alle weiteren Lösungen sind x = 198 +
km1 m2 m3 , k ∈ Z . Aus einer Größenordnungsbetrachtung folgt: 102 · 99 = 198 + 10 · 990
ist die Lösung der Multiplikation.
Der Chinesische Restesatz ist hilfreich
beim Versuch, Rechnungen wie in Beispiel
1.12 rigoros zu machen; siehe Abbildung
2 für eine historische Darstellung. Die
Schwierigkeiten kann man sehen an folgendem Zahlenbeispiel:
Gesucht ist eine zahl x ∈ Z mit x ≡ 1
mod 15, x ≡ 2 mod 21 . Da 3 ein Teiler von 15 und 21 ist, gilt auch x ≡ 1
mod 3, x ≡ 2 mod 3 . Dies ist aber ein
Widerspruch, da kein x modulo 3 den Rest
1 und den Rest 2 haben kann.
1.5
There are certain things whose number is unknown.
Repeatedly divided by 3, the remainder is 2;
by 5 the remainder is 3;
and by 7 the remainder is 2.
What will be the number?
The answer is hidden in the following song:
Euklidischer Algorithmus
Der nun zu besprechende euklidische Al”
gorithmus“ hat seine historische Wurzel
in dem Bestreben in der Antike, die
Verhältnisrechnung mit geometrischen GröAbbildung 2: Chinesischer Restesatz
ßen zu begründen (Kommensurabilitätsbetrachtungen; siehe [5], S. 41-44). Bei Euklid sollen zwei Strecken mit einem Maßstab ausgemessen werden; dies gelingt gerade mit
einem Maßstab, der die Länge des größten gemeinsamen Teilers besitzt; siehe Abbildung
3.
Der euklidische Algorithmus gestattet es, den größten gemeinsamen Teiler zweier Zahlen
(siehe unten) effizient zu berechnen. Er basiert auf folgender Beobachtung:
Lemma 1.13 Sei a ∈ Z und b ∈ N. Dann folgt aus der Darstellung a = qb + r , q, r ∈ Z,
die Aussage ggT(a, b) = ggT(b, r) .
8
Beweis:
Ist d ein Teiler von a, b, dann ist d ein Teiler von b und r und umgekehrt (siehe Folgerung
1.2).
Die Interpretation von Lemma 1.13 ist, dass durch fortschreitende Division mit Rest
aus dem Ausgangspaar (a, b) Paare (a0 , b0 ) gebildet werden können, die denselben größten
gemeinsamen Teiler besitzen. Der euklidische Algorithmus realisiert dies:
Algorithm 1 Der euklidische Algorithmus
EIN a, b ∈ Z ; o.E. a ≥ b > 0 .
Schritt 0 a0 := a, b0 := b .
Schritt 1 (a0 , b0 ) := (b0 , r), wobei a0 = qb0 + r mit 0 ≤ r < b0 ist.
Schritt 2 Ist r = 0, gehe zu AUS. Ist r 6= 0, setze a0 := b0 , b0 := r, gehe zu Schritt 1.
AUS d := b0 = ggT(a, b) .
Die Aussage, dass d der größte gemeinsame Teiler von a, b ist, falls die Situation r = 0
erreicht wird, folgt aus dem Lemma 1.13 unter der Beobachtung, dass ggT(b0 , 0) = b0 ist.
Bleibt noch zu klären, dass die Situation r = 0 in endlich vielen Schritten wirklich erreicht
wird. Dies folgt aber aus der Tatsache, dass für zwei aufeinanderfolgende Durchläufe von
Schritt 1 mit (a0 , b0 ) , (a00 , b00 ) sicherlich 0 ≤ b00 < b0 , b0 , b00 ∈ N0 gilt. Also muss schließlich
das Verfahren bei r = 0 abbrechen.
Wir geben dem euklidischen Algorithmus, wohlwissend, dass der Schritt 1 nur endlich
oft durchlaufen wird, eine explizite Fassung:
Euklidischer Algorithmus
Kettenbruchentwicklung
a = r0
r1
b
r0 = q + r2
1
r1
r1
r1 = q + r3
2
r2
r2
..
..
.
.
r0 := a , r1 := b,
r0
= q1 r1 + r2 , 0 < r2 < r1 ,
r1
= q2 r2 + r3 , 0 < r3 < r2 ,
..
.
rk−1
rk
..
.
rk−2
rk
rk−1 = qk + rk−1
rk
rk+1 = qk+1
= qk rk + rk+1 , 0 < rk+1 < rk ,
= qk+1 rk+1 ,
In dieser Darstellung ist rk+1 = ggT(rk−1 , rk ) = · · · = ggT(r0 , r1 ) = ggT(a, b) , nach
Lemma 1.13.
Beispiel 1.14 Sei a = 48 , b = 18 . Wir erhalten
48 = 2 · 18 + 12
18 = 1 · 12 + 6
12 = 2 · 6
9
Also gilt: ggT(48, 18) = 6 . Die geometrische Interpretation als wechselseitige Weg”
nahme“, wie sie schon bei Euklid bei Kommensurabilitätsbetrachtungen zu finden ist, findet
sich in Abbildung 3: kleinere Strecken werden mehrfach auf einer größeren Strecke abgetragen. Da das Vorgehen im obigen Beispiel abbricht, sagt man, dass a = 48 und b = 18
ein gemeinsames Maß haben, nämlich 6. (Bricht ein solches Verfahren nicht ab, dann
heißen a, b inkommensurabel,
wie dies etwa bei der Diagonalen im Einheitsquadrat der
√
Fall ist, da ja 2 irrational ist.)
Aus der obigen Darstellung des euklidischen Algorithmus lesen wir ab:
a
r2
1
r0
1
1
= q1 +
= q1 + r1 = q1 +
=
= q1 +
= ...
r
3
1
b
r1
r1
q2 + r2
q2 +
r2
r4
q3 +
r3
r
Wir wissen dabei, dass stets 0 < k+1
rk <
1 gilt und dass das Schema nach k Schritten abbricht, denn in formaler Interpretation
haben wir rk+2 = 0 . Die berechneten Größen
q1 , . . . , qk+1 schreiben wir als
[q1 , . . . , qk+1 ] oder
(1)
48
18
18
12
a
= [q1 , . . . , qk+1 ]
b
auf und bezeichnen dies als Kettenbruch.
Der Kettenbruch kann mitunter auch sehr
”
lang“ sein. In vielen Fällen ist man schon mit
einer Näherung [q1 , . . . , ql ] , 1 ≤ l < k + 1 ,
zufrieden, d.h. mit der Näherung, die entsteht, wenn man
rl
=0
rl+1
setzt.
12
6
6
6
6
Abbildung 3: Wechselwegnahme
Bemerkung 1.15 C. Huygens (1629–1695) entwickelte Kettenbruchentwicklungen, als
er ein Zahnradmodell (siehe die illustrierende Abbildung 4) des Sonnensystems bauen
wollte. Gesucht wurden möglichst “einfache Brüche“ für die gelten sollte:
Zahnzahl von Zahnrad 1
Umlaufzeit von Planet 1
=
.
Zahnzahl von Zahnrad 2
Umlaufzeit von Planet 2
Werden die Umlaufzeiten der Planeten sehr genau gemessen, dann kann rechts ein Bruch
mit sehr großem Zähler und Nenner entstehen. Die Beispiele 1.19, 1.21 illustrieren dies.
Beispiel 1.16 Die Zahlen
a = 77708431
b = 2640858
beschreiben das Verhältnis der Umlaufzeiten des Saturn in Bezug auf die Erde. Huygens
wählte dafür den Näherungsbruch 206
. Er ergibt sich, wenn man den Kettenbruch geeignet
7
abbricht. Der exakte Kettenbruch ist
a
= [29; 2, 2, 1, 5, 1, 4, 1, 1, 2, 1, 6, 1, 10, 2, 2, 3]
b
10
und wir erhalten
a
∼ 29 +
b
1
= 29 +
1
2+
2+
1
1
1
7
3
=
206
.
7
Beispiel 1.17 Die Zahlen
a = 71755875
b = 61735500
kommen in Berechnungen des Astronomen Aristarchus von Samos vor. Für a verwendet
b
er die Näherung 43
.
Sie
ergibt
sich,
wenn
man
den
Kettenbruch
geeignet
abbricht:
37
a
1
∼1+
.
b
6 + 16
Beispiel 1.18 Die Umlaufzeit der Erde um die Sonne beträgt ziemlich genau
365 +
104629
Tage .
432000
Aus der Kettenbruchentwicklung
104629
= [0; 4, 7, 1, 3, 6, 2, 1, 170]
432000
ergeben sich Ansätze für Kalender:
[0; ] = 0
[0; 4] =
Keine Schaltjahre
(Anpassung von Zeit zur Zeit durch Hinzufügen eines Tages)
1
4
[0; 4, 7, 3, 6] =
Alle vier Jahre ein Schalttag
194
801
In 800 Jahren lässt man sechs Schaltjahre ausfallen
(und zwar in den Jahren, deren Jahreszahlen durch 400 teilbar ist.)
Beispiel 1.19 Kettenbrüche kann man auch für irrationale Zahlen konstruieren;
sie sind
√
dann natürlich unendliche Kettenbrüche. Wir zeigen dies am Beispiel x = 2 durch einen
Trick“ (es ließe sich auch anders vorgehen): wir haben die Identitäten
”
√
1
1
, x−1=
.
x = 2 , x2 = 2 , x = 1 +
1+x
2 + (x − 1)
Aus der letzteren lesen wir den Kettenbruch für x−1 ab und durch Addition mit 1 erhalten
wir
√
2 = [1; 2, 2, 2, . . . ] .
Eine wichtige Konsequenz aus dem euklidischen Algorithmus ist
Satz 1.20 (Lemma von Bachet/Lemma von Bezout) Seien a, b ∈ Z . Dann gibt es
Zahlen s, t ∈ Z mit ggT(a, b) = sa + tb .
11
Beweis:
O.E. a ≥ b > 0 .
Die Aussage folgt dadurch, dass wir den euklidischen Algorithmus in der expliziten Fassung rückwärts lesen. Wir strukturieren dies, indem wir nachrechnen, dass für 0 ≤ i ≤ k+1
gilt
ri = si a + ti b , mit si , ti ∈ Z.
(2)
Dies ergibt sich so: Für i = 0 setze s0 := 1, t0 := 0 und für i = 1 setzte s1 := 0, t1 := 1 .
Nun setzen wir
si+1 := si−1 − qi si , ti+1 := ti−1 − qi ti , 1 ≤ i ≤ k.
(3)
Dann gilt offenbar die obige Aussage.
Beispiel 1.21 Wir betrachten wieder Beispiel 1.14. Für das Tupel (ri , qi , si , ti ) haben
wir dann nach (2) und (3) die folgende Sequenz (× bedeutet uninteressant oder nicht
definiert):
(36667, ×, 1, 0), (12247, 2, 0, 1), (12173, 1, 1, −2), (74, 164, −1, 3), (37, ×, 165, −494).
Also haben wir
37 = ggT(36667, 12247) = 165 · 36667 − 494 · 12247
Folgerung 1.22 Seien a, m ∈ Z, die nicht beide Null sind, mit ggT(a, m) = 1 . Dann
gibt es b ∈ Z mit m|(ab − 1) .
Beweis:
Wir wissen aus dem Lemma von Bezout 1 = ax + my mit x, y ∈ Z . Setze b := x . Dann
ist ab − 1 = −my = m(−y) .
Die obige Folgerung können wir so lesen, dass
bei Teilerfremdheit von a und m zu a eine Zahl
b existiert, die die Gleichung
a·b≡1
mod m
löst, d.h. die Restklasse [a] hat modulo m das Inverse [b] ; siehe die multiplikative Gruppeneigenschaft von Zm , wenn m eine Primzahl ist.
Der euklidische Algorithmus gilt als Muster”
beispiel“ eines effizienten Algorithmus mit
Abbildung 4: Zahnräder
vielfältigen Anwendungen. Eigentlich müssten
wir nun eine Analyse der Komplexität des euklidischen Algorithmus durchführen, wenn wir die
Behauptung, dass dieser Algorithmus sehr effizient ist, belegen wollten. Wir verzichten darauf, ohne zu vergessen, auf ein Beispiel hinzuweisen, das den worst case des Algorithmus
beschreibt: die Berechnung des größten gemeinsamen Teiler zweier aufeinanderfolgender
Fibbonacci-Zahlen, die wir nun einführen wollen.
12
1.6
Fibbonacci-Zahlen
Im Buch liber abacci“ von Leonardo von Pisa (genannt Fibonacci)3 wird die Vermehrung
”
eines Kaninchenpaares in folgender Weise in Abhängigkeit von der Zeit beschrieben:
Ein zur Zeit t = 0 geborenes Kaninchenpaar wirft vom 2. Monat an in jedem Monat ein
weiteres Paar. Die Nachkommen folgen dem Vorbild der Eltern. Alle Kaninchen überleben.
Damit ergibt sich rekursiv folgende Vorschrift
f0 := f1 := 1 , fn+1 := fn + fn−1 , n ∈ N .
Die Zahlen fn , n ∈ N, nennt man Fibonacci–Zahlen. Sie haben viele schöne, interessante
Eigenschaften. Wir führen einige an.
Regel 1.23
n
X
fi = fn+2 − 1 ,
i=1
n
X
fi2 = fn · fn+1 für alle n ∈ N ;
(4)
i=1
2
fn · fn+2 − fn+1
= (−1)n+1 für alle n ∈ N ;
2
2
− fn2 = f2n+2 für alle n ∈ N ;
fn2 + fn+1
= f2n+1 , fn+2
n X
n−i
für alle n ∈ N ;
fn =
i
i=0
fm+n = fm−1 · fn + fm · fn+1 für alle n, m ∈ N, m > 1 ;
fm·n ist durch fm teilbar für alle n, m ∈ N ;
ggT(m, n) = d =⇒ ggT(fm , fn ) = fd für alle n, m ∈ N ;
ggT(fn+1 , fn ) = 1 für alle n ∈ N0 .
(5)
(6)
(7)
(8)
(9)
(10)
(11)
Wir beweisen hier nur die Aussage aus (11), da sie im Zusammenhang mit dem euklidischen Algorithmus von Interesse ist. Wir tun dies induktiv.
Für n = 1 ist die Aussage klar. Ist die Aussage richtig für die Zahl n, dann ist sie auch
richtig für n + 1, denn wir haben
ggT(fn+2 , fn+1 ) = ggT(fn+1 + fn , fn+1 ) = ggT(fn+1 , fn ) = 1 .
Hier sind sie von Interesse bei der Untersuchung der Schnelligkeit des euklidischen
Algorithmus. Im euklidischen Algorithmus werden die Reste rk+1 umso schneller klein, je
größer die Quotienten qk sind. Betrachten wir den euklidischen Algorithmus für das Paar
zweier aufeinanderfolgenden Fibonacci–Zahlen, also a = fn+1 , b = fn für ein n ∈ N . Aus
der Rekursionsgleichung der Fibonacci–Zahlen folgt unmittelbar
fn+1 = 1 · fn + fn−1
fn = 1 · fn−1 + fn−2
..
.
f3 = 1 · f2 + f1
f2 = 1 · f1
Da f1 = 1 gilt, folgt: je zwei aufeinanderfolgende Fibonacci-Zahlen sind teilerfremd und
jeder Quotient qk ist gleich 1. Dies ist der ungünstigste Fall, was die Anzahl der Schritte in
Abhängigkeit von der Größe der Ausgangszahlen betrifft. Beim euklidischen Algorithmus
3
Fibonacci, Leonardo, 1180? – 1250?
13
für fn+1 , fn sind, wie gesehen, n Schritte nötig. Da fn in Abhängigkeit von n exponentiell
wächst (siehe folgendes Beispiel 1.24), folgt, dass die Anzahl der Schritte beim euklidischen Algorithmus zur Berechnung eines größten gemeinsamen Teilers ggT(a, b) höchstens
logarithmisch in der Stellenanzahl der Eingabedaten a, b, d.h. linear mit der Stellenzahl
von a, b wächst: der Aufwand ist also vergleichbar mit dem Aufwand, der bei der Multiplikation von a und b anfällt. Der euklidische Algorithmus ist damit eine sehr effiziente
Methode zur Berechnung des größten gemeinsamen Teilers großer Zahlen. Er benötigt
nicht die Primfaktorzerlegung der Zahlen a, b .
Beispiel 1.24 Sieht man ein Stück der Fibonacci-Folge an, so stellt man fest, dass sie
schnell wächst: 1,1,2,3,5,8,13,21,34,. . . . Es ist offensichtlich, dass die Folge monoton
wachsend ist, und man überzeugt sich leicht, dass sie exponentiell wächst, denn durch
die Monotonie ergibt sich:
fn = fn−1 + fn−2 ≤ 2fn−1 und folglich fn ≤ 2n .
√
fn = fn−1 + fn−2 ≥ 2fn−2 und folglich f2n ≥ 2n−1 , fn ≥ ( 2)n−1 .
√
Also liegt das Wachstum zwischen 2 und 2 . Man kann dies noch viel genauer analysieren,
für den Zweck der Analyse des euklidischen Algorithmus reicht dies aus.
Die Fibonacci-Zahlen sind eng mit dem goldenen Schnitt verknüpft. Aus der Darstellung
fn+1
fn + fn−1
fn−1
1
=
=1+
=1+
f
fn
fn
fn
n
fn−1
folgt, die Existenz von Φ := limn
fn+1
vorausgesetzt, die Identität
fn
Φ=1+
1
.
Φ
Daraus lesen wir den unendlichen Kettenbruch für die goldene Schnittzahl Φ ab:
Φ = [1; 1, 1, 1, 1, . . . ] .
Betrachtet man davon nur endliche Abschnitte als Näherung für Φ, dann erhält man
schlechte“ Approximationen von Φ ; man nennt Φ deshalb die irrationalste Zahl“ 4 . Der
”
”
Grund dafür ist, dass jeder Eintrag im Kettenbruch die kleinste Einheit ist, die gerade ein
Abbrechen noch verhindert, nämlich 1. Es deckt sich mit der Tatsache, dass der euklidische Algorithmus für die Brüche der Fibonacci-Zahlen besonders langsam ist. Dies steht
im Gegensatz zu einer anderen irrationalen Zahl, der Kreiszahl π . Ihre Kettenbruchentwicklung ist
π = [3; 7, 15, 1, . . . ] .
ist eine sehr gute Approximation von π . Der
Schon der endliche Kettenbruch [3; 7] = 22
7
Grund ist, dass der nächste Eintrag im Kettenbruch von π die Zahl 15 ist.
4
Diese Tatsache spielt sogar eine Rolle in der so genannten Chaostheorie.
14
Literatur
[1] M. Aigner and G.M. Ziegler. Proofs from THE BOOK. Springer, 1998.
[2] O. Forster. Algorithmische Zahlentheorie. Vieweg, 1996.
[3] G. Kropp. Geschichte der Mathematik. Sammlung Aula, Wiesbaden, 1994.
[4] H. Niederreiter. Random Number Generation and Quasi-Monte-Carlo-Methods. SIAM,
Philadelphia, 1992.
[5] L. Russio. Die vergessene Revolution. Springer, New York, 2003.
[6] W.M.
Seiler.
Modulares Rechnen.
Universität
Kassel,
2007.
http://www.mathematik.uni-kassel.de/∼seiler/Courses/AGCA-0708/ModRechnen.pdf.
15
Herunterladen