1 2 3 Abstrakte Datentypen Ziel Information “effizient” zu verwalten! Kapitel 3: Was bedeutet “effizient”? Datenstrukturen Quantitative Ziele Zugriffszeit schnelles Einfügen, Verändern, Löschen, ... (d.i. “Bearbeiten” im weitesten Sinn) der Daten Speicherplatz kompaktes Speichern der Information Qualitative Ziele Unterstützung spezifischer Zugriffsarten auf Eigenschaften bzw. Charakteristiken der Daten VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 3 VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 4 Datenstrukturen Überblick Erfüllung dieser Ziele führte zur Entwicklung von Alle bekannten Datenorganisationsformen bauen auf einigen wenigen einfachen Techniken auf Listen Datenstrukturen Stack, Queue Datenstrukturen dienen zur Verwaltung großer Mengen ähnlicher Objekte Bäume Binärer Baum, B+-Baum, Priority queue Unterschiedliche Datenstrukturen dienen zur Verwaltung unterschiedlicher Objekte, die durch unterschiedliche Eigenschaften charakterisiert sind, daraus folgt: Vektoren Hash Tabelle, Dictionary Für unterschiedliche Problemstellungen unterschiedliche Datenstrukturen! VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 5 VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 6 Liste Eine Liste (list) dient zur Verwaltung einer beliebig Anzahl von Elementen eines einheitlichen Typs. Stack (Keller) Die Elemente werden in einer Sequenz angeordnet, die sich (meist) aus der Eintragereihenfolge ableiten lässt (ungeordnet). Der Aufwand des Zugriffes auf ein einzelnes Element ist abhängig von der Position in der Sequenz. Elemente werden nach dem LIFO (last-in, first-out) Prinzip verwaltet Anwendungen: Kellerautomaten, Speicherverwaltung, Evaluationsordnung Queue (Schlange) Elemente werden nach dem FIFO (first-in, first-out) Prinzip verwaltet Anwendungen: Warteschlangen, Bufferverwaltung, Prozessmanagement, Stoffwechsel ... Kopf Spezielle Listen Ende Anwendungen sequentielle Datenbestände, große Datenmengen, externe Speicherung VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 1 7 8 Baum Der Baum (tree) stellt eine Generalisierung der Liste auf eine 2-dimensionale Datenstruktur dar. besteht aus Knoten und Kanten Exponentieller Zusammenhang zwischen Tiefe des Baumes und Anzahl der Knoten Anwendungen: allgemeine Schlüsselverwaltung, Haupt- und Externspeichermanagement Spezielle Bäume Binärer Baum Knoten haben max. 2 Nachfolger, Hauptspeicherverwaltung Binärer Suchbaum geordneter binärer Baum, Werteverwaltung Heap ungeordneter binärer Baum, Warteschlangen B+-Baum balanzierter Mehrwegbaum, Externspeicherverwaltung, Datenbanksysteme Trie Prefix-Baum, Zeichenkettenverwaltung, Wörterbücher VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 9 VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 10 Vektor Ein Vektor (vector, Feld) verwaltet eine fix vorgegebene Anzahl von Elementen eines einheitlichen Typs. Hash Tabelle Zugriff auf ein Element über einen ganzzahligen Index (die Position im Vektor) Aufwand des Zugriffes für alle Elemente konstant x0 x1 x2 … xn-1 Spezielle Vektoren Der Index eines Elements wird aus dem Element selbst berechnet (über eine Hashfunktion h(x)) Anwendungen: Verwaltung von Tabellen (Compilertables, Namenslisten, …), bedingt Externspeicher-mangement Dictionary Der Index eines Elementes kann beliebigen Typ haben und wird mit dem Element gemeinsam gespeichert Anwendungen: Verwaltung komplexer (zusammengesetzter) Informationen, Zuordnungslisten xn Anwendungen Verwaltung fix vorgegebener Anreihungen, Strings, math. Konzepte VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 11 VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 12 Vergleichskriterien Dynamik Datenverwaltung Informeller Vergleich Datenstruktur Stärken Schwächen Liste dynamisch beliebige Datenmenge klares Modell geringer Speicherplatz linearer Aufwand der Operationen simples Modell Baum dynamisch beliebige Datenmenge logarithmischer Aufwand der Operationen Balanzierungsalgorithmen aufwendigerer Speicherplatzverbrauch komplexes Modell Vektor dynamisch direkter Elementzugriff konstanter Aufwand der Operationen oft fixe Datenmenge eingeschränkte Operationen Einfügen, Löschen Datenmenge beliebige oder fix Anzahl von Elementen Aufwand Laufzeit der Operationen Speicherplatzverbrauch Modell Operationenumfang VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 2 13 Was nehmen wir mit? Datenorganisation Effizienz Quantität - Qualität Datenstrukturen Typen Vergleichskriterien VO Grundlegende Algorithmen und Datenstrukturen E. Schikuta 3