Teil V Grundlegende Datenstrukturen

Werbung
Teil V
Grundlegende Datenstrukturen
Grundlegende Datenstrukturen
Überblick
1
Einführung
2
Datenstrukturen für Kollektionen
3
Stacks und Queues
4
Bäume, Suchbäume und Hash-Tabellen
5
Allgemeine Graphen
Eike Schallehn
Grundlagen der Informatik für Ingenieure
2008/2009
5–1
Grundlegende Datenstrukturen
Einführung
Datenstrukturen
Immer wiederkehrende Anforderungen an Verwaltung von Daten
im Haupt- und Sekundärspeicher:
◮
◮
◮
typische Anordnungen und Zusammenhänge,
typische Operationen und
immer möglichst effizient!
Vergleichbar Algorithmenmustern für die Verarbeitung von Daten:
„klassische“ Datenstrukturen als Muster für effiziente
Verwaltung von Daten
Darüber hinaus: viele klassische Datenstrukturen oft als direkt
wiederverwendbare Implementierungen in
Programmiersprachenbibliotheken vorhanden
Eike Schallehn
Grundlagen der Informatik für Ingenieure
2008/2009
5–2
Grundlegende Datenstrukturen
Einführung
Beispiele für Datenstrukturen und deren Verwendung
Prüfungslisten mit geordneten Studentendaten
Knoten- und Kantenlisten in BREP-Modellen
Das Inventory einer Computerspielfigur als Menge von
Gegenständen
Verzeichnisbäume zur Verwaltung von Dateien
Straßennetzwerke eines Routenplaners als Graphen
Warteschlangen mit Prozessen für die Prozessverwaltung des
Betriebssystems
Der Programmstack zur Verwaltung lokaler Daten von Funktionen
während der Programmausführung
B-Bäume als Indexe für schnelle Zugriffe in Datenbanksystemen
(→)
Eike Schallehn
Grundlagen der Informatik für Ingenieure
2008/2009
5–3
Grundlegende Datenstrukturen
Einführung
Definition: Datenstrukturen
Definition (Datenstruktur)
Eine Datenstruktur ist eine Anordnungsvorschrift zur Organisation
und Speicherung von Daten, die für bestimmte Klassen von
Anwendungen einen effizienten Zugriff ermöglicht.
Umfasst zwei wesentliche Aspekte:
Schnittstelle: Festlegung der möglichen Operationen und des
Verhaltens als abstrakte Spezifikation (Abstrakte
Datentypen →) oder konkrete Programmierschnittstelle
(z.B. Bibliotheken wie C++ Standard Template Library →)
Implementierung: konkrete Umsetzung in einer Programmiersprache
durch möglichst effiziente Speicherstrukturen und
Algorithmen
Eike Schallehn
Grundlagen der Informatik für Ingenieure
2008/2009
5–4
Grundlegende Datenstrukturen
Einführung
Abstrakte Datentypen
Abstrakte Datentypen (ADTs) als implementierungsunabhängige
Spezifikationmethode der Schnittstelle und der Semantik
Beispiel: Menge
type Set[Item]
operators
create: → Set
is_empty: Set → Bool
insert: Set × Item → Set
is_in: Set × Item → Bool
axioms ∀s : Set, ∀i,j : Item
is_empty (create) = true
is_empty (insert (s, i)) = false
is_in (create, i) = false
is_in (insert (s, i), j) =
if i=j then true else is_in (s, j)
insert(insert(s,i),j) = insert(insert(s,j),i)
insert(insert(s,i),i) = insert(s,i)
Eike Schallehn
Grundlagen der Informatik für Ingenieure
2008/2009
5–5
Grundlegende Datenstrukturen
Einführung
Eigenschaften von Datenstrukturen
Datenstrukturen sind ...
... komplex: werden durch Typkonstruktoren (mit Zeigern, Feldern,
Strukturen, Klassen, etc.) aus einfacheren Strukturen
zusammengesetzt und letztendlich auf Basisdatentypen
(numerische, alphanumerische) zurückgeführt
... dynamisch: können konkrete Ausprägung zur Laufzeit ändern, um
zum Beispiel beliebige Anzahl neuer Fakten
aufzunehmen oder diese aus der Struktur zu entfernen
... wiederverwendbar: erlauben, wenn einmal definiert, den Einsatz für
zahlreiche verschiedene Anwendungen
Eike Schallehn
Grundlagen der Informatik für Ingenieure
2008/2009
5–6
Herunterladen