Abbildungsverzeichnis

1–1

Compiler und Interpreter bei Java

1–2

Struktur eines Java-Programms

2–1

Notation für Struktogramme

2–2

Beispiel eines Struktogramms

2–3

Schleifen und bedingte Anweisung im Struktogramm

2–4

Türme von Hanoi

2–5

Signaturgraph für natürliche Zahlen

2–6

Zuweisung von Referenzen

2–7

Tic-Tac-Toe-Spielfeld

3–1

Semantik imperativer Algorithmen am Beispiel

3–2

Auswertung der Anfrage add(3,2,5)

3–3

Auswertung der Anfrage add(3,2,X)

3–4

Auswertungszweige der Anfrage add(X,Y,1)

3–5

Zwei Lösungen des Acht-Damen-Problems

3–6

Grundmodell des Perzeptrons

3–7

XOR-Problem

3–8

Neuronales Netz für XOR

3–9

Sichtbarkeit und Gültigkeitsbereich von Variablen

3–10

Prinzip des Pythagoras-Baumes

3–11

Ausgabe des Programms zum Pythagoras-Baum

5–1

Binäres Suchen in einer sortierten Folge

5–2

InsertionSort am Beispiel

5–3

SelectionSort am Beispiel

5–4

BubbleSort am Beispiel

5–5

MergeSort am Beispiel

5–6

Pivot-Element beim QuickSort

5–7

QuickSort am Beispiel

5–8

RadixSort am Beispiel

6–1

Ein- und Ausgabebefehle einer Registermaschine

6–2

Arithmetische Befehle von Registermaschinen

6–3

Sprung- und Stoppbefehle einer Registermaschine

6–4

Aufbau einer Registermaschine

6–5

Registermaschine zur Berechnung des Primzahltests

6–6

Abstrakte Maschine

7–1

Die Maschine STOP

7–2

Die Maschine SELTSAM

7–3

Asymptotische obere Schranke: O-Notation

8–1

Spielablauf für Tic Tac Toe

8–2

Ausführung eines Spielzugs

8–3

Eingabe für Kommunikationsnetz

8–4

Errechnetes Kommunikationsnetz

8–5

Spielplan T2

8–6

Konstruktion des Spielplans Tk+1

8–7

Spielplan T3

8–8

Labyrinth-Suche und Backtracking

8–9

Acht-Damen-Problem

8–10

Nicht alle Konfigurationen lassen sich zu einer Lösung erweitern

8–11

Konfigurationsraum beim Vier-Damen-Problem

8–12

Lösungsbaum für Tic Tac Toe

8–13

Bewertung von Spielzügen in Tic Tac Toe

8–14

Lösungsraum beim Rucksackproblem

8–15

Feld der Funktionswerte des Rucksackproblems

9–1

Shared Memory vs. Message Passing

9–2

Petri-Netz für Produzenten-Verbraucher-System

9–3

Petri-Netz mit Marken

9–4

Petri-Netz nach Feuern von produce

9–5

Petri-Netz nach Feuern von deliver

9–6

Produzenten-Verbraucher-System mit Puffergröße 2 als Bedingungs-Ereignis-Netz

9–7

Stellen-Transitions-Netz für Puffergröße 2

9–8

Stellen-Transitions-Netz mit Kapazität

9–9

Grafische Darstellung des formal beschriebenen Petri-Netzes P

9–10

Modellierungsprimitive für Petri-Netze

9–11

Philosophenproblem als Petri-Netz: Ein Philosoph

9–12

Stellen aller 5 Philosophen

9–13

Fünf Philosophen mit Verklemmungsmöglichkeit

9–14

Zustände von Prozessen

9–15

Erzeuger-Verbraucher-System als Petri-Netz

11–1

Verdeutlichung des Stack-Prinzips

11–2

Auswertung eines arithmetischen Terms mit einem Stack

11–3

Auswertung eines arithmetischen Terms mit zwei Kellern

11–4

Verdeutlichung des Queue-Prinzips

12–1

Objekt am Beispiel

12–2

Klassenkonzept

12–3

Generalisierung vs. Spezialisierung

12–4

Einfach- vs. Mehrfachvererbung

12–5

Probleme ohne Mehrfachvererbung

12–6

Kontrollfluss beim Auslösen einer Ausnahme

13–1

Prinzip der verketteten Liste

13–2

Einfügen am Beginn einer verketteten Liste

13–3

Einfügen und Löschen am Ende einer verketteten Liste

13–4

Doppelt verkettete Liste

13–5

Anhängen am Ende einer doppelt verketteten Liste

13–6

Aufbau einer Skip-Liste

13–7

Suche in einer Skip-Liste

13–8

Randomisierte Skip-Liste

13–9

Iterator-Konzept

13–10

Struktur des Java Collection Framework

14–1

Beispiele für Baumstrukturen

14–2

Begriffe in einem Baum

14–3

Baum mit Niveau der Höhe 4

14–4

Arithmetischer Ausdruck als Baum

14–5

Baumstruktur in einem Dateisystem

14–6

Pseudoknoten für die Realisierung eines Binärbaumes

14–7

Beispiel eines binären Baumes

14–8

Suche im binären Suchbaum

14–9

Einfügen im binären Suchbaum

14–10

Löschen im binären Suchbaum

14–11

»Gute« und »schlechte« Suchbäume

14–12

Vollständiges Ausgleichen eines Baumes

14–13

2-3-4-Baum

14–14

Repräsentation von 3- und 4-Knoten im Rot-Schwarz-Baum

14–15

Fall 1 des Splittens im Rot-Schwarz-Baum

14–16

Fall 2A des Splittens

14–17

Fall 2B des Splittens

14–18

Einfügen im Rot-Schwarz-Baum: Beispiel

14–19

Rotationen beim Einfügen von »13«

14–20

AVL-Eigenschaft am Beispiel

14–21

Einfache Rotation

14–22

Doppelrotation

14–23

Ergebnis der Rotationen aus Beispiel 14.1

14–24

Struktur einer Seite im B-Baum

14–25

Suchen im B-Baum

14–26

Einfügen im B-Baum

14–27

Aufbau eines B-Baumes

14–28

Löschen im B-Baum I

14–29

Löschen im B-Baum II

14–30

Struktur eines Knotens im Trie

14–31

Beispiel eines Tries

14–32

Einfügen in einen binären Trie

14–33

Patricia-Baum

14–34

Heap-Struktur

14–35

Darstellung eines Heaps als Feld

14–36

Entfernen der Wurzel im Heap

14–37

Aufbau eines Heaps

14–38

Sortierung des Heaps

14–39

Prinzip des Iterators für einen Suchbaum (Inorder-Durchlauf)

15–1

Beispiel für eine Hashtabelle

15–2

Hashtabelle mit verketteten Überläufern

15–3

Lineares Sondieren

15–4

Quadratisches Sondieren

15–5

Hashtabellen beim Cuckoo-Hashing

15–6

Hashtabellen beim Cuckoo-Hashing nach Verdrängen von 129

15–7

Hashtabellen beim Cuckoo-Hashing nach kaskadierendem Verdrängen

15–8

Erweiterbares Hashen: Beispiel der Tiefe d = 2

15–9

Erweiterbares Hashen mit verdoppelter Feldgröße

15–10

Aufteilen eines Blockes beim erweiterbaren Hashen

16–1

Gu: Beispiel für ungerichteten Graphen

16–2

Gg: Beispiel für gerichteten Graphen

16–3

Beispiel für gewichteten Graphen

16–4

Graph als dynamische Datenstruktur

16–5

Breitendurchlauf am Beispiel nach initialem Schritt

16–6

Breitendurchlauf in den folgenden Schritten

16–7

Durch Breitendurchlauf erzeugter aufspannender Baum

16–8

Beispielgraph für Tiefendurchlauf

16–9

Die ersten acht Zwischenzustände beim Tiefendurchlauf

16–10

Die Zwischenzustände 9 bis 16 beim Tiefendurchlauf

16–11

Eingabe für topologisches Sortieren

16–12

Topologisches Sortieren durch Tiefensuche mit DFS

16–13

Topologisches Sortieren durch Tiefensuche II

16–14

Gewichteter Graph

16–15

Dijkstras Algorithmus: Initialisierung

16–16

Dijkstras Algorithmus nach erstem Durchlauf

16–17

Dijkstras Algorithmus nach zweitem Schleifendurchlauf

16–18

Dijkstras Algorithmus nach drittem Schleifendurchlauf

16–19

Dijkstras Algorithmus nach viertem Schleifendurchlauf

16–20

A*-Algorithmus: Beispiel

16–21

A*-Algorithmus: Beispiel im 2. Schritt

16–22

Graph mit negativen Kantengewichten

16–23

Bellman-Ford-Algorithmus: Initialisierung

16–24

Bellman-Ford-Algorithmus: Schleifendurchlauf für i = 1

16–25

Bellman-Ford-Algorithmus: Schleifendurchlauf für i = 2

16–26

Bellman-Ford-Algorithmus: Schleifendurchlauf für i = 3

16–27

Bellman-Ford-Algorithmus: Schleifendurchlauf für i = 4

16–28

Graph mit negativ gewichtetem Zyklus

16–29

Paketvermittlung in Computernetzwerk

16–30

Graph mit Kapazitäten mit leerem Fluss

16–31

Ford-Fulkerson: Auswahl des ersten Pfades

16–32

Ford-Fulkerson: Adjustierung der Kantenbeschriftung und Auswahl des zweiten Pfades

16–33

Ford-Fulkerson: Auswahl des dritten Pfades

16–34

Ford-Fulkerson: Auswahl des vierten Pfades

16–35

Ford-Fulkerson: Auswahl des fünften Pfades

16–36

Ford-Fulkerson: Abschluss der Berechnung

16–37

Beispiel der PageRank-Berechnung

16–38

K5 und K3,3

16–39

Ländernachbarschaft in Europa als Graph

17–1

Ablauf beim Brute-Force-Algorithmus

17–2

Knuth-Morris-Pratt-Algorithmus am Beispiel

17–3

Berechnung der next-Tabelle

17–4

Boyer-Moore: Verschiebung des Musters bei Nichtübereinstimmung I

17–5

Boyer-Moore: Verschiebung des Musters bei Nichtübereinstimmung II

17–6

Boyer-Moore: Suffix-Tabelle

17–7

Boyer-Moore-Algorithmus am Beispiel

17–8

Beispiel für einen nichtdeterministischen endlichen Automaten

17–9

Konstruktion eines NEA aus regulären Ausdrücken I

17–10

Konstruktion eines NEA aus regulären Ausdrücken II

17–11

Aus »A BA« konstruierter NEA

17–12

Repräsentation eines NEA

17–13

Ablauf bei Erkennung von »AABA«

17–14

Matrix zur Bestimmung der Levenshtein-Distanz