Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen
Автор книги: id книги: 1996643     Оценка: 0.0     Голосов: 0     Отзывы, комментарии: 0 2461,05 руб.     (27,27$) Читать книгу Купить и скачать книгу Купить бумажную книгу Электронная книга Жанр: Математика Правообладатель и/или издательство: Bookwire Дата добавления в каталог КнигаЛит: ISBN: 9783969100677 Скачать фрагмент в формате   fb2   fb2.zip Возрастное ограничение: 0+ Оглавление Отрывок из книги

Реклама. ООО «ЛитРес», ИНН: 7719571260.

Описание книги

Algorithmen und Datenstrukturen von Grund auf verstehen Kenntnisse von Algorithmen und Datenstrukturen sind ein Grundbaustein des Studiums der Informatik und verwandter Fachrichtungen. Das Buch behandelt diese Thematik in Verbindung mit der Programmiersprache Java und schlägt so eine Brücke zwischen den klassischen Lehrbüchern zur Theorie von Algorithmen und Datenstrukturen und den praktischen Einführungen in eine konkrete Programmiersprache. Die konkreten Algorithmen und deren Realisierung in Java werdenumfassend dargestellt. Daneben werden die theoretischen Grundlagen vermittelt, die in Programmiersprachen-Kursen oft zu kurz kommen: abstrakte Maschinenmodelle, Berechenbarkeit, Algorithmenparadigmen sowie parallele und verteilte Abläufe. Einen weiteren Schwerpunkt bilden Datenstrukturen wie Listen, Bäume, Graphen und Hashtabellen sowie deren objektorientierte Implementierung mit modernen Methoden der Softwareentwicklung. Die 6. Auflage führt einige neue Algorithmen ein und berücksichtigt die Neuerungen der aktuellen Java-Versionen, u.a. zu Themen wie Parallelisierung.

Оглавление

Gunter Saake. Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Vorwort

Vorwort zur 5. Auflage

Vorwort zur 4. Auflage

Vorwort zur 3. Auflage

Vorwort zur 2. Auflage

Vorwort zur 1. Auflage

Danksagungen

Inhaltsverzeichnis

1Vorbemerkungen und Überblick

1.1Informatik, Algorithmen und Datenstrukturen

1.2Historischer Überblick: Algorithmen

1.3Historie von Programmiersprachen und Java

1.4Grundkonzepte der Programmierung in Java

Definition 1.1 Programm

Programm 1.1 »Hello World!« in Java

2Algorithmische Grundkonzepte

2.1Intuitiver Algorithmusbegriff

2.1.1Beispiele für Algorithmen

Beispiel 2.1 Intuitiver Algorithmenbegriff

Beispiel 2.2 Bekannte Algorithmen

Beispiel 2.3 Nichdeterministischer Ablauf

Beispiel 2.4 Nichtdeterminierter vs. determinierter Algorithmus

Beispiel 2.5 Funktionen zu den Beispielalgorithmen

2.1.2Bausteine für Algorithmen

2.1.3Pseudocode-Notation für Algorithmen

Sequenz

Bedingte Anweisungen

Schleifen / Iteration

Varianten der Iteration

2.1.4Struktogramme

2.1.5Rekursion

Algorithmus 2.1 Türme von Hanoi (rekursiv)

2.2Sprachen und Grammatiken

2.2.1Begriffsbildung

2.2.2Reguläre Ausdrücke

2.2.3Backus-Naur-Form (BNF)

Beispiel 2.6 Syntax für Pseudocode-Algorithmen

2.3Elementare Datentypen

2.3.1Datentypen als Algebren

2.3.2Signaturen von Datentypen

Beispiel 2.7 Datentyp für natürliche Zahlen

2.3.3Der Datentyp bool

2.3.4Der Datentyp integer

2.3.5Felder und Zeichenketten

2.4Terme

2.4.1Bildung von Termen

Definition 2.1 Definition vonint-Termen

2.4.2Algorithmus zur Termauswertung

2.5Datentypen in Java

2.5.1Primitive Datentypen

2.5.2Referenzdatentypen

2.5.3Operatoren

3Algorithmenparadigmen

3.1Überblick über Algorithmenparadigmen

3.2Applikative Algorithmen

3.2.1Terme mit Unbestimmten

3.2.2Funktionsdefinitionen

Definition 3.1 Funktionsdefinitionen

Beispiel 3.1 Beispiele für Funktionsdefinitionen

3.2.3Auswertung von Funktionen

Beispiel 3.2 Funktionsaufrufe

3.2.4Erweiterung der Funktionsdefinition

Beispiel 3.3 Erweiterte Funktionsdefinition

Beispiel 3.4 Rekursive Funktionsdefinition

3.2.5Applikative Algorithmen

Definition 3.2 Applikativer Algorithmus

Beispiel 3.5 Undefinierte Ergebnisse

3.2.6Beispiele für applikative Algorithmen

Beispiel 3.6 Fakultätfunktion n!

Beispiel 3.7 Fibonacci-Zahlen

Beispiel 3.8 Produkt nur unter Verwendung der Addition

Beispiel 3.9 Größter gemeinsamer Teiler ggT

Beispiel 3.10 Applikativer Algorithmus mit mehreren Funktionen

Beispiel 3.11 Primzahltest

Beispiel 3.12 Terminierung und undefinierte Funktionen

Beispiel 3.13 McCarthys 91-Funktion

Beispiel 3.14 Algorithmus mit kniffeliger Bedeutung

Beispiel 3.15 Ackermannn-Funktion

3.3Imperative Algorithmen

3.3.1Grundlagen imperativer Algorithmen

Definition 3.3 Variablen

Definition 3.4 Zustände

Definition 3.5 Ausdrücke

Beispiel 3.16 Zustand

Beispiel 3.17 Berechnung eines Wertes

Beispiel 3.18 Transformation von Anweisungen

3.3.2Komplexe Anweisungen

Definition 3.6 Semantik imperativer Algorithmen

3.3.3Beispiele für imperative Algorithmen

Beispiel 3.19 Fakultätfunktion

Beispiel 3.20 Fibonacci-Zahlen

Beispiel 3.21 Größter gemeinsamer Teiler (euklidischer Algorithmus)

Beispiel 3.22 ggT mittels Division

Beispiel 3.23 Bestimmung der Semantik eines imperativen Algorithmus

3.4Das logische Paradigma

3.4.1Logik der Fakten und Regeln

3.4.2Deduktive Algorithmen

Definition 3.7 Deduktiver Algorithmus

3.5Weitere Paradigmen

3.5.1Genetische Algorithmen

Algorithmus 3.1 Grundprinzip genetischer Algorithmen

3.5.2Neuronale Netze

3.6Umsetzung in Java

3.6.1Ausdrücke und Anweisungen

Ausdrücke

Blöcke

Bedingte Anweisungen

Schleifen

3.6.2Methoden

Programm 3.1 Imperative Berechnung der Fakultät

3.6.3Applikative Algorithmen und Rekursion

Programm 3.2 Rekursive Berechnung der Fakultät

Programm 3.3 Programm zum Darstellen des Pythagoras-Baumes

Programm 3.4 Hauptprogramm für den Pythagoras-Baum

4Literaturhinweise zum Teil I

5Ausgewählte Algorithmen

5.1Suchen in sortierten Folgen

5.1.1Sequenzielle Suche

Algorithmus 5.1 Sequenzielles Suchen

Programm 5.1 Sequenzielle Suche

5.1.2Binäre Suche

Algorithmus 5.2 Binäres Suchen

Programm 5.2 Binäre Suche

5.2Sortieren

5.2.1Sortieren: Grundbegriffe

Beispiel 5.1 Stabilität von Sortierverfahren

5.2.2Sortieren durch Einfügen

Algorithmus 5.3 Sortieren durch Einfügen

Programm 5.3 Implementierung des InsertionSort

5.2.3Sortieren durch Selektion

Algorithmus 5.4 Sortieren durch Selektion

Programm 5.4 Implementierung des SelectionSort

5.2.4Sortieren durch Vertauschen: BubbleSort

Algorithmus 5.5 Sortieren durch Vertauschen

Programm 5.5 Implementierung des BubbleSort

5.2.5Sortieren durch Mischen: MergeSort

Algorithmus 5.6 Mischen von zwei Folgen

Algorithmus 5.7 Sortieren durch Mischen

Programm 5.6 Implementierung des MergeSort

5.2.6QuickSort

Algorithmus 5.8 QuickSort

Algorithmus 5.9 Zerlegen beim QuickSort

Programm 5.7 Implementierung des QuickSort

5.2.7Sortieren durch Verteilen: RadixSort

Programm 5.8 Implementierung des RadixSort

5.2.8Sortierverfahren im Vergleich

SelectionSort

InsertionSort

BubbleSort

MergeSort

QuickSort

RadixSort

6Formale Algorithmenmodelle

6.1Registermaschinen

Definition 6.1 Definition einer Registermaschine

Beispiel 6.1 Registermaschine M1

Definition 6.2 Berechnete Funktion einer Registermaschine

Beispiel 6.2 Registermaschine M2

Beispiel 6.3 Registermaschine M3

Beispiel 6.4 Registermaschine M4

6.2Abstrakte Maschinen

Definition 6.3 Abstrakte Maschine

Definition 6.4 Endkonfiguration

Definition 6.5 Laufzeit einer abstrakten Maschine

Definition 6.6 Berechnete Funktion einer abstrakten Maschine

Beispiel 6.5 Applikativer Algorithmus als abstrakte Maschine

Beispiel 6.6 Imperativer Algorithmus als abstrakte Maschine

6.3Markov-Algorithmen

Beispiel 6.7 Anwendung einer Regel

Definition 6.7 Markov-Algorithmus

Beispiel 6.8 Markov-Tafel für Addition von 1

Beispiel 6.9 Markov-Tafel für Addition im unären System

Beispiel 6.10 Markov-Tafel für Verdopplung einer Strichliste

Beispiel 6.11 Markov-Tafel zur Multiplikation im unären System

Beispiel 6.12 Markov-Tafel für Kopieren einer Zeichenkette

6.4Church’sche These

Definition 6.8 Universelles Algorithmenmodell

6.5Interpreter für formale Algorithmenmodelle in Java

6.5.1Java: Markov-Interpreter

Programm 6.1 Einfacher Markov-Interpreter in Java

6.5.2Registermaschine in Java

Programm 6.2 Klasse für die Konfiguration

Programm 6.3 Schnittstelle für Befehle

Programm 6.4 Implementierung des Befehls LOAD

Programm 6.5 Implementierung des Befehls IF-GOTO

Programm 6.6 Implementierung der Registermaschine

Programm 6.7 Programmausführung mit der Registermaschine

7Eigenschaften von Algorithmen

7.1Berechenbarkeit und Entscheidbarkeit

7.1.1Existenz nichtberechenbarer Funktionen

Satz 7.1 Abzählbarkeit von A

Satz 7.2 Abzählbarkeit der berechenbaren Funktionen

Satz 7.3 Überabzählbarkeit der einstelligen Funktionen

7.1.2Konkrete nichtberechenbare Funktionen

Definition 7.1 Von x berechnete Funktion

Definition 7.2 Urbildbereich einer Funktion

Satz 7.4 Halteproblem

7.1.3Das Halteproblem

Satz 7.5 Allgemeines Halteproblem

7.1.4Nichtentscheidbare Probleme

7.1.5Post’sches Korrespondenzproblem

Beispiel 7.1 Post’sches Korrespondenzproblem

Beispiel 7.2 Post’sches Korrespondenzproblem ohne Lösung

7.2Korrektheit von Algorithmen

7.2.1Relative Korrektheit

7.2.2Korrektheit von imperativen Algorithmen

Beispiel 7.3 Anweisungen über Variablen

Definition 7.3 Partielle Korrektheit

7.2.3Korrektheitsbeweise für Anweisungstypen

Atomare Anweisungen

Sequenzen von Anweisungen

Selektion

Iteration und Schleifeninvarianten

Übertragbarkeit auf imperative Programmiersprachen

7.2.4Korrektheit imperativer Algorithmen an Beispielen

Beispiel 7.4 Korrektheit von MULT

Beispiel 7.5 Korrektheit von XYZ

Beweis der Terminierung von imperativen Algorithmen

Beispiel 7.6 Terminierung von XYZ

7.2.5Korrektheit applikativer Algorithmen

Beispiel 7.7 Beispiel für Induktionsbeweis

7.3Komplexität

7.3.1Motivierendes Beispiel

7.3.2Asymptotische Analyse

Beispiel 7.8 Aufwand für Schleifen

Beispiel 7.9 Rechnen in Größenordnungen I

Definition 7.4 O-Notation

Beispiel 7.10 Rechnen in Größenordnungen II

Beispiel 7.11 Rechnen in Größenordnungen III

7.3.3Komplexitätsklassen

7.3.4Analyse von Algorithmen

(1) for-Schleifen

(2) Geschachtelte for-Schleifen

(3) Nacheinanderausführung

(4) if-else-Bedingungen

8Entwurf von Algorithmen

8.1Entwurfsprinzipien

8.1.1Schrittweise Verfeinerung

Beispiel 8.1 Durch schrittweise Verfeinerung zur Berechnung des Medians

Programm 8.1 Java-Umsetzung des Spielablaufs

8.1.2Einsatz von Algorithmenmustern

8.1.3Problemreduzierung durch Rekursion

8.2Algorithmenmuster: Greedy

8.2.1Greedy-Algorithmen am Beispiel

8.2.2Greedy: Optimales Kommunikationsnetz

8.2.3Verfeinerung der Suche nach billigster Kante

8.3Rekursion: Divide-and-conquer

8.3.1Das Prinzip »Teile und herrsche«

8.3.2Beispiel: Spielpläne für Turniere

8.4Rekursion: Backtracking

8.4.1Prinzip des Backtracking

8.4.2Beispiel: Das Acht-Damen-Problem

8.4.3Beispiel: Tic Tac Toe mit Backtracking

Programm 8.2 Zugberechnung für Tic Tac Toe

8.5Dynamische Programmierung

8.5.1Das Rucksackproblem

8.5.2Rekursive Lösung des Rucksackproblems

8.5.3Prinzip der dynamischen Programmierung

9Parallele und verteilte Berechnungen

9.1Grundlagen

9.2Modell der Petri-Netze

9.2.1Definition von Petri-Netzen

9.2.2Formalisierung von Petri-Netzen

9.2.3Das Beispiel der fünf Philosophen

9.3Programmieren nebenläufiger Abläufe

9.3.1Koordinierte Prozesse

9.3.2Programmieren mit Semaphoren

9.3.3Philosophenproblem mit Semaphoren

9.3.4Verklemmungsfreie Philosophen

9.4Nebenläufige Berechnungen in Java

9.4.1Threads und wechselseitiger Ausschluss

Programm 9.1 Implementierung als Subklasse von Thread

Programm 9.2 Implementierung über Runnable-Schnittstelle

Programm 9.3 Synchronisation von Producer-Consumer

9.4.2Parallelisierung in Java

Programm 9.4 Parallele Berechnung der Fibonacci-Zahlen

Programm 9.5 Thread-Pool zur parallelen Berechnung

9.4.3Das Philosophenproblem in Java

Programm 9.6 Grobstruktur eines Philosophen

Programm 9.7 Implementierung der Gabeln

Programm 9.8 Vollständige Implementierung eines Philosophen

Programm 9.9 Initialisierung der fünf Philosophen

Programm 9.10 Semaphor als Java-Klasse

10Literaturhinweise zum Teil II

11Abstrakte Datentypen

11.1Signaturen und Algebren

Definition 11.1 Signatur

Definition 11.2 Algebra zu einer Signatur

11.2Algebraische Spezifikation

11.2.1Spezifikationen und Modelle

11.2.2Termalgebra und Quotiententermalgebra

Definition 11.3 Termalgebra

Definition 11.4 Quotiententermalgebra

11.2.3Probleme mit initialer Semantik

11.3Beispiele für abstrakte Datentypen

11.3.1Der Kellerspeicher (Stack)

11.3.2Beispiel für Kellernutzung

Keller: Komplexeres Beispiel

11.3.3Die Warteschlange (Queue)

11.4Entwurf von Datentypen

12Klassen, Schnittstellen und Objekte in Java

12.1Grundzüge der Objektorientierung

Definition 12.1 Objekt

Definition 12.2 Klasse

12.2Klassen und Objekte in Java

Programm 12.1 Beispiel einer Klassendefinition

12.3Vererbung

Programm 12.2 Vererbung in Java

12.4Abstrakte Klassen und Schnittstellen

12.5Ausnahmen

Programm 12.3 Definition der MeineException

12.6Umsetzung abstrakter Datentypen

Programm 12.4 Implementierung des ADT RatNumber

12.7Lambda-Ausdrücke

13Grundlegende Datenstrukturen

13.1Stack und Queue als Datentypen

Programm 13.1 Definition der Stack-Schnittstelle

Programm 13.2 Nutzung des Datentyps Stack

Programm 13.3 Definition der Queue-Schnittstelle

13.1.1Implementierung des Stacks

Programm 13.4 Implementierung des Stacks auf Basis eines Feldes

13.1.2Implementierung der Queue

Programm 13.5 Implementierung der Queue auf Basis eines Feldes

13.1.3Bewertung der Implementierungen

13.2Verkettete Listen

Programm 13.6 Definition der Knotenklasse der Liste

Programm 13.7 Definition der Klasse List

Programm 13.8 Implementierung des Stacks auf Basis von List

13.3Doppelt verkettete Listen

Programm 13.9 Klasse Node für eine doppelt verkettete Liste

Programm 13.10 Implementierung der doppelt verketteten Liste

13.4Skip-Listen

Programm 13.11 Implementierung der Skip-Liste

13.5Das Iterator-Konzept

Programm 13.12 Iterator für die Klasse DList

13.6Java Collection Framework

13.7Generics in Java

14Bäume

14.1Bäume: Begriffe und Konzepte

14.2Binärer Baum: Datentyp und Basisalgorithmen

14.2.1Der Datentyp »Binärer Baum«

Programm 14.1 Knotenklasse für BinaryTree

Beispiel für Binärbaum

14.2.2Algorithmen zur Traversierung

Inorder-Durchlauf

Algorithmus 14.1 Inorder-Durchlauf

Preorder-Durchlauf

Algorithmus 14.2 Preorder-Durchlauf

Postorder-Durchlauf

Algorithmus 14.3 Postorder-Durchlauf

Levelorder-Durchlauf

Algorithmus 14.4 Levelorder-Durchlauf

Programm 14.2 Traversierungsmethoden I

Programm 14.3 Traversierung im binären Baum

Programm 14.4 Traversierungsmethoden II

14.3Suchbäume

Programm 14.5 Vergleichsmethode für die Klasse TreeNode

14.3.1Suchen in Suchbäumen

Algorithmus 14.5 Suche im binären Suchbaum (rekursiv)

Algorithmus 14.6 Suche im binären Suchbaum (iterativ)

Algorithmus 14.7 Minimales Element im Suchbaum

Programm 14.6 Suchoperationen für die Klasse BinaryTree

14.3.2Einfügen und Löschen

Programm 14.7 Einfügen für die Klasse BinaryTree

Algorithmus 14.8 Löschen im binären Suchbaum

Programm 14.8 Löschen für die Klasse BinaryTree

14.3.3Komplexität der Operationen

14.4Ausgeglichene Bäume

14.4.1Rot-Schwarz-Bäume

2-3-4-Bäume

Struktur von Rot-Schwarz-Bäumen

Definition 14.1 Rot-Schwarz-Baum

Programm 14.9 Knotenklasse für RedBlackTree

Programm 14.10 Einfügen im Rot-Schwarz-Baum

Programm 14.11 Splitten von 4-Knoten im Rot-Schwarz-Baum

Programm 14.12 Rotation im Rot-Schwarz-Baum

14.4.2AVL-Bäume

Definition 14.2 AVL-Kriterium

Einfügen in AVL-Bäumen

Beispiel 14.1 Rotationen im AVL-Baum

Programm 14.13 Knotenklasse für den AVL-Baum

Programm 14.14 Einfügen im AVL-Baum

Programm 14.15 Rotationen im AVL-Baum

14.4.3B-Bäume

Prinzip des B-Baumes

Definition 14.3 B-Baum

Programm 14.16 Knotenklasse für BTree

Suchen in B-Bäumen

Programm 14.17 Suchen im BTree

Einfügen und Löschen

Programm 14.18 Einfügen im BTree

Programm 14.19 Einfügen und Split im BTree-Knoten

Komplexität der Operationen

14.5Digitale Bäume

14.5.1Tries

Programm 14.20 Knotenklassen für einen binären Trie

Programm 14.21 Einfügemethoden für den binären Trie

Programm 14.22 Suchen im binären Trie

14.5.2Patricia-Bäume

14.6Praktische Nutzung von Bäumen

14.6.1Sortieren mit Bäumen: HeapSort

Algorithmus 14.9 HeapSort

Programm 14.23 Implementierung von HeapSort

14.6.2Sets mit binären Suchbäumen

Programm 14.24 Implementierung von Set auf Basis eines Baumes

Programm 14.25 Iterator für TreeSet

15Hashverfahren

15.1Grundprinzip des Hashens

15.2Grundlagen und Verfahren

15.2.1Hashfunktionen

15.2.2Behandlung von Kollisionen

Verkettung der Überläufer

Lineares Sondieren

Quadratisches Sondieren

15.2.3Aufwand beim Hashen

Aufwand beim Hashen mit Sondieren

15.2.4Hashen in Java

Programm 15.1 Schnittstelle für Hashtabellen

Programm 15.2 Hashtabelle mit Verkettung der Überläufer

Programm 15.3 Hashtabelle mit linearem Sondieren

15.2.5Cuckoo-Hashing

Beispiel 15.1 Cuckoo-Hashing

15.3Dynamische Hashverfahren

15.3.1Grundideen für dynamische Hashverfahren

Erste Idee: Hashfunktionen mit dynamisch erweiterbarem Bildbereich

Zweite Idee: Bucket kann mehr als einen Wert aufnehmen

Dritte Idee: Erweiterung des Bildbereichs nur dort wo nötig

Vierte Idee: Binärer Trie zur Verwaltung der Blöcke

Fünfte Idee: Ausgeglichener Trie als Feld gespeichert

15.3.2Erweiterbares Hashen

15.3.3Umsetzung des erweiterbaren Hashens

Programm 15.4 Klasse für das erweiterbare Hashen

Programm 15.5 Initialisierung beim erweiterbaren Hashen

Programm 15.6 Verdopplung der Indexgröße

Programm 15.7 Einfügen beim erweiterbaren Hashen

Programm 15.8 Split eines Blocks

Lektionen aus erweiterbarem Hashen

16Graphen

16.1Arten von Graphen

16.1.1Ungerichtete Graphen

Definition 16.1 Ungerichteter Graph

16.1.2Gerichtete Graphen

Definition 16.2 Gerichteter Graph

16.1.3Gewichtete Graphen

16.1.4Weitere Eigenschaften von Graphen

16.2Realisierung von Graphen

16.2.1Knoten- und Kantenlisten

16.2.2Adjazenzmatrix

16.2.3Graphen als dynamische Datenstrukturen

16.2.4Transformationen zwischen Darstellungen

16.2.5Vergleich der Komplexität

16.2.6Eine Java-Klasse für Graphen

Programm 16.1 Repräsentation eines Graphen

16.3Ausgewählte Graphenalgorithmen

16.3.1Breitendurchlauf

Algorithmus 16.1 Breitendurchlauf

Programm 16.2 Implementierung des Breitendurchlaufs

16.3.2Tiefendurchlauf

Algorithmus 16.2 Tiefendurchlauf

16.3.3Zyklenfreiheit und topologisches Sortieren

Test auf Zyklenfreiheit

Topologisches Sortieren

16.4Algorithmen auf gewichteten Graphen

16.4.1Kürzeste Wege

16.4.2Dijkstras Algorithmus

Algorithmus 16.3 Dijkstras Algorithmus

16.4.3A*-Algorithmus

Algorithmus 16.4 A*-Algorithmus

Programm 16.3 A*-Suche in Java

16.4.4Kürzeste Wege mit negativen Kantengewichten

Algorithmus 16.5 Bellmann-Ford-Algorithmus

16.4.5Maximaler Durchfluss

Korrekter Durchfluss

Maximaler Durchfluss

16.4.6Der Ford-Fulkerson-Algorithmus für die Bestimmung des maximalen Flusses

16.5Zentralitätsanalyse in Graphen

Programm 16.4 PageRank-Implementierung

16.6Weitere Fragestellungen für Graphen

Problem des Handlungsreisenden

Planare Graphen

Einfärben von Graphen

17Algorithmen auf Texten

17.1Probleme der Worterkennung

Algorithmus 17.1 Brute-Force-Suche in Texten

17.2Knuth-Morris-Pratt

Algorithmus 17.2 Knuth-Morris-Pratt

Programm 17.1 Java-Methoden für denKMP-Algorithmus

17.3Boyer-Moore

Algorithmus 17.3 Boyer-Moore

Programm 17.2 Implementierung des Boyer-Moore-Algorithmus

17.4Pattern Matching

17.4.1Reguläre Ausdrücke

17.4.2Endliche Automaten

Programm 17.3 Simulation eines NEA

17.4.3Java-Klassen für reguläre Ausdrücke

17.5Ähnlichkeit von Zeichenketten

17.5.1Levenshtein-Distanz

Programm 17.4 Implementierung der Levenshtein-Distanz

17.5.2n-Gramme

Beispiel 17.1 3-Gramme für »Qualität«

Beispiel 17.2 Abstand mittels 3-Grammen

Programm 17.5 Implementierung des 3-Gramm-Vergleichs

17.5.3Anwendungen der Ähnlichkeitsvergleiche

18Literaturhinweise zum Teil III

AQuelltext der Klasse IOUtils

Abbildungsverzeichnis

Tabellenverzeichnis

Algorithmenverzeichnis

Beispielverzeichnis

Programmverzeichnis

Literaturverzeichnis

Index. Symbole

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

Отрывок из книги

Gunter Saake ist Professor für Datenbanken und Informationssysteme an der Otto-von-Guericke-Universität Magdeburg und forscht unter anderem auf den Gebieten Datenbankintegration, digitale Bibliotheken, objektorientierte Informationssysteme und Informationsfusion. Er ist Koautor mehrerer Lehrbücher, u. a. zu Datenbankkonzepten und -implementierungstechniken, Datenbanken & Java.

Kai-Uwe Sattler ist Professor für Datenbanken und Informationssysteme an der TU Ilmenau. Zu seinen Arbeitsgebieten zählen Anfrageverarbeitung sowie Architekturen, Datenstrukturen und Algorithmen für das Datenmanagement auf Basis moderner Hardwaretechnologien. Er ist Koautor mehrerer Lehrbücher zu Datenbankkonzepten, -architekturen und -implementierungstechniken.

.....

16.3.3Zyklenfreiheit und topologisches Sortieren

16.4Algorithmen auf gewichteten Graphen

.....

Добавление нового отзыва

Комментарий Поле, отмеченное звёздочкой  — обязательно к заполнению

Отзывы и комментарии читателей

Нет рецензий. Будьте первым, кто напишет рецензию на книгу Algorithmen und Datenstrukturen
Подняться наверх