Auf einen Blick - Wiley-VCH

Werbung
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc.3d from 03.08.2017 10:00:40
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Auf einen Blick
Über die Autoren
.......................................................
11
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Teil I: Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Kapitel 1:
Kapitel 2:
Kapitel 3:
Kapitel 4:
Kapitel 5:
Grundlegendes über Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Algorithmendesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Mit Python Algorithmen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Algorithmen mit Python programmieren: Grundlagen . . . . . . . . . . . . . . . . . . 85
Grundlagen der Datenbearbeitung mit Python. . . . . . . . . . . . . . . . . . . . . . . . . 107
Teil II: Die Notwendigkeit des Suchens und Sortierens . . . . . . . . . 127
Kapitel 6:
Kapitel 7:
Daten strukturieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Daten ordnen und durchsuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Teil III: Die Welt der Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Kapitel 8:
Kapitel 9:
Kapitel 10:
Kapitel 11:
Die Grundlagen von Graphen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Punkte verbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Geheimnisse der Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die richtige Webseite finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
167
183
207
217
Teil IV: Der Kampf mit Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Kapitel 12: Big Data verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Kapitel 13: Abläufe parallelisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Kapitel 14: Daten komprimieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Teil V: Komplexe Aufgaben angehen
Kapitel 15:
Kapitel 16:
Kapitel 17:
Kapitel 18:
Kapitel 19:
Kapitel 20:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Mit gierigen Algorithmen arbeiten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dynamische Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Randomisierte Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lokale Suchen durchführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lineare Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Heuristiken untersuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
287
301
323
339
355
367
Teil VI: Zehn große Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Kapitel 21: Zehn algorithmische Verfahren, die die Welt verändern . . . . . . . . . . . . . . . . . 385
Kapitel 22: Zehn bislang ungelöste Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Stichwortverzeichnis
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc.3d from 03.08.2017 10:00:40
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:54
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Inhaltsverzeichnis
Über die Autoren
.......................................................
11
John Muellers Widmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Luca Massarons Widmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
John Muellers Danksagung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Luca Massarons Danksagung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11
12
12
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Über dieses Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konventionen in diesem Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Törichte Annahmen über den Leser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Symbole, die in diesem Buch verwendet werden . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wie es weitergeht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TEIL I
ERSTE SCHRITTE
.........................................................
Kapitel 1
Grundlegendes über Algorithmen
25
26
26
27
28
31
..................................
31
Algorithmen beschreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Definitionen zur Anwendung von Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . .
Algorithmen sind überall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Computern Aufgaben lösen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Moderne CPUs und GPUs wirksam einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . .
Arbeiten mit Spezialchips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Netzwerke wirksam einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten effektiv nutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zwischen Aufgaben und Lösungen unterscheiden. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Richtigkeit und Effizienz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Erkenntnis, dass nichts umsonst ist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Strategie an die Aufgabe anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algorithmen in einer Lingua franca beschreiben . . . . . . . . . . . . . . . . . . . . . . . .
Schwierige Aufgaben angehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten für Lösungen strukturieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Sichtweise eines Computers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenordnung muss sein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
33
36
37
37
38
39
39
40
40
41
41
41
42
42
42
43
Kapitel 2
Algorithmendesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Der Anfang der Problemlösung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisaufgaben modellieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
46
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:54
3B2 9.1.580; Page size: 176.00mm x 240.00mm
16
Inhaltsverzeichnis
Lösungen und Gegenbeispiele finden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Auf den Schultern von Riesen stehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teile und herrsche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Brute-Force-Lösungen vermeiden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erster Schritt: Vereinfachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reduktion ist meist vorteilhaft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erkennen, dass Gier gut sein kann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gierig denken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine gute Lösung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kostenberechnungen und Heuristiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Problem in einem Raum darstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zufällig und von Glück gesegnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Heuristiken und Kostenfunktionen verwenden . . . . . . . . . . . . . . . . . . . . . . . . .
Algorithmen auswerten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simulationen mittels abstrakter Maschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weitere Abstrahierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Funktionen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
49
49
50
51
51
52
52
53
54
54
55
55
56
57
58
59
Kapitel 3
Mit Python Algorithmen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Die Vorteile von Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wie Python in diesem Buch verwendet wird . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit MATLAB arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Andere Testumgebungen für Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Python-Distributionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Analytics Anaconda installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Enthought Canopy Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Python(x,y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WinPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Python auf Linux installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Python auf MacOS installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Python auf Windows installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datensätze und Beispielcode herunterladen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Jupyter Notebook benutzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Coderepository definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Datensätze in diesem Buch verstehen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
65
66
67
67
68
69
69
69
70
71
72
76
76
77
83
Kapitel 4
Algorithmen mit Python programmieren: Grundlagen . . . . . . . . . 85
Mit Zahlen und Logik arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variablenzuordnungen vornehmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Berechnungen durchführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenvergleich durch boolesche Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Strings erstellen und verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Datumsangaben arbeiten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funktionen erstellen und verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
87
88
89
91
92
93
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:54
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Inhaltsverzeichnis
17
Mehrfach aufrufbare Funktionen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funktionen aufrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bedingte Anweisungen und Schleifen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entscheidungen mittels if-Befehl treffen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mittels verschachtelter Entscheidungen zwischen mehreren Möglichkeiten
auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Iterative Aufgaben mittels for-Schleife ausführen . . . . . . . . . . . . . . . . . . . . . . .
Der while-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten in Mengen, Katalogen und Tupeln speichern . . . . . . . . . . . . . . . . . . . . . . . . . .
Datasets erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Listen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tupel erstellen und verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nützliche Iteratoren definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten mittels Dictionaries indizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
94
97
97
98
99
100
101
101
102
103
104
105
Kapitel 5
Grundlagen der Datenbearbeitung mit Python . . . . . . . . . . . . . . . . . . 107
Berechnungen mit Vektoren und Matrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variablen- und Vektoroperationen verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vektoren multiplizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der erste Schritt: Matrizen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Matrizen multiplizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erweiterte Matrizenoperationen definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der richtige Weg: Kombinationen erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Permutationen unterscheiden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kombinationen erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wiederholungen behandeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ergebnisse mit Rekursion erzielen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Funktionsweise der Rekursion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Endrekursionen entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prozesse schneller ausführen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der »teile und herrsche«-Ansatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zwischen möglichen Lösungen unterscheiden . . . . . . . . . . . . . . . . . . . . . . . . . .
108
108
110
111
112
114
115
116
117
118
118
118
121
122
122
125
TEIL II
DIE NOTWENDIGKEIT DES SUCHENS UND SORTIERENS . . . . . . . . . . 127
Kapitel 6
Daten strukturieren
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Die Notwendigkeit einer Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inhalt vereinfacht darstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten aus verschiedenen Quellen anpassen. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Wichtigkeit der Datenbereinigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten gestapelt und kumuliert anordnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stapelweise Anordnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
130
130
131
132
134
135
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:54
3B2 9.1.580; Page size: 176.00mm x 240.00mm
18
Inhaltsverzeichnis
Warteschlangen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten mittels assoziativen Datenfeldern finden . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Bäumen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundlegendes über Bäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bäume erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Relationen in Graphen darstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Über Bäume hinauswachsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kapitel 7
Daten ordnen und durchsuchen
136
137
138
139
139
141
142
143
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Daten mit Mergesort und Quicksort sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Notwendigkeit des Sortierens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten naiv anordnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bessere Sortiertechniken einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suchbäume und Heaps verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Notwendigkeit einer effizienten Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Binäre Suchbäume erstellen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spezialisierte Suchen mit einem binären Heap. . . . . . . . . . . . . . . . . . . . . . . . . .
Hashing verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alles in Buckets füllen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kollisionen vermeiden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hashfunktionen selbst erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
146
146
147
149
153
154
156
157
158
158
160
161
TEIL III
DIE WELT DER GRAPHEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Kapitel 8
Die Grundlagen von Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Die Wichtigkeit von Netzwerken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grundlegendes über Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphen sind überall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die soziale Seite eines Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teilgraphen verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Definitionen für das Zeichnen von Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die wichtigsten Eigenschaften von Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphen zeichnen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Funktionalität eines Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kanten und Knoten zählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zentralität berechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphen in ein numerisches Format bringen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphen zu einer Matrix hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dünn besetzte Matrizen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphen durch Listen ausdrücken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
168
168
170
171
172
172
173
174
175
176
178
180
181
182
182
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:55
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Inhaltsverzeichnis
Kapitel 9
Punkte verbinden
19
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Graphen effizient durchsuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einen Graphen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Breitensuche anwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tiefensuche anwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Entscheidung für eine Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Elemente eines Graphen sortieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit gerichteten azyklischen Graphen arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . .
Topologische Sortierungen verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Reduktion auf einen minimalen Spannbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Geeignete Algorithmen verwenden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vorrangwarteschlangen kennenlernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Algorithmus von Prim einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Algorithmus von Kruskal testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entscheiden, welcher Algorithmus am besten passt . . . . . . . . . . . . . . . . . . . . .
Den kürzesten Weg finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Definieren, was der kürzeste Weg ist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Dijkstra-Algorithmus: eine Erklärung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
184
184
186
187
189
189
190
191
192
195
195
196
198
200
201
201
203
Kapitel 10
Die Geheimnisse der Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Soziale Netzwerke als Graphen betrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Netzwerke in Gruppen clustern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Communitys entdecken. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einen Graphen durchlaufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grade der Trennung abzählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphen zufällig durchlaufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
207
208
210
213
213
215
Kapitel 11
Die richtige Webseite finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Die Welt in einer Suchmaschine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datensuche im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die richtigen Daten finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Funktionsweise des PageRank-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Logik hinter dem PageRank-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das A und O von PageRank. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PageRank implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pythonskripte implementieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Kampf mit naiven Implementierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Langeweile und Teleportation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Leben einer Suchmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Andere Verwendungsmöglichkeiten von PageRank . . . . . . . . . . . . . . . . . . . . . .
Über das PageRank-Paradigma hinaus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Semantisches Suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ranking von Suchergebnissen mit künstlicher Intelligenz. . . . . . . . . . . . . . . . .
218
218
218
219
220
221
222
222
225
228
229
230
230
231
231
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:55
3B2 9.1.580; Page size: 176.00mm x 240.00mm
20
Inhaltsverzeichnis
TEIL IV
DER KAMPF MIT BIG DATA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Kapitel 12
Big Data verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Die Umwandlung von Strom in Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Auswirkungen von Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten sind überall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algorithmen ins Geschäft bringen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenflüsse streamen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Streams korrekt analysieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die richtigen Daten auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lösungen aus Stream-Daten skizzieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenstromelemente filtern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloomfilter darstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Anzahl der Elemente bestimmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Elemente eines Streams abzählen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
236
236
238
240
242
243
244
248
248
251
254
256
Kapitel 13
Abläufe parallelisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Die Handhabung großer Datenmengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die parallele Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dateien und Vorgänge verteilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lösungen mit MapReduce. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operationen verteilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algorithmen für MapReduce erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MapReduce-Simulationen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anfragen durch Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kapitel 14
Daten komprimieren
258
258
260
262
264
265
266
268
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Daten reduzieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codierungen verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Folgen der Kompression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Entscheidung für eine Kompressionsart . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Wahl einer vernünftigen Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codieren mit der Huffman-Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Folgen merken mit dem LZW-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
272
272
273
275
276
279
280
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:55
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Inhaltsverzeichnis
TEIL V
KOMPLEXE AUFGABEN ANGEHEN
21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Kapitel 15
Mit gierigen Algorithmen arbeiten
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Die Entscheidung, wann Gier Sinn macht. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Vorteile der Gier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gierige Algorithmen im Zaum halten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NP-vollständige Probleme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Herausfinden, wieso Gier nützlich ist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Daten im Cache anordnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Kampf um Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Noch mal zu Huffman-Codierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
288
289
290
292
293
294
295
297
Kapitel 16
Dynamische Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Dynamische Programmierung – was ist das? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die historische Grundlage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Probleme dynamisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rekursion dynamisch auslegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memoisation verwenden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die besten dynamischen Techniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Rucksack packen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Städte bereisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Näherungsweise nach Strings suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
302
302
303
304
307
309
309
313
317
Kapitel 17
Randomisierte Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Die Funktionsweise der Randomisierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Notwendigkeit der Randomisierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Wahrscheinlichkeitsprinzip verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verteilungen verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Monte-Carlo-Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Zufall in die Logik einbauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Median durch Quickselect bestimmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Monte-Carlo-Simulationen ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schneller sortieren mit Quicksort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
324
324
325
326
329
331
332
334
337
Kapitel 18
Lokale Suchen durchführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Lokale Suchen verstehen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Nachbarschaft kennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tricks bei der lokalen Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bergsteigen und das Damenproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
340
340
342
343
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:56
3B2 9.1.580; Page size: 176.00mm x 240.00mm
22
Inhaltsverzeichnis
Die Funktionsweise des Simulated Annealing . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wiederholungen durch die Tabu-Suche vermeiden . . . . . . . . . . . . . . . . . . . . . .
Die Erfüllbarkeit boolescher Schaltkreise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2-SAT mittels Randomisierungen lösen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Code-Implementierung in Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Wichtigkeit des Anfangspunkts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
346
347
348
349
350
353
Kapitel 19
Lineare Optimierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Lineare Funktionen – ein Werkzeug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die mathematischen Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Während des Planens vereinfachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Simplex-Verfahren geometrisch bearbeiten . . . . . . . . . . . . . . . . . . . . . . . .
Die Grenzen der linearen Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lineare Optimierung in der Praxis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PuLP auf dem eigenen Computer installieren . . . . . . . . . . . . . . . . . . . . . . . . . . .
Produktionsvorgänge und Einnahmen optimieren . . . . . . . . . . . . . . . . . . . . . .
356
357
358
359
361
361
362
362
Kapitel 20
Heuristiken untersuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Unterschiedliche Heuristiken kennenlernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Ziele heuristischer Verfahren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Von genetisch zu künstlich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Heuristische Routensuche bei Robotern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unbekannte Gebiete erkunden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Entfernungsmessungen als Heuristiken verwenden . . . . . . . . . . . . . . . . . . . . .
Pathfinding-Algorithmen verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einen Irrgarten erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Suche nach dem besten Weg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Heuristische Bewegungen mit A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
368
368
369
370
370
372
373
373
376
379
TEIL VI
ZEHN GROSSE ALGORITHMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Kapitel 21
Zehn algorithmische Verfahren, die die Welt verändern . . . . . . . 385
Sortierverfahren einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suchen durchführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Zufallszahlen eine neue Ordnung herstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenkompressionen vornehmen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Geheimhaltung von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datenbereiche ändern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zusammenhänge erkennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Muster in Daten erkennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Automatisierung und automatischen Antworten arbeiten . . . . . . . . . . . . . . . . .
Eindeutige Identifizierungen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
386
386
386
387
387
388
388
389
390
390
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:56
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Inhaltsverzeichnis
23
Kapitel 22
Zehn bislang ungelöste Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Textsuchen bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wörter unterscheiden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Herausfinden, wann eine Anwendung anhält . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einwegfunktionen erstellen und verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Multiplikation großer Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Gleichverteilung von Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Berechnungszeit der Editierdistanz reduzieren . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben schnell lösen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Paritätsspiel spielen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Räumliche Aufgabenstellungen verstehen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stichwortverzeichnis
392
392
392
393
393
394
394
395
395
395
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Reemers Publishing Services GmbH
O:/Wiley/Reihe_Dummies/71381_Mueller/3d/ftoc2.3d from 03.08.2017 10:00:56
3B2 9.1.580; Page size: 176.00mm x 240.00mm
Herunterladen