My Account Log in

1 option

Algorithmen und Datenstrukturen : eine Einführung mit Java / Gunter Saake und Kai-Uwe Sattler

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Saake, Gunter, author.
Sattler, Kai-Uwe, author.
Language:
English
German
Subjects (All):
Java.
Datenstrukturen.
Praktische Informatik.
Graphen.
Datentypen.
Informatik-Lehrbuch.
Algorithmische Grundbegriffe.
Grundkonzepte Programmierung.
Algorithmenparadigmen.
Grundlegende Datenstrukturen.
Hashverfahren.
Algorithmenmuster.
Dynamische Programmierung.
Datentypen in Java.
Physical Description:
1 online resource (608 pages)
Edition:
6. Auflage
Place of Publication:
dpunkt, 2020
System Details:
text file
Summary:
Algorithmen und Datenstrukturen sind Grundbausteine eines jeden Informatikstudiums. Das Buch behandelt diese Thematik in Verbindung mit der Programmiersprache Java. Darüber hinaus werden grundlegende Konzepte angesprochen wie formale und alternative Algorithmenmodelle, Korrektheit und Komplexität. Einen weiteren Schwerpunkt bilden fundamentale Datenstrukturen 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.
Contents:
Intro
I Grundlegende Konzepte
Vorbemerkungen und Überblick
Informatik, Algorithmen und Datenstrukturen
Historischer Überblick: Algorithmen
Historie von Programmiersprachen und Java
Grundkonzepte der Programmierung in Java
Algorithmische Grundkonzepte
Intuitiver Algorithmusbegriff
Beispiele für Algorithmen
Bausteine für Algorithmen
Pseudocode-Notation für Algorithmen
Struktogramme
Rekursion
Sprachen und Grammatiken
Begriffsbildung
Reguläre Ausdrücke
Backus-Naur-Form (BNF)
Elementare Datentypen
Datentypen als Algebren
Signaturen von Datentypen
Der Datentyp bool
Der Datentyp integer
Felder und Zeichenketten
Terme
Bildung von Termen
Algorithmus zur Termauswertung
Datentypen in Java
Primitive Datentypen
Referenzdatentypen
Operatoren
Algorithmenparadigmen
Überblick über Algorithmenparadigmen
Applikative Algorithmen
Terme mit Unbestimmten
Funktionsdefinitionen
Auswertung von Funktionen
Erweiterung der Funktionsdefinition
Beispiele für applikative Algorithmen
Imperative Algorithmen
Grundlagen imperativer Algorithmen
Komplexe Anweisungen
Beispiele für imperative Algorithmen
Das logische Paradigma
Logik der Fakten und Regeln
Deduktive Algorithmen
Weitere Paradigmen
Genetische Algorithmen
Neuronale Netze
Umsetzung in Java
Ausdrücke und Anweisungen
Methoden
Applikative Algorithmen und Rekursion
Literaturhinweise zum Teil I
II Algorithmen
Ausgewählte Algorithmen
Suchen in sortierten Folgen
Sequenzielle Suche
Binäre Suche
Sortieren
Sortieren: Grundbegriffe
Sortieren durch Einfügen
Sortieren durch Selektion
Sortieren durch Vertauschen: BubbleSort
Sortieren durch Mischen: MergeSort
QuickSort
Sortieren durch Verteilen: RadixSort.
Sortierverfahren im Vergleich
Formale Algorithmenmodelle
Registermaschinen
Abstrakte Maschinen
Markov-Algorithmen
Church'sche These
Interpreter für formale Algorithmenmodelle in Java
Java: Markov-Interpreter
Registermaschine in Java
Eigenschaften von Algorithmen
Berechenbarkeit und Entscheidbarkeit
Existenz nichtberechenbarer Funktionen
Konkrete nichtberechenbare Funktionen
Das Halteproblem
Nichtentscheidbare Probleme
Post'sches Korrespondenzproblem
Korrektheit von Algorithmen
Relative Korrektheit
Korrektheit von imperativen Algorithmen
Korrektheitsbeweise für Anweisungstypen
Korrektheit imperativer Algorithmen an Beispielen
Korrektheit applikativer Algorithmen
Komplexität
Motivierendes Beispiel
Asymptotische Analyse
Komplexitätsklassen
Analyse von Algorithmen
Entwurf von Algorithmen
Entwurfsprinzipien
Schrittweise Verfeinerung
Einsatz von Algorithmenmustern
Problemreduzierung durch Rekursion
Algorithmenmuster: Greedy
Greedy-Algorithmen am Beispiel
Greedy: Optimales Kommunikationsnetz
Verfeinerung der Suche nach billigster Kante
Rekursion: Divide-and-conquer
Das Prinzip "Teile und herrsche"
Beispiel: Spielpläne für Turniere
Rekursion: Backtracking
Prinzip des Backtracking
Beispiel: Das Acht-Damen-Problem
Beispiel: Tic Tac Toe mit Backtracking
Dynamische Programmierung
Das Rucksackproblem
Rekursive Lösung des Rucksackproblems
Prinzip der dynamischen Programmierung
Parallele und verteilte Berechnungen
Grundlagen
Modell der Petri-Netze
Definition von Petri-Netzen
Formalisierung von Petri-Netzen
Das Beispiel der fünf Philosophen
Programmieren nebenläufiger Abläufe
Koordinierte Prozesse
Programmieren mit Semaphoren
Philosophenproblem mit Semaphoren
Verklemmungsfreie Philosophen.
Nebenläufige Berechnungen in Java
Threads und wechselseitiger Ausschluss
Parallelisierung in Java
Das Philosophenproblem in Java
Literaturhinweise zum Teil II
III Datenstrukturen
Abstrakte Datentypen
Signaturen und Algebren
Algebraische Spezifikation
Spezifikationen und Modelle
Termalgebra und Quotiententermalgebra
Probleme mit initialer Semantik
Beispiele für abstrakte Datentypen
Der Kellerspeicher (Stack)
Beispiel für Kellernutzung
Die Warteschlange (Queue)
Entwurf von Datentypen
Klassen, Schnittstellen und Objekte in Java
Grundzüge der Objektorientierung
Klassen und Objekte in Java
Vererbung
Abstrakte Klassen und Schnittstellen
Ausnahmen
Umsetzung abstrakter Datentypen
Lambda-Ausdrücke
Grundlegende Datenstrukturen
Stack und Queue als Datentypen
Implementierung des Stacks
Implementierung der Queue
Bewertung der Implementierungen
Verkettete Listen
Doppelt verkettete Listen
Skip-Listen
Das Iterator-Konzept
Java Collection Framework
Generics in Java
Bäume
Bäume: Begriffe und Konzepte
Binärer Baum: Datentyp und Basisalgorithmen
Der Datentyp "Binärer Baum"
Algorithmen zur Traversierung
Suchbäume
Suchen in Suchbäumen
Einfügen und Löschen
Komplexität der Operationen
Ausgeglichene Bäume
Rot-Schwarz-Bäume
AVL-Bäume
B-Bäume
Digitale Bäume
Tries
Patricia-Bäume
Praktische Nutzung von Bäumen
Sortieren mit Bäumen: HeapSort
Sets mit binären Suchbäumen
Hashverfahren
Grundprinzip des Hashens
Grundlagen und Verfahren
Hashfunktionen
Behandlung von Kollisionen
Aufwand beim Hashen
Hashen in Java
Cuckoo-Hashing
Dynamische Hashverfahren
Grundideen für dynamische Hashverfahren
Erweiterbares Hashen
Umsetzung des erweiterbaren Hashens
Graphen
Arten von Graphen.
Ungerichtete Graphen
Gerichtete Graphen
Gewichtete Graphen
Weitere Eigenschaften von Graphen
Realisierung von Graphen
Knoten- und Kantenlisten
Adjazenzmatrix
Graphen als dynamische Datenstrukturen
Transformationen zwischen Darstellungen
Vergleich der Komplexität
Eine Java-Klasse für Graphen
Ausgewählte Graphenalgorithmen
Breitendurchlauf
Tiefendurchlauf
Zyklenfreiheit und topologisches Sortieren
Algorithmen auf gewichteten Graphen
Kürzeste Wege
Dijkstras Algorithmus
A*-Algorithmus
Kürzeste Wege mit negativen Kantengewichten
Maximaler Durchfluss
Der Ford-Fulkerson-Algorithmus
Zentralitätsanalyse in Graphen
Weitere Fragestellungen für Graphen
Algorithmen auf Texten
Probleme der Worterkennung
Knuth-Morris-Pratt
Boyer-Moore
Pattern Matching
Endliche Automaten
Java-Klassen für reguläre Ausdrücke
Ähnlichkeit von Zeichenketten
Levenshtein-Distanz
n-Gramme
Anwendungen der Ähnlichkeitsvergleiche
Literaturhinweise zum Teil III
Quelltext der Klasse IOUtils
Abbildungsverzeichnis
Tabellenverzeichnis
Algorithmenverzeichnis
Beispielverzeichnis
Programmverzeichnis
Literaturverzeichnis
Index.
Notes:
Online resource; Title from title page (viewed October 28, 2020)
PublicationDate: 20201028
Description based on publisher supplied metadata and other sources.
ISBN:
9781098128272
1098128273
9783969100660
3969100666
OCLC:
1204139307

The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account