Algorithmische Zahlentheorie

Werbung
Otto Forster
Algorithmische Zahlentheorie
Ans dem Programm _ _ _ _ _ _ _ _ _ _ _ ____.
Mathematik
Analysis, Bd. 1-3
von O. Forster
Lineare Algebra
von G. Fischer
Algebra
vanE. Kunz
Einfiihrnng in die Zahlentheorie nnd Algebra
von J. Wolfart
Zahlentheorie fiir Einsteiger
von A. Bartholome, J. Rung, H. Kern
Moderne Verfahren der Kryptographie
von A. Beutelspacher, J. Schwenk,
K.-D. Wolfenstetter
Vieweg _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _~
Otto Forster
Algorithmische
Zahlentheorie
~
Vl8weg
Prof. Dr. Otto Forster
Mathematisches Institut
der Ludwig-Maximilians-UniversiUit MUnchen
Theresienstr. 39
80333 MUnchen
Email: [email protected]
Das in diesem Buch und auf der zugehorigen CD enthaltene Programm-MateriaI ist mit keiner
Verpflichtung oder Garantie irgendeiner Art verbunden. Die Autoren und der Verlag Ubernehmen
infoIgedessen keine Verantwortung und werden keine daraus foIgende oder sonstige Haftung
Ubernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-MateriaIs oder Teilen davon
entstehl.
AIle Rechte vorbehalten
© Springer Fachmedien Wiesbaden 1996
Urspriinglich erschienen bei Friedr. Vieweg & Sohn VerJagsgeseIlschaft mbH,
Braunschweig/Wiesbaden, 1996
Softeover reprint ofthe hardcover 1st edition 1996
Das Werk einschlieBlieh aller seiner Teile ist urheberrechtlich geschUtzt. Jede
Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne
Zustimmung des Verlags unzuliissig und strafbar. Das gilt insbesondere fUr
Vervielfiiltigungen, Obersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.
Umschlaggestaltung: Klaus Birk, Wiesbaden
Gedruckt auf siiurefreiem Papier
ISBN 978-3-663-09240-7
DOI 10.1007/978-3 -663-09239-1
ISBN 978-3-663-09239-1 (eBook)
Inhaltsverzeichnis
1
2
3
4
5
6
Vorwort
Installation und Gebrauch der Software
vii
Die Peano-Axiome
1
9
16
22
33
45
54
59
Die Grundrechnungsarten
Die Fibonacci-Zahlen
Der euklidische Algorithmus
Primfaktor-Zerlegung
Der Restklassen-Ring Z/mZ
7 Die Satze von Fermat, Euler und Wilson
8 Die Struktur von (Z/mZ)*, Primitivwurzcln
9 Pseudo-Zufalls-Gencratoren
10 Zur Umkehrung des Satzes von Fermat
11 Qlladratische Rcste, qlladratisches Reziprozitats-Gcsetz
12
13
14
15
16
Probabilistische Primzahltests
Die Pollard'sche Rho-Methode
Die (p-1)- Faktorisierungs-Methode
Das RSA -Kryptographie-Verfahren
Quadratische Erweiterungen
17 Der (p+l)-Primzahltest, Mersenne'sche Primzahlen
18
19
20
21
22
23
24
2.5
26
Die (p+ 1)- Faktorisierungs-Methode
Faktorisierung mit elliptischen Kurven
Schnelle Fourier-Transformation und die Multiplikation groBer Zahlen
Kettenbriiche
Faktorisierung mit Kettenbriichen
Quadratische Zahlkorper
Der Vier-Quadrate-Satz von Lagrange
Die Pell'sche Gleichung
Idealklassen quadratischer Zahlkorper
Literat urverzeichnis
Namens- und Sachverzeichnis
Funktions-Index
v
ix
72
78
85
98
105
113
123
130
140
148
154
172
189
204
218
228
238
247
271
274
277
Vorwort
Ziel des Buches ist eine Darstellung der elementaren Zahlentheorie von der einfachen Teilbarkeits-Lehre iiber die Theorie der quadratischen Reste bis zu den
Anfangsgriinden der quadratischen Zahlkorper, wie Einheiten reell-quadratischer
Zahlkorper und die Klassengruppe imaginar-quadratischer Zahlkorper. Daneben
solI auch die Untersuchung spezieller Zahlen, wie der Fibonacci-Zahlen sowie der
Fermat'schen und Mersenne'schen Primzahlen nicht zu kurz kommen. Dabei wird
einerseits versucht, durch Beleuchtung des algebraischen Hintergrunds zu einem
vertieften Verstandnis der Aussagen zu gelangen; andrerseits wird immer auch
ein algorithmischer Standpunkt eingenommen. Dieser gibt sich nicht mit rein en
Existenzsatzen zufrieden, sondern fragt stets auch, wie man gesuchte existierende
Objekte (etwa die Primfaktor-Zerlegung einer natiirlichen Zahl oder eine Primitivwurzel modulo einer Primzahl) effizient konstruieren kann.
Die algorithmische Zahlentheorie kann auf eine lange Tradition zuriickblicken,
gehoren doch zwei der altesten Algorithmen der Mathematik, namlich der euklidische Algorithmus und das Sieb des Eratosthenes, zur Zahlentheorie. Auch
die iiber 300 Jahre alte Theorie der Kettenbriiche hatte von Anfang an auch
einen algorithmischen Aspekt (etwa zur Losung der Pell'schen Gleichung). Zu
zwei Grundproblemen der algorithmischen Zahlentheorie (die heute u.a. in der
Kryptographie und fiir die Computer-Sicherheit praxis-relevant geworden sind)
schreibt GauB in Art. 329 seiner Disquisitiones Arithmeticae (zitiert nach der
deutschen Ubersetzung von 1889):
"Dass die Aufgabe, die Primzahlen von den zusammengesetzten zu unterscheiden
und letztere in ihre Primfactoren zu zerlegen zu den wichtigsten und niitzlichsten
der gesamten Arithmetik gehort und die Bemiihungen und den Scharfsinn sowohl
der alten wie auch der neueren Geometer in Anspruch genom men hat, ist so
bekannt, dass es iiberfiiissig ware, hieriiber viele Worte zu verlieren. Trotzdem
. .. . .. ; ausserdem aber diirfte es die Wiirde der Wissenschaft erheischen, alle
Hiilfsmittel zur Losung jenes so elegant en und beriihmten Problems fieissig zu
vervollkommnen. "
Die Hilfsmittel, die GauB selbst anwendet, sind seine Theorie der quadratischen
Reste und quadratische Formen. In den letzten Jahrzehnten sind zu den Problemen der Primzahlerkennung und der Faktorzerlegung groBe Fortschritte erzielt
worden, die durch das Aufkommen leistungsstarker Computer ermoglicht wurden.
Neben der Fortentwicklung klassischer Methoden wurden dazu auch neue Ideen
eingebracht, wie probabilistische Verfahren und die Anwendung der Theorie der
elliptischen Kurven iiber endlichen Korpern.
Vll
Urn der Leserinl zu ermoglichen, dies auf ihrem PC nachzuvollziehen, liegt dem
Buch eine Diskette mit einem unter MS-DOS lauffahigen PAscAL-ahnlichen Multiprazisions-Interpreter ARIBAS bei. (Eine UNIX-Version von ARIBAS ist uber das
Internet erhaltlich.) Es sind nur geringfUgige Programmier-Vorkenntnisse (in PASCAL, Modula-2 oder C) n6tig, urn sich mit ARIBAS zurechtzufinden. Vollstandige
Quelltexte fUr lauffahige Versionen aller behandelten Algorithmen sind im Buch
abgedruckt und auch in Dateien auf der Diskette abgelegt. Zwar sind mit dem
ARIBAs-Interpreter keine Primzahl-Rekorde oder Hochstleistungen bei der Faktorisierung moglich, aber man kann damit immerhin selbst z.B. 100-stellige Primzahlen finden oder 30- bis 40-stellige Zahlen faktorisieren, aber vor allem durch
das Studium der Quelltexte und die leicht mogliche Abanderung und Anpassung
des Codes zu einem vertieften Verstandnis der Algorithmen gelangen.
An mathematischen Vorkenntnissen reicht im Wesentlichen 2 das aus, was man
in den Anfanger- Vorlesungen des erst en Studienjahres lernt; insbesondere wird
vorausgesetzt, dass der Leser weiB, was eine Gruppe, ein Ring oder ein Korper
ist und dass er Begriffe wie Homomorphismus, injektiv und surjektiv kennt. Der
zweite Teil des Buches, der ab §16 (quadratische Erweiterungen) beginnt, ist etwas
anspruchsvoller als der erste. Es werden die ublichen Bezeichnungen benutzt. Z.B.
bezeichnet N die Menge der naturlichen Zahlen (einschlieBlich der 0), Z den Ring
der ganzen Zahlen und Q, R., C die Korper der rationalen, reellen und komplexen
Zahlen. Fur eine Menge Mist Card(M) die Anzahl ihrer Elemente.
Das Buch ist aus Vorlesungen und einem Seminar hervorgegangen, die ich an der
Universitat Munchen gehalten habe. Ich danke Herrn U. Weiss, der mein Assistent fUr die Betreuung der Ubungen und des Seminars war, fUr seine kompetente
UnterstUtzung und den Teilnehmern der Ubungen und des Seminars, insbesondere Herrn M. Rehm, fUr die intensive Benutzung von ARIBAS, durch die einige
Bugs entdeckt wurden und beseitigt werden konnten. Obwohl ich mich naturlich
bemuht habe, die Anzahl der Fehler moglichst gering zu halten, hoffe ich auch
auf die freundliche Hilfe von Leserinnen und Lesern, mir Fehler im Text und
im Programm zu melden, damit sie in der nachsten Version verbessert werden
konnen.
Otto Forster
Munchen, August 1996
Dem Autor sind mannliche und weibliche Leser gleichermaBen willkommen. Umjedoch
die/den LeserIn vor Konstruktionen zu bewahren, die ihr/sein asthetisches Empfinden
verletzen konnten, wurden geeignete TEX-Makros geschrieben, die automatisch eine
der Formen m/w auswahlen. Es fUhle sich jeweils auch das andere Geschlecht angesprochen.
2 Diese Schreibweise, ebenso wie Mersenne'sche Primzahl usw., folgt bereits den neuen
Rechtschreibregeln.
viii
Installation und Gebrauch der Software
Auf der beiliegenden Diskette befindet sich der Multipdizisions-Interpreter ARIBAS
(fUr MS-DOS ab Version 3.2), sowie ARIBAs-Quelltexte zu den im Buch besprochenen Algorithmen und Funktionen. Es sind nur minimale Hardware-Voraussetzungen notig: Ein PC mit Intel-Prozessor ab 8086 und mindestens 500 KB freiem
konventionellen Speicher (extended Memory ist nicht erforderlich). Bei Installation auf Festplatte sollte knapp 1 MB freier Platz zur VerfUgung stehen, jedoch
ist notfalls auch der Betrieb von der Diskette aus moglich.
Inhalt der Diskette: Die erforderlichen Dateien befinden sich (in unkomprimierter Form) auf der Diskette im Directory ARIBAS und seinen Unter-Directories
DOC, ZTH und EXAMPLES. Der Interpreter liegt in zwei Versionen aribas. exe und
aribasO. exe vor. Dabei ist aribas. exe ftir Rechner mit 80386-Prozessor (oder
hoher). Nur im unwahrscheinlichen Fall, dass Sie noch einen 80286er oder gar
8086er Rechner haben, brauchen Sie aribasO. exe. (Allerdings gibt es auch DOSEmulatoren, die nur einen 80286er Prozessor emulieren.) Die Datei aribas. hlp
dient der Online-Hilfe und muss sich immer im selben Directory befinden, wie
aribas. exe. Wenn Sie auf Online-Hilfe verzichten, ist diese Datei nicht erforderlich. 1m Unter-Directory DOC befindet sich ein Tutorial aribas. tut und eine etwas systematischere Dokumentation aribas. doc. Beides sind reine ASCIIDateien und konnen mit einem beliebigen Text-Editor (z.B. EDIT ab MS-DOS 5.0)
angeschaut werden. Sie konnen diese Dateien auch ausdrucken (Vorsicht, hoher
Papierverbrauch!). 1m Directory ZTH befinden sich die Dateien chapOl. ari bis
chap26. ari. Dies sind ebenfalls reine ASCII-Dateien. Sie enthalten die ARIBAsQuelltexte fUr die Beispiele aus §1 bis §26 des Buches (diese Quelltexte sind auch
samtlich im Buch abgedruckt). Schlief3lich enthalt das Directory EXAMPLES noch
weitere Beispiel-Dateien fUr ARIBAs-Source-Code.
Installation: Urn die Software auf der Festplatte, z.B. in Laufwerk c: zu installieren, legen Sie am besten ein Directory c: \ARIBAS an, in das Sie den Inhalt des
Directory's ARIBAS der Diskette samt allen Unter-Directories kopieren. Dies kann
bequem mit xcopy geschehen. Wechseln Sie in das Directory c: \ARIBAS. Falls
sich die Diskette in Laufwerk A: befindet, geben Sie den DOS-Befehl
xcopy A:\ARIBAS
IS
Achten Sie bitte darauf, dass Sie den Befehl vom Directory c: \ARIBAS aus geben, was meistens durch einen Eingabe- Prompt c: \ARIBAS> erkennbar ist. Nach
erfolgreicher Ausfiihrung von xcopy befinden sich dann alle Dateien im Directory
c: \ARIBAS und seinen Unter-Directories. Falls Sie einen 80386er (oder hoher) besitzen, konnen Sie aribasO. exe loschen. Andernfalls loschen Sie aribas . exe und
benennen aribasO. exe in aribas. exe urn. Damit Sie ARIBAS stets von tiberall
IX
aus starten k6nnen, ist es niitzlich, die Pfad-Variable zu erganzen. Falls sich in
der Datei autoexec. bat z.B. die Zeile
PATH C:\DOSiC:\WINDOWS
befindet, erganzen Sie diese zu
PATH C:\DOSiC:\WINDOWSiC:\ARIBAS
Nach dem nachsten Neustart des Rechners wird dies wirksam.
UNIX-Versionen von ARIBAS
Es gibt auch Versionen von ARIBAS fUr UNIx-Workstations und fUr LIN UX auf
80386-Rechnern. Diese sind iiber anonymous ftp oder das World-Wide-Web von
folgenden Adressen erhaltlich.
a) FTP-Server des Mathematischen Instituts der LMU Miinchen
ftp.mathematik.uni-muenchen.de
Directory pub/forster/aribas.
b) WWW-Adresse des Autors
http://www.mathematik.uni-muenchen.de/-forster
U nterpunkt Software - Aribas
Bitte lesen Sie die jeweiligen README-Dateien fUr Einzelheiten.
Die Dateien chapOl. ari bis chap26. ari mit ARIBAs-Quelltexten auf der Diskette gelten auch fUr die UNIx-Version; sie miissen nur mit dos2unix oder einem
ahnlichen Hilfsmittel auf UNIx-Form transformiert werden.
Email-Adresse des Autors
(fUr Bug-Reports und sonstige Mitteilungen)
forster~rz.mathematik.uni-muenchen.de
x
Kurz-Anleitung fUr ARIBAS
Nach der Installation starten Sie ARIBAS fUr einen ersten Test durch Eingabe von
aribas am DOS-Prompt. Dann meldet sich ARIBAS mit einigen Mitteilungen
und es erscheint der ARIBAs-Prompt ==> , der besagt, dass ARIBAS zum Rechnen
bereit ist. Geben Sie zum Beispiel ein
Das Ende einer Eingabe muss in ARIBAS immer durch einen Punkt gekennzeichnet
werden. Nach Driicken der RETURN-Taste erscheint das Ergebnis
-: 6998
Man kann die Ergebnisse von Rechnungen auch Variablen zuordnen, z.B. Hisst sich
die Zahl 267 - 1 wie folgt unter dem Namen M67 speichern (der Potenz-Operator
wird in ARIBAS durch ** dargestellt):
==> M67 := 2**67 - 1.
-: 1_47573_95258_96764_12927
Diese Variable kann man jetzt z.B. als Argument der eingebauten Funktion
rab_primetest iibergeben:
==> rab_primetest(M67).
-: false
Das Ergebnis zeigt, dass 267 - 1 keine Primzahl ist, (siehe dazu §12). Die drei
letzten Ergebnisse sind stets auch unter den Namen _, __ und ___ gespeichert,
z.B. enthiilt die Pseudo-Variable ___ zur Zeit den Wert 6998, aus dem man mit
==> sqrtC __ ).
-: 83.6540495
die Quadratwurzel ziehen kann. Eingaben k6nnen sich auch iiber mehrere Zeilen
erstrecken, z.B.
==> x := 1;
for i := 2 to 10 do
x
:=
x*i;
end;
x.
Dabei kann man mit den Cursor-Tasten auch auf friihere Zeilen zuriickgehen
und evtl. Ausbesserungen von Tippfehlern vornehmen. Mit der Tabulator-Taste
kann man den Text iibersichtlich einriicken. Die obige Befehls-Sequenz berechnet
10!, die Syntax der for-Schleife ist wie in Modula-2. Zum Abschicken der Eingabe muss sich der Cursor hinter dem Abschluss-Punkt befinden und dann die
RETURN -Taste gedriickt werden. Das Ergebnis ist
Xl
-: 3628800
Man kann auch eigene Funktionen definieren. Z.B. ergibt folgende Eingabe eine
Funktion zur Berechnung der Fakultat einer natiirlichen Zahl.
==> function fac(n: integer): integer;
var
x,i: integer;
begin
x := 1;
for i := 2 to n do
x := x*i;
end;
return x;
end.
Die Syntax ist auch hier wie in Modula-2 (in ARIBAS miissen jedoch alle Schliisselwarter klein geschrieben werden). Man beachte: Wahrend auf dem Top-Level
Variable einfach durch Zuweisungen erzeugt werden kannen, miissen sie innerhalb von Funktionen explizit deklariert werden. Wird obige Eingabe abgeschickt,
erscheint als Ergebnis
-: fac
und die Funktion steht zum kiinftigen Gebrauch zur Verfiigung. Entdeckt ARIBAS
einen Fehler, z.B. eine nicht deklarierte Variable oder einen Tipp-Fehler, so erscheint eine Fehler-Meldung. In diesem Fall hole man die letzte Eingabe durch
die Tastenkombination CTRL-Fl zuriick. Man kann dann wieder mit den CursorTasten an die fehlerhafte Stelle gehen und Korrekturen vornehmen. (Mit CTRLF2 erhalt man die vorletzte, mit CTRL- F3 die drittletzte Eingabe zuriick.) Falls
Sie die Funktion fehlerfrei eingegeben haben, kannen Sie damit z.B. rechnen
==> fac(40).
-: 815_91528_32478_97734_34561_12695_96115_89427_20000_00000
Es kann manchmal vorkommen, dass eine Rechnung zu lange dauert oder dass
man durch einen Programmierfehler in eine unendliche Schleife geraten ist. In
diesem Fall kann man (meistens) durch gleichzeitiges Driicken der linken SHIFTund CTRL- Taste einen Abbruch erreichen. Versuchen Sie das etwa nach der Eingabe
==> x
:= 1;
while x > 0 do
inc(x);
end.
Xli
Der Befehl inc(x) erhoht die integer-Variable x urn 1, die Bedingung in der
while-Schleife ist also immer erfUllt. Nach Drucken von SHIFT-CTRL erscheint
die Meldung
user interrupt
**
RESET
**
und ein neuer Prompt ==> . Wir konnen hier auch gleich em Beispiel fUr die
Online-Hilfe geben. Eingabe von
==>
help(inc).
ergibt die Auskunft
inc(var x: integer [; delta: integer]): integer;
Erhoeht die Integer-Variable x urn delta (Defaultwert delta = 1).
Rueckgabewert ist der neue Wert von x.
inc kann also auch mit einem optionalen 2. Argument aufgerufen werden, z.B.
ist inc (x, 2) gleichwertig mit x : = x+2. Man verlasst ARIBAS durch die Eingabe
==>
exit
Hier ist ausnahmsweise kein Schluss-Punkt notig (aber auch nicht verboten).
Fur kompliziertere Funktionen oder Projekte mit mehreren Funktionen ist es
nicht zweckmaBig, den Code direkt in ARIBAS einzutippen. In diesem Fall empfiehlt es sich, den Code mit einem externen Editor zu erstellen. (Z.B. mit dem
schon erwahnten EDIT; man beachte, dass es ein reiner ASCII-Editor sein muss,
kein Textverarbeitungs-System, das die Datei mit Steuer-Zeichen versieht.) Den
Code legt man dann in einer Datei mit der Extension . ari ab, z.B. mit dem
N amen test 1. ari. AnschlieBend kann die Datei von ARIBAS aus mit dem Befehl
==>
load(ltest1").
geladen werden.
Der Code der Funktionen fUr die in den einzelnen Paragraphen des Buches besprochcnen Algorithmen ist in den Dateien chapxx. ari im Directory ZTH abgelegt, wobei xx fUr die Nummer des Paragraphen steht. Falls Sie z.B. den §3
Die Fibonacci-Zablen studieren und dabei Beispiele rechnen wollen, starten Sie
ARIBAS von dem Directory c: \ARIBAS\ZTH aus und laden die zugehorige Datei
mit
==>
load(l chap03").
(Falls ARIBAS von c: \ARIBAS aus gestartet wurde, muss es statt des sen heiBen
load( "zth \chap03").) Sie sollten folgende Ausgabe erhalten:
Xlll
fib_ree
fib_it
fib
-: true
Das zeigt an, dass ARIBAS jetzt die Funktions-Definitionen von fib_ree, fib_it
und fib gespeichert hat. Das Ergebnis true erhiilt man nach erfolgreicher Ausfiihrung von load. Nun konnen Sie z.B. mit
==> fib(83).
-: 99_19485_30947_55497
die 83. Fibonacci-Zahl berechnen. (Dies ist iibrigens eine Primzahl, wie in §10
gezeigt wird.)
Man kann eine zu ladende Datei mit ARIBAs-Code auch direkt beim Start von
ARIBAS als Kommandozeilen-Argument angeben, in unserem Beispiel also durch
das Kommando
aribas ehap03
vom DOS-Prompt aus.
Eine ausfiihrlichere Einfiihrung in ARIBAS erhalt man durch das Tutorial
aribas. tut und die Dokumentation aribas. doe. Das Wesentliche kann man
aber bereits durch das Betrachten der im Buch abgedruckten Programm-Beispiele
lernen.
XIV
1
Die Peano-Axiome
Die element are Zahlentheorie, die wir in diesem Buch vorallem vom algorithmischen Standpunkt aus betrachten wollen, handelt hauptsiichlich von den natiirlichen Zahlen, die aus dem
Bediirfnis des Menschen entstanden sind, Mengen gleichartiger Objekte (etwa eine Herde Schafe) abzuziihlen und anschliellend mit diesen Mallzahlen Vergleiche anzustellen und zu rechnen.
Will man die natiirlichen Zahlen auf eine axiomatische Grundlage stellen, so bieten sich die (vor
hundert lahren aufgestellten) Peano-Axiome an, die von dem Prinzip ausgehen, dass es zu jeder
natiirlichen Zahl eine niichst grollere gibt. 1m Anschluss an die Peano-Axiome kann man die
Addition, Multiplikation und Potenzierung definieren und die dafiir geltenden Rechen-Gesetze
beweisen, was wir exemplarisch durchfiihren ohne Vollstiindigkeit anzustreben. Aus den Definitionen von Addition, Multiplikation und Potenzierung lassen sich jeweils unmittelbar rekursive
Algorithmen zu ihrer Berechnung ableiten, die aber wenig effektiv sind. Zur Vorbereitung von
schnelleren Algorithmen im niichsten Paragraphen leiten wir noch die Biniir-Darstellung der
natiirlichen Zahlen her.
Die Peano-Axiome. Die natiirlichen Zahlen bilden eine Menge N mit einem
ausgezeichneten Element 0 E N und einer Abbildung v : N -+ N, (NachfolgeFunktion; ist y = vex), so heiBt y Nachfolger von x und x Vorganger von y), so
dass folgende Axiome erfUllt sind:
I) Die Abbildung v : N -+ N ist injektiv, d.h. zwei verschiedene natiirliche
Zahlen haben auch verschiedene Nachlolger.
II) Es gilt v(N) = N" {O}, d.h. jede natiirliche Zahl aufler der 0 besitzt einen
Vorganger, (der nach Axiom I eindeutig bestimmt ist), die 0 besitzt keinen Vorganger.
III) (Axiom der vollstandigen Induktion) Sei MeN eine Menge natiirlicher
Zahlen mit lolgenden Eigenschalten:
i) 0 E M.
ii)
Aus x E M lolgt vex) E M.
Dann gilt M
= N.
Die Aussagen dieser Axiome werden durch un sere intuitive Vorstellung von den
natiirlichen Zahlen gedeckt. Insbesondere sagt Axiom III, dass man durch Abzahlen von der 0 ausgehend schlief31ich zu allen natiirlichen Zahlen gelangt. Jede
natiirliche Zahl taucht also schlieBlich in der unendlichen Folge
0, v(O), v(v(O)), v(v(v(O))), v(v(v(v(O)))), v(v(v(v(v(O))))), ...
auf, die man auch durch
0, I, II, III, 1111, 11111, .. ,
abkiirzen kann. Selbstverstandlich ist das keine sehr effektive Darstellung fUr die
natiirlichen Zahlen, insbesondere, wenn sie etwas grofier sind.
2
§1
Das Axiom der vollstandigen Induktion kann man fUr sog. Beweise durch vollstandige Induktion benutzen. Hierzu gleich ein Beispiel.
1.1. Satz. Fur jede natiirliche Zahl x E N gilt v( x)
i= x.
Beweis. Wir bezeichnen mit M die Menge aller x E N mit v( x) i= x. Um den
Satz zu beweisen, muss en wir zeigen, dass M = N. Wir haben also die beiden
Eigenschaften i) und ii) nachzupriifen. Aus Axiom II folgt 0 EM. Sei nun x EM,
also v(x) i= x. Aus Axiom I folgt daraus v(v(x)) i= v(x), d.h. v(x) E M. Wegen
des Induktions-Axioms III gilt daher M = N, q.e.d.
Eine andere Anwendung des Axioms der vollstandigen Induktion sind Definitionen durch vollstandige Induktion. Ais Beispiel betrachten wir die Addition
natiirlicher Zahlen und definieren die Addition n + x zweier Zahlen n und x
durch voIlstandige Induktion uber x.
Definition der Addition. Sei n E N eine naturliche Zahl. Dann wird die Summe
n + x fUr aIle x E N durch folgende Vorschriften festgelegt:
i) n+O:=n.
ii) n+v(x):=v(n+x)
Aus dem Induktions-Axiom folgt, dass hierdurch die Summe n+x fUr aIle natiirlichen Zahlen x definiert ist. Definiert man 1 := v(O), so ergibt sich als spezieller
Fall von ii) fUr die N achfolge-Funktion die Darstellung v( n) = n + l.
In einer Programmiersprache, die Rekursion erlaubt, kann man aus der obigen
Definition sofort einen (wenn auch nicht sehr effektiven) Algorithmus zur Addition zweier natiirlichen Zahlen ableiten. Z.B. leistet folgende ARIBAs-Funktion
p3dd das Verlangte (das Prafix p_ erinnert an Peano).
function p_add(x,y: integer): integer;
var
z: integer;
begin
if y = 0 then
return x;
else
z := p_add(x,dec(y));
return inc(z);
end;
end.
Dabei sind inc und dec eingebaute ARIBAS- Funktionen, die den N achfolger bzw.
Vorganger einer naturlichen Zahl ergeben. (Allerdings sind inc und dec auf der
Menge aller ganzen Zahlen definiert, so dass fUr das korrekte Funktionieren von
3
Die Peano-Axiome
p_add vorausgesetzt wird, dass die Argumente x und y tatsachlich naturliche
Zahlen, d.h. nicht negativ sind.) Die Rekursions-Tiefe ist offenbar gleich y; urn
also z.B. 10 zu addieren, ruft sich die Funktion lO-mal rekursiv selbst auf. Sie
ist daher hauptsachlich von theoretischem Interesse und nur zur Addition kleiner
Zahlen geeignet; wir werden im nachsten Paragraphen effektivere Algorithmen
besprechen.
Die Definition der Addition ist unsymmetrisch in beiden Summanden. Es erfordert einige Muhe, urn die Kommutativitat der Addition aus den Axiomen
abzuleiten, was wir im Folgenden durchfuhren.
1.2. Satz. Fur aile x, yEN gilt x + y
= y + x.
Beweis. Wir gehen in mehreren Schritten vor und zeigen zunachst zwei Hilfsaussagen.
a) Fur aile x E N gilt x + 0 = 0 + x.
Wir zeigen dies durch vollstandige Induktion nach x. Fur x = 0 ist die Aussage
trivial. Es ist noch zu zeigen, dass aus x + 0 = 0 + x folgt vex) + 0 = 0 + vex).
Dies sieht man so:
0+ v( x) = v(O + x) = v( x + 0) = v(x) = v(x) + O.
DID
D
Dabei gelten die Gleichungen an den mit D markierten Stellen aufgrund der Definition der Addition und an der mit I markierten Stelle aufgrund der InduktionsVoraussetzung.
b) Fur alle n, x E N gilt v( n
+ x) = v( n) + x.
Wir verwenden wieder vollstandige Induktion nach x. Fur x = 0 folgt die Behauptung direkt aus der Definition der Addition von O. Fur den Induktions-Schluss
x -+ v( x) machen wir folgende Rechnung:
v( n + v( x )) = v( v( n + x)) = v( v( n) + x) = v( n) + v( x).
D I D
Damit ist b) bewiesen.
c) Jetzt k6nnen wir die ursprungliche Behauptung x + y = y + x durch vollstandige Induktion nach y beweisen. Der Induktions-Anfang y = 0 wurde in Teil a)
bewiesen. Zum Induktions-Schluss y -+ v(y):
x + v( y ) = v( x + y) = v( y + x) = v( y) + x.
D
I
b)
Daraus folgt die Behauptung.
Das Assoziativgesetz der Addition kann man ahnlich beweisen.
§1
4
Anordnung der natiirlichen Zahlen. Fur Elemente x, yEN definiert man
x < y genau dann, wenn ein sEN, s -I 0, existiert mit x + s = y.
Fur x < y schreibt man auch y > x. Die Schreibweise x ~ y bedeutet x = yoder
x < y.
1.3. Satz. Die Anordnung der natiirlichen Zahlen genugt folgenden Regeln.
a) Fur zwei natiirliche Zahlen besteht genau eine der Beziehungen
x
< y,
x
= y,
y < x.
b) A us x < y und y < z folgt x < z.
Beweis. a) Fur eine naturliche Zahl a definieren wir die Mengen
< a},
R( a) := {x EN: x > a}.
L(a) := {x EN: x
Die Behauptung a) ist dann mit folgenden Bedingungen aquivalent:
i) N = L(a) U {a} U R(a).
ii) Die Mengen L(a), {a} und R(a) sind paarweise disjunkt.
Urn i) zu zeigen, definieren wir M := L(a) U {a} U R(a) und zeigen, dass M
den beiden Bedingungen des Induktions-Axioms genugt. Zunachst ist klar, dass
EM. Sei jetzt x E M. Es ist zu zeigen vex) E M. Falls x E R(a) oder x E {a},
folgt unmittelbar v( x) E R( a) eM. Es ist also nur noch der Fall x E L( a) zu
untersuchen. N ach Definition von L( a) gibt es ein s -I mit x + s = a. Nun ist
s = vet) mit einem tEN, woraus folgt a = x + vet) = vex) + t. Falls t = 0, ist
vex) = a, sonst vex) < a, d.h. vex) E L(a), also in jedem Fall vex) E M. Also
folgt M = N und i) bewiesen. Der Beweis von ii) sei der Leserin uberlassen.
°
°
b) Aus x < y und y < z folgt x + s = y und y + t = z mit gewissen naturlichen
Zahlen s -I 0, t -I 0. Daraus ergibt sich s t -I und x (s t) = z, also x < z,
q.e.d.
+
°
+ +
1.4. Satz. Jede nichtleere Menge MeN naturlicher Zahlen besitzt ein kleinstes
Element, d.h. es gibt ein Xo EM, so dass Xo ~ x fur alle x EM.
Beweis. Wir fuhren folgende Bezeichnung ein: Fiir n E N sei
[0, n]
:=
{x EN: x
~
n}.
Es ist leicht zu verifizieren, dass [0, v(n)]
= [0, n] U {venn.
a) Wir zeigen zunachst durch vollstandige Induktion nach n folgende abgeschwachte Aussage:
Jede nichtleere Teilmenge M C [0, n] besitzt ein kleinstes Element.
Die Peano-Axiome
5
Dies ist trivial fUr n = 0, denn [0,0] = {o}.
Zum Induktions-Schritt n ...... v( n): Sei eine nichtleere Teilmenge M C [0, v( n)]
gegeben. Falls Ml := M n [0, n] =I 0, besitzt Ml nach Induktions-Voraussetzung
ein kleinstes Element Xo und dies ist auch ein kleinstes Element von M. Falls
aber M n [0, n] = 0, folgt M = {venn und v(n) ist das kleinste Element von M.
b) Sei jetzt MeN eine beliebige nichtleere Teilmenge. Da M =I 0, existiert ein
n E M und Ml := M n [0, n] =I 0. Nach Teil a) besitzt Ml ein kleinstes Element
Xo und dies ist auch kleinstes Element von M.
Definition der Multiplikation. Das Produkt n· x zweier nattirlicher Zahlen
n, x wird durch Induktion tiber x wie folgt definiert.
i) n· 0 := O.
ii) n.v(x):=n·x+n.
Ahnlich wie bei der Addition beweist man das Kommutativ- und AssoziativGesetz der Multiplikation sowie die Distributiv-Gesetze. Es folgt auch
n·1 = 1· n = n,
denn n· 1 = n . v(O) = n· 0 + n
n .2
= 0 + n = n. Mit 2 := v(l) gilt
= 2 . n = n + n.
Wieder urn ergibt sich aus der Definition der Multiplikation sofort eine Implementierung durch eine rekursive ARIBAs-Funktion.
function p_mult(x,y: integer): integer;
var
z: integer;
begin
if y = 0 then
return 0;
else
z := p_mult(x,dec(y));
return p_add(z,x);
end;
end.
Die Funktion p_mul t ist sehr zeitaufwendig: Zur Multiplikation mit einer nattirlichen Zahl y wird rekursiv y-mal die Funktion p_mult selbst und y-mal die Funktion p_add mit zweitem Argument x aufgerufen. Wie wir oben gesehen haben,
ruft sich die Funktion p_add selbst rekursiv x-mal auf. Zur Berechnung von xy
sind also ingesamt mindestens xy Funktions-Aufrufe erforderlich.
§1
6
Wir beweisen noch einen Satz tiber das Teilen mit Rest, den wir spater fUr den
Euklidischen Algorithmus brauchen werden.
1.5. Satz. Seien x, y natiirliche Zahlen, y > O. Dann gibt es natiirliche Zahlen
q, r mit
x
= qy + r
und
0:::;; r < y.
Beweis. Wir beweisen den Satz durch Induktion nach x. Der Induktions-Anfang
x = 0 ist trivial (man wahle q = r = 0).
Induktionsschritt. Sei x = qy + r mit 0 :::;; r < y. Dann gilt v(x) = qy + v(r).
Falls nun v( r) < y, sind wir fertig. Andernfalls ist v( r) = y und wir haben die
Darstellung v(x) = v(q)y + o.
Bemerkung. Die Zahlen q, r sind sogar eindeutig bestimmt.
Definition der Potenz. Die Potenz nX wird fUr zwei nattirliche Zahlen n, x
durch Induktion tiber x wie folgt definiert.
i) n O := l.
ii) nV(x):= nX . n.
Durch Induktion kann man wieder die tiblichen Rechenregeln fUr die Potenz beweisen:
Wir zeigen als Beispiel die erste dieser Formeln durch vollstandige Induktion nach
y. Der Induktions-Anfang y = 0 ist klar. Zum Induktions-Schritt y -+ v(y):
nX+v(y) = nV(x+y) = n X+Y . n = nX . nY . n = nX . nV(Y).
I
Das Folgende ist eine sich aus der induktiven Definition ergebende rekursive
ARIBAs-Funktion zur Berechnung der Potenz.
function p_pow(x,y: integer): integer;
var
z: integer;
begin
if y = 0 then
return 1;
else
z := p_pow(x,dec(y»;
return z * x;
end;
end.
Die Peano-Axiome
7
Dabei wurde aber zur Multiplikation statt der Funktion p_mult die eingebaute
Multiplikations-Routine benutzt, da es andernfalls schon bei kleinen Beispielen
zu Stack-UberUiufen kommen wiirde.
Binar-Darstellung der natiirlichen Zahlen
Das durch die Peano-Axiome nahegelegte Modell der natiirlichen Zahlen als die
Menge
{ 0, I, II, III, 1111, 11111, ... }
eignet sich schlecht zur Gewinnung effektiver Algorithmen. Eine bessere, dem
Computer-Gebrauch angepasste Moglichkeit ist die Binar-Darstellung. Darunter
versteht man die Darstellung einer Zahl x E N als
n-l
(1)
x =
bk ·2 k mit bk E {O, I}.
k=O
L
1.6. Satz. Jede natUrliche Zahl besitzt eine Biniir-Darstellung.
Beweis. Wir beweisen zunachst durch Induktion nach n die Aussage: Jede natiirliche Zahl x < 2n besitzt eine Binar-Darstellung der Gestalt (1).
Dies ist klar fUr n = 0, denn dann ist x = und x wird durch die leere Summe
dargestellt. (N ach Definition hat die leere Summe den Wert 0.)
Zum Induktions-Schritt n -+ n + 1: Sei x < 2n+l. Falls sogar x < 2n, sind wir
fertig. Andernfalls ist 2n ~ x < 2n +1 und es gilt x = 2n + y mit einer natiirlichen Zahl y < 2n. Nach Induktions-Voraussetzung lasst sich yin der Gestalt (1)
darstellen. Addition von 1· 2n ergibt dann eine Binar-Darstellung fUr x.
Es bleibt noch zu zeigen, dass es fUr jedes x E N wenigstens ein n gibt mit x < 2n.
Dies ist wieder trivial fUr x = 0. Zum Induktions-Schritt: Sei x < 2n. Dann gilt
entweder auch v( x) < 2 n oder v( x) = 2n. 1m letzteren Fall ist aber v( x) < 2n+1 .
°
Eine nach Satz 1.6 in der Form (1) dargestellte Zahl x lasst sich durch den "BitVektor"
(bn-l,···,bl,bo), bk E {0,1},
reprasentieren. Man kann leicht sehen, dass dieser Vektor, abgesehen von fUhrenden Nullen, durch x eindeutig bestimmt ist.
Fiir die schriftliche Darstellung von Zahlen hat die Binar-Darstellung gegenliber
der gewohnten Dezimal-Darstellung den Nachteil, dass sie mehr als dreimal so
lang ist. Diesem Nachteil kann man entgehen, wenn man jeweils 4 Binar-Ziffern
zusammenfasst und durch ein einziges Symbol gemafi der folgenden Tabelle darstellt.
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
o
2
345
6
7
8
9
ABC
D
E
F
Man gelangt so zur sog. Hexadezimal-Darstellung mit der Basis 24 = 16.
Herunterladen