Table Of ContentSpringer- Lehrbuch
Fred Kroger
Einfiihrung in die
In formatik
Algorithmenentwicklung
Springer-Verlag
Berlin Heidelberg New York
London Paris Tokyo
Hong Kong Barcelona
Prof. Dr. Fred Kroger
Institut fUr Informatik
Universitiit Miinchen
TheresienstraBe 39
W-8000 Miinchen 2
CR-Klassifikation (1987): A.1, 0.0, E.O
ISBN-13: 978-3-540-53303-0 e-ISBN-13: 978-3-642-76177-5
DOl: 10.1 007/978-3-642-76177-5
CIP-Titelaufnahme der Deutschen Bibliothek
Kroger, Fred: Einftihrung in die Informatik. Algorithmenentwickiung 1 Fred Kroger. -Berlin;
Heidelberg; New York; London; Paris; Tokyo; Hong Kong; Barcelona: Springer, 1991
(Springer-Lehrbuch)
Dieses Werk ist urheberrechtlich geschlitzt. Die dadurch begrlindeten Rechte, insbesondere
die der Ubersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und
Tabellen, der Funksendung, der Mikroverfilmung oder der Vervielf:iltigung auf anderen
Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugs
weiser Verwertung, vorbehalten. Eine Vervielf:iltigung dieses Werkes oder von Teilen dieses
Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urhe
berrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils
geltenden Fassung zulassig. Sie ist grundsatzlich verglitungsptlichtig. Zuwiderhandlungen
unterliegen den Strafbestimmungen des Urheberrechtsgesetzes.
© Springer-Verlag Berlin Heidelberg 1991
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in
diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daB
solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu
betrachten waren und daher von jedermann benutzt werden dlirften.
45/3140-543210 -Gedruckt auf saurefreiem Papier
Vorwort
Seit Ende der sechziger Jahre hat sich die Informatik als eigensUindiges,
begehrtes Studienfach etabliert. Die Lehre des Faches an den Hochschu
len - zumal die Grundausbildung fUr Studienanfanger - hat sich imLaufe
dieser Zeit deutlich gewandelt. Die Wissenschaft Informatik hat inzwi
schen einen groBen Schatz an lehrbaren strukturellen Erkenntnissen an
gesammelt. Studienanfanger bringen immer haufiger bereits (geeignete
oder weniger geeignete) Kenntnisse in der Programmierung von Rechen
anlagen mit. Immer mehr ist daher die Grundausbildung gefordert, vor
allem die fUr die Programmierung fundamentalen Konzepte und Metho
den der Algorithmenentwicklung herauszuarbeiten und zu vermitteln. Die
formalen Grundlagen dieser Konzepte und Methoden sind in den letzten
Jahren genligend gefestigt worden und konnen nun ebenfalls - unter ge
blihrender Vereinfachung und nicht immer in allen Details, jedoch ohne
Preisgabe der Prazision - in den Anfangsunterricht einbezogen werden.
Dieses Lehrbuch ist geschrieben fUr Lehrende und Studierende in den
ersten Fachsemestern an wissenschaftlichen Hochschulen, gleichermaBen
im Haupt- und im grundlagenorientierten Nebenfachstudium Informatik.
Es ist aus einer Reihe von Einflihrungsvorlesungen entstanden, die der
Autor seit 1985 zunachst an der Technischen Universitat Mlinchen und
nachfolgend an der Ludwig-Maximilians-Universitat Mlinchen gehalten
hat. Das Buch umfaBt den Kernbereich "Algorithmenentwicklung" einer
(etwa zweisemestrigen) Grundausbildung in Informatik und versucht, den
oben genannten Leitlinien zu folgen.
In unserem Bestreben, die begrifflichen Grundlagen der Algorith
menentwicklung in abstrahierender und strukturierender Weise darzule
gen, haben wir die Behandlung der einzelnen algorithmischen Konzepte
nicht an eine konkrete Programmiersprache geknlipft und uns statt des sen
bemliht, sie sozusagen "in Reinkultur" in einer eigenen - syntaktisch und
semantisch formal definierten - "Konzeptsprache" festzuhalten. Erst im
abschlieBenden Kapitel 8 geben wir einen kursorischen Uberblick, wie
Algorithmen und Datenstrukturen in einer Programmiersprache (hier
MODULA-2) dargestellt werden konnen. Es ist selbstverstandlich sinn
voll, Teile dieses Kapitels bereits frliher zu lehren oder zu lesen, wenn
VI Vorwort
die Besehaftigung mit dem vorangehenden Stoff mit praktisehen Program
mieriibungen begleitet wird.
Formale Grundlegungen und Prazisierungen von Informatik-Inhalten
erfolgen in mathematisehen Begriffswelten; viele dieser Inhalte besehrei
ben direkt mathematisehe Sachverhalte in anderer "Einkleidung". Naeh
einer knapp en Zusammenstellung von Begriffen und Notationen der Ma
thematik in Absehnitt 1.1 be spree hen wir daher in den weiteren Absehnit
ten von Kapitel 1 eine Reihe mathematiseher Konzepte und Teehniken,
die fiir die Informatik besonders wichtig sind und in der Mathematikaus
bildung in Schule und Grundstudium nieht oder jedenfalls haufig (noch)
nicht mit der hier verfolgten Zielriehtung gelehrt werden.
Kapitel 2 ist eine Hinfiihrung auf den zentralen Begriff des Algorith
mus. AuBerdem wird die Bedeutung von Syntax und Semantik von Daten
und Algorithmendarstellungen herausgearbeitet.
In den Kapiteln 3 bis 5 werden Begriffe und konzeptuelle Grundlagen
algorithmiseher Datenverarbeitung formal entwickelt. Kapitel 3 und 4
behandeln Konzepte der "Ablaufsteuerung" von Algorithmen, sowohl in
applikativer als auch in imperativer Siehtweise. Wir beteiligen uns dabei
nicht an der maneherorts gefiihrten Diskussion, welcher dieser beiden
Ansatze zur Algorithmenentwicklung der "bessere" sei, sondern stell en
sie gleichrangig nebeneinander und beleuchten (insbesondere auch in den
nachfolgenden Kapiteln) vielmehr die jeweils vorhandenen Starken und
Schwachen.
Kapitel 5 behandelt wichtige Datenstrukturen und ihre algorithmi
sehe Handhabung. Datenstrukturen - auch die in Kapitel 3 eingefiihrten
"elementaren" - werden in der Form abstrakter Datentypen beschrieben,
wobei wir allerdings immer den Weg "vom Modell zur Abstraktion"
gehen: Axiomatische Definitionen abstrahieren inhaltlieh vorgegebene
Strukturen.
Kapitel 6 und 7 vermitteln methodische Grundlagen der Algorith
menentwicklung. Kapitel 6 diskutiert neben allgemeinen Verfahrenswei
sen, wie schrittweise Verfeinerung, Modularisierung u.a., ausfiihrlich den
Einsatz (und wechselseitige Beziehungen) von Rekursion und Iteration
sowie die Verwendung nieht-deterministischer Konzepte.
Kapitel 7 behandelt Aspekte der algorithmischen Komplexitat und
Methoden und Techniken zur Entwieklung effizienter Algorithmen. Ein
einftihrender Absehnitt iiber parallele Algorithmen - dureh Effizienzbe
traehtungen motiviert - rundet das Kapitel abo
Bei der Ausarbeitung dieses Textes haben mich zahlreiche Kollegen,
Mitarbeiter und Studenten in vielfaltiger Form - dureh Anregungen, Kri
tik, Korrekturen usw. - unterstiitzt. Spezielle Hilfe wurde mir zuteil
durch Hans GaBner, Martin Leischner, Frank LeBke, Stephan Merz,
Barbara Paeeh-Kaiser, Holger Schlingloff. Ihnen allen - auch den nicht
namentlieh Genannten - bin ich zu groBem Dank verpflichtet.
Vorwort VII
In besonderer Weise war Stefan Eichholz von Beginn an mit der hier
vorliegenden Arbeit verbunden. Bei meinen ersten Vorlesungen zu diesem
Thema ist er mir als Ubungsleiter hilfreich zur Seite gestanden. 1m Stu
dienjahr 1987/88 hat er selbst im Rahmen eines Lehrauftrages die zwei
semestrige Einflihrungsvorlesung an der Ludwig-Maximilians-Universi
Hit in Anlehnung an mein damaliges Manuskript gehalten und dieses in
vielen Punkten verbessert. Die schrittweise Fertigstellung des endglilti
gen Buchtextes hat Herr Eichholz schlieBlich mit vielen wichtigen An
merkungen begleitet. Ihm gilt mein besonderer Dank.
Danken mochte ich nicht zuletzt auch dem Springer-Verlag, insbe
sondere Hans Wossner und Ingeborg Mayer, flir die Bereitschaft zur
Herausgabe dieses Buches und die stete Unterstlitzung wahrend der Fer
tigstellung.
MUnchen, Oktober 1990 Fred Kroger
Inhaltsverzei chnis
Einleitung 1
1 Mathematische Grundlagen 3
1.1 Einige mathematische Grundbegriffe 3
1.2 Strikte und nicht-strikte Abbildungen . 11
1.3 Boolesche Algebra 14
1.4 Induktion und Rekursion 17
1.5 Tupel und endliche Folgen . 23
1.6 Induktive Definitionen von Folgen . 27
1.7 Binarbaume 31
2 Daten und Algorithmen . 3S
2.1 Zeichenreihen . 35
2.2 Datendarstellung durch Zeichenreihen 39
2.3 Syntaxdefinitionen 43
2.4 Algorithmen . 50
2.5 Darstellung von Algorithmen 59
3 Konzepte applikativer Algorithmen 63
3.1 Grundoperationen . 63
3.2 Funktionen . 69
3.3 Terme . 74
3.4 Rekursion 83
3.5 Terminierung und Korrektheit rekursiver Funktionen 87
3.6 Konstanten 92
4 Konzepte imperativer Algorithmen 9S
4.1 Prozeduren, Variablen, Zuweisungen 95
4.2 Prozeduraufrufe . 100
4.3 Kombinierbarkeit applikativer und imperativer Konzepte 106
4.4 Bedingte Anweisungen und Rekursion . 112
4.5 Iteration. 118
4.6 Terminierung und Korrektheit rekursiver Prozeduren und
Schleifen 128
x Inhaltsverzeichnis
5 Datenstrukturen....... 135
5.1 Sequenzen....... 135
5.2 Stapel und Schlangen. 144
5.3 Reihungen. 149
SA Tupel ........ . 158
5.5 Binarbaume ..... . 164
6 Methoden und Techniken der Algorithmenentwicklung . 175
6.1 Schrittweise Verfeinerung . . . . . . . . . . . 175
6.2 Datenaustausch tiber globale GroBen ..... 186
6.3 Rekursion und Iteration als Entwurfskonzepte 194
6 A Entrekursivierung von Algorithmen 202
6.5 Entrekursivierung mit Kellern . 213
6.6 Nicht-Determinismus .. 220
7 Komplexitat von Algorithmen 227
7.1 Grundbegriffe...... 227
7.2 Entwicklung effizienter Algorithmen 233
7.3 Suchalgorithmen ..... . 243
7 A Backtracking-Algorithmen. . . . . . 249
7.5 Parallelitat.. ........... . 258
8 Darstellung von Algorithmen in MODULA-2 267
8.1 Funktionen und Prozeduren. 267
8.2 Programme und Moduln 273
8.3 Datenstrukturen. 279
8 A Verweise......... 288
8.5 Geflechte ....... . 294
8.6 Darstellung von Mengen und Multimengen . 304
Sachverzeichnis . . . . . . . . . . . . . . . . . . . 313
Einleitung
Informatik (englisch: computer science) ist die
Wissenschaft und Technik der Verarbeitung von Informationen
mit Hilfe elektronischer Rechenanlagen.
Informationsverarbeitung ist ein grund1egendes Element menschli
chen (und nicht nur menschlichen) Lebens liberhaupt. Die spezielle Beto
nung der Informatik liegt auf einer Informations- (oder auch: Daten-)
Verarbeitung, die "von einer Maschine" (in Abgrenzung etwa von einem
menschlichen Verarbeited durchfUhrbar ist. Immer mehr Datenverarbei
tungsaufgaben lassen sich heute in der Tat mit Hilfe von Computern 10-
sen, z.B.:
• Verwaltung von Konten einer Bank,
• Textverarbeitung,
• Wettervorhersage,
• Steuerungvon F1ugzeugen,
• Verarbeitung von (chemischen, medizinischen, ... ) MeBdaten,
• Hochrechnung von Wah1ergebnissen
usw.
Ermoglicht wird dies jeweils durch systematische Verarbeitungsvor
schriften, die so prazise formuliert sind, daB sie von einer Rechenan1age
ausgeflihrt werden konnen.
Eine Verarbeitungsvorschrift in diesem Sinne heiBt Algorithmus. Der
A1gorithmusbegriff ist ein zentra1er Begriff der Informatik. Um ihn herum
gruppiert sich ein weites Spektrum von wissenschaftlichen Themenberei
chen, z.B.:
• Aufbau und Wirkungsweise der (e1ektronischen) Maschinen, die A1go
rithmen ausftihren konnen,
• praktischer Einsatz von Rechenan1agen bei der DurchfUhrung von A1-
gorithmen,
• maschinengerechte Darstellung von Daten und A1gorithmen,
• Konstruktion von A1gorithmen,
• Grenzen der maschinellen Losbarkeit von Datenverarbeitungsaufga
ben.
2 Einleitung
Die Beschaftigung mit der hardware, d.h. mit Aufbau und Wirkungs
weise von elektronischen Rechenanlagen gehort zum Teilbereich der
technischen Informatik. Diese hat zahlreiche Beriihrungspunkte mit der
Elektrotechnik. Die praktische Informatik umfaBt alle Bereiche der Kon
struktion, Darstellung und Ausfiihrung von Algorithmen (der software).
Zur theoretischen Informatik zahlen Fragen aus dem in obiger Aufzahlung
zuletzt genannten Bereich sowie ganz allgemein die theoretische Durch
dringung und Grundlegung von Fragen und Konzepten der Informatik.
Praktische und erst recht theoretische Informatik beziehen einen GroBteil
ihrer wissenschaftlichen Methoden und Techniken aus der Mathematik.
Dariiber hinaus gibt es eine ganze Reihe von Fragestellungen in der
Informatik, die sich nicht direkt in die drei genannten Teilbereiche ein
ordnen lassen. Dazu gehoren z.B. die Untersuchung der Anwendbarkeit
von Erkenntnissen der Informatik in anderen Wissenschaften (angewandte
Informatik) oder die Behandlung von Auswirkungen der Informatik in der
Gesellschaft.
Dieses Buch gibt eine Einfiihrung in die Grundlagen des skizzierten
Kernbereichs der Informatik: jeglicher "algorithmischen Datenverarbei
tung" zugrunde liegende Konzepte, Methoden und Techniken zur Darstel
lung und Strukturierung von Daten und zur Entwicklung von Algorithmen,
die Daten verarbeiten.