Inhaltsverzeichnis Vorwort 1 Grundbegriffe 1.1 Signal, Datum, Information 1.1.1 Wissen 1.1.2 Analoge und digitale Signale 1.1.3 Codierung von Daten 1.1.4 Von der Signal- zur Informationsverarbeitung 1.1.5 Semiotik: Syntax, Semantik und Pragmatik 1.2 Wirklichkeit und Modell 1.2.1 Die Verantwortung des Informatikers 1.3 Systeme 1.3.1 Die Aufgaben von Informatik-Systemen 1.3.2 Konstruktion von Informatik-Systemen 1.4 Algorithmen 1.5 von-Neumann-Rechner 1.6 Semi-Thue-Systeme 1.6.1 Markov-Algorithmen 1.6.2 Formale Systeme 1.6.3 Chomsky-Grammatiken 1.7 Anmerkungen und Verweise 2 Halbgruppen, Relationen 2.1 Halbgruppen und Monoide 2.2 Relationen und Graphen 2.2.1 Gerichtete und ungerichtete Graphen 2.2.2 Repräsentation von Relationen und Graphen 2.3 Ordnungsrelationen, Halbverbände, Verbände 2.3.1 Quasiordnungen 2.3.2 Hasse-Diagramme 2.3.3 Untere und obere Schranken 2.3.4 Normalformen und Konfluenz ix 1 1 4 6 8 10 12 13 16 18 20 21 23 26 28 31 32 33 41 43 43 48 49 57 62 62 63 67 70 2.4 2.5 2.6 2.7 2.3.5 Vollständige Halbordnungen 2.3.6 Halbverbände 2.3.7 Dualisierung 2.3.8 Verbände Endliche Automaten Petrinetze Relationale Algebra 2.6.1 Mengenoperationen auf Relationen 2.6.2 Datenbankoperationen 2.6.3 SQL Anmerkungen und Verweise 3 Algebren und Termalgebren 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Formeln Boolesche Algebra Algebraische Strukturen und Algebren Abbildungen zwischen Algebren Termalgebren 3.5.1 Strukturelle Induktion Termalgebren mit Variablen Termersetzungssysteme Abstrakte Datentypen Anmerkungen und Verweise 4 Formale Logik 4.1 Aussagenlogik 4.1.1 Grundbegriffe 4.1.2 Folgerungen und Kalküle 4.1.3 Ein Kalkül für die Aussagenlogik 4.1.4 Normalformen 4.1.5 Hornklauseln und Resolution 4.1.6 Junktoren 4.1.7 Schaltfunktionen 4.1.8 Geordnete binäre Entscheidungsdiagramme 4.1.9 Schaltwerke 4.2 Prädikatenlogik 4.2.1 Syntax und Semantik der Prädikatenlogik 4.2.2 Ein Kalkül für die Prädikatenlogik 4.2.3 Normalformen 4.2.4 Resolution 4.3 Anmerkungen und Verweise 74 78 79 80 84 97 104 105 106 108 112 113 114 117 120 123 127 130 131 135 138 139 141 142 142 147 150 156 158 160 163 172 180 188 189 194 198 202 208 5 Funktionales Programmieren 5.1 Elementarer lambda-Kalkül 5.1.1 Bedingte lambda-Ausdrücke 5.1.2 Rekursion 5.1.3 Faule Auswertung 5.1.4 Operationelle Semantik des lambda-Kalküls 5.1.5 Die Programmiersprache LISP 5.1.6 Ein Interpretierer für LISP 5.2 Grundelemente funktionaler Programmiersprachen 5.2.1 Elementare Spracheigenschaften 5.2.2 Bezeichner, Operatoren, Ausdrücke 5.3 Daten und elementare Datentypen 5.3.1 Boolesche Werte 5.3.2 Ganze Zahlen, Gleitpunktzahlen 5.3.3 Zeichen 5.3.4 Listen 5.3.5 Texte 5.3.6 Tupel 5.3.7 Funktionen als Werte 5.3.8 Muster 5.4 Allgemeines über Datentypen 5.4.1 Typinferenz und Polymorphie 5.4.2 Überladen von Definitionen 5.5 Grundlegende Programmiermethoden 5.5.1 Rekursion 5.5.2 Durchreichen von Zwischenergebnissen 5.5.3 Unbeschränkte Listen 5.5.4 Hinweise zur Dokumentation von Programmen 5.6 Anmerkungen und Verweise 6 Abstrakte Datentypen 6.1 Die natürlichen Zahlen 6.2 Lineare Datenstrukturen 6.2.1 Listen 6.2.2 Reihungen 6.2.3 Keller 6.2.4 Schlangen 6.2.5 Sequenzen und Dateien 209 210 213 214 216 217 219 223 226 227 231 235 236 238 243 244 254 257 259 261 262 263 266 269 270 277 279 283 285 287 288 290 291 291 293 295 298 6.3 Binärbäume 6.4 Mengen und Mehrfachmengen 6.5 Anmerkungen und Verweise 7 Algorithmenkonstruktion I 7.1 Aufwand von Algorithmen 7.1.1 Der O-Kalkül 7.1.2 Anwendungen 7.2 Teile und Herrsche 7.2.1 Zeitoptimales sequentielles Sortieren 7.2.2 Einseitiges Teile-und-Herrsche 7.2.3 Matrixmultiplikation nach STRASSEN 7.3 Gierige Algorithmen 7.3.1 Zeitplanerstellung 7.3.2 Minimale spannende Bäume 7.3.3 Matroide 7.3.4 Zeitplanung mit Endterminen 7.4 Anmerkungen und Verweise 302 307 310 311 311 313 314 318 320 325 326 327 329 330 333 336 337 Literaturverzeichnis 339 A Mengen, Relationen, Funktionen, Zahlen 343 A.1 A.2 A.3 A.4 A.5 Mengen Relationen und Funktionen Natürliche Zahlen Mehrfachmengen Anmerkungen B Codierung B.l Zeichenvorräte B.2 Codierung von Zahlen B.2.1 Binärdarstellung ganzer Zahlen B.2.2 Darstellung von Gleitpunktzahlen B.3 Präfixcodes und Shannonsche Informationstheorie B.3.1 Shannonsche Informationstheorie B.4 Fehlererkennung und -Korrektur B.4.1 Zyklische Codes und Schieberegister B.5 Anmerkungen und Verweise Stichwortverzeichnis 343 346 351 353 354 355 356 359 359 362 366 367 372 377 380 381