Logische Datenstrukturen

Werbung
Logische Datenstrukturen
• Lineare Listen
• Stapel, Warteschlangen
• Binärbäume
Datenorganisation 2006
Logische Datenstrukturen
Seite 1
Klöditz
Hochschule Anhalt (FH)
Lineare Liste
Begriffe
first
key
next
key
content
next
key
content
next
key
content
next
key
content
NULL
• Funktion:
content
– sequentielle Verkettung von Datensätzen
– Ordnungsprinzip: Schlüssel
• Begriffe:
–
–
–
–
–
first
key
next
content NULL -
Klöditz
Hochschule Anhalt (FH)
Anker, Wurzel; Adresse des logischen Listenanfangs
Schlüssel; Ordnungskriterium
Adresse des logischen Nachfolgers
Datensatz-Inhalt
leere Adresse; logisches Ende der Liste
Datenorganisation 2006
Logische Datenstrukturen
Seite 2
Lineare Liste
Beispiel
*Biber
Biber
*Dachs
content
Dachs
*Eule
Eule
content
*Maus
Maus
*Uhu
Uhu
content
NULL
content
content
Datenorganisation 2006
Logische Datenstrukturen
Seite 3
Klöditz
Hochschule Anhalt (FH)
Operationen in linearen Listen
Einfügen am Anfang
Adler
*Biber
content
*Adler
Biber
*Dachs
Dachs
content
*Eule
Eule
content
*Maus
Maus
content
*Uhu
Uhu
content
NULL
content
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 4
Operationen in linearen Listen
Einfügen am Anfang
• Algorithmus:
– Speichern des neuen Listenelementes
auf beliebigen freien Speicherplatz
– Adresse der bisherigen Wurzel in next
des neuen Listenelementes eintragen
– Adresse des neuen Listenelementes in first eintragen
Datenorganisation 2006
Logische Datenstrukturen
Seite 5
Klöditz
Hochschule Anhalt (FH)
Operationen in linearen Listen
Einfügen innerhalb der Liste
Adler
*Biber
Katze
content
*Maus
content
*Adler
Biber
*Dachs
Dachs
content
*Eule
Eule
content
*Katze
Maus
content
*Uhu
Uhu
content
NULL
content
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 6
Operationen in linearen Listen
Einfügen innerhalb der Liste
• Algorithmus:
– Speicherung des neuen Elementes
auf beliebigen freien Speicherplatz
– Suchen der Einfügestelle (sequentielles Durchlaufen der Liste)
– Adresse des logischen Nachfolgers aus next des logischen
Vorgängers in next des neuen Elementes eintragen
– Adresse des neuen Elementes in next des logischen Vorgängers
eintragen
Datenorganisation 2006
Logische Datenstrukturen
Seite 7
Klöditz
Hochschule Anhalt (FH)
Operationen in linearen Listen
Einfügen am Ende der Liste
Adler
*Biber
content
Katze
Zebra
*Maus
NULL
content
content
*Adler
Biber
*Dachs
Dachs
content
*Eule
Eule
content
*Katze
Maus
content
*Uhu
Uhu
content
*Zebra
content
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 8
Operationen in linearen Listen
Einfügen am Ende der Liste
• Algorithmus:
– Speicherung des neuen Elementes
auf beliebigen freien Speicherplatz
– Suchen der Einfügestelle (sequentielles Durchlaufen der Liste)
– Adresse NULL aus next des logischen Vorgängers in next des
neuen Elementes eintragen
– Adresse des neuen Elementes in next des bisherigen logisch
letzten Elementes eintragen
Datenorganisation 2006
Logische Datenstrukturen
Seite 9
Klöditz
Hochschule Anhalt (FH)
Operationen in linearen Listen
Löschen eines Elementes der Liste
Adler
*Biber
content
Katze
Zebra
*Maus
NULL
content
content
*Adler
Biber
*Dachs
Dachs
content
*Katze
Eule
content
*Katze
Maus
content
*Uhu
Uhu
content
*Zebra
content
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 10
Operationen in linearen Listen
Löschen eines Elementes der Liste
• Algorithmus:
– Suchen des zu löschenden Elementes
(sequentielles Durchlaufen der Liste)
– Adresse des logischen Nachfolgers des zu löschenden Elementes
aus next dieses Elementes in next des logischen Vorgängers
eintragen (anstelle der Adresse des zu löschenden Elementes)
– Speicherplatz des gelöschten Elementes freigeben
Datenorganisation 2006
Logische Datenstrukturen
Seite 11
Klöditz
Hochschule Anhalt (FH)
Lineare Liste
Implementierung
• Voraussetzung: Direktzugriffsspeicher
• Notwendiger Speicherplatz:
– für n Datensätze zu je m Bytes = n*m Bytes
– Speicherplatz für Anker
• Verwaltung des Speichers
– durch Programm
– durch Betriebssystem
• Satzaufbau:
– Schlüsselattribut
– Satzinhalt / Daten
– Zeiger auf logisch nächsten Datensatz
Klöditz
Hochschule Anhalt (FH)
key
content
next
Datenorganisation 2006
Logische Datenstrukturen
Seite 12
Lineare Liste
Implementierung
• Probleme:
– aufwändiges Durchsuchen:
Rückwärtsverkettung zusätzlich, Mehrfachverkettung
– Speicherverwaltung der leeren Datensätze:
Bitmap (1 bit/Datensatz) oder
Lineare Liste freier Datensätze
(Ankeradresse + Kettung der leeren Datensätze) oder ... ?
– logische Reihenfolge entspricht nicht physischer Reihenfolge:
Reorganisation = Herstellen der Übereinstimmung von logischer
und physischer Folge
Datenorganisation 2006
Logische Datenstrukturen
Seite 13
Klöditz
Hochschule Anhalt (FH)
Lineare Liste
Mehrfach-Verkettung
first
key
next
key
content
next
key
content
next
key
content
next
key
content
NULL
NULL
prev
content
prev
prev
prev
last
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 14
Stapel
LIFO: last in - first out
stack
end
Prinzip: last in - first out (LIFO)
• Synonyme:
– Kellerspeicher, Stapel, stack
• Operationen:
– Hinzufügen eines Eintrags:
– Entnehmen eines Eintrags:
• Zustände des Stacks:
stack[end] = new; end++;
last = stack[end-1]; end--;
voll; leer
Datenorganisation 2006
Logische Datenstrukturen
Seite 15
Klöditz
Hochschule Anhalt (FH)
Warteschlange
FIFO: first in - first out
queue
front
end
Prinzip: first in - first out (FIFO)
• Synonyme: Wartschlange, Schlange, queue
• Operationen:
– Hinzufügen eines Eintrags:
queue[end] = new; end++;
– Entnehmen eines Eintrags:
old = queue[front]; front++;
• Zustände der Warteschlange: voll; leer
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 16
Binärbäume
Begriffe
• Baum (tree)
= endlicher, schwach zusammenhängender Graph,
für dessen Knoten gilt:
• genau ein Knoten hat keinen Eingang (Wurzel, root)
• alle anderen Knoten haben genau einen Eingang
• endlicher Graph
= Menge Knoten N (nodes) + Menge Kanten E (edges)
• Binärer Baum (binary tree)
= geordneter Baum, der leer ist oder für dessen Knoten gilt:
• außer den Endknoten haben alle Knoten genau zwei Ausgänge
• maximal ein "Kind" jedes "Elternknotens" ist leer
Datenorganisation 2006
Logische Datenstrukturen
Seite 17
Klöditz
Hochschule Anhalt (FH)
Binärbäume
Begriffe
• Vollständiger Baum:
– alle Knoten besetzt
Wurzel
Tiefe 0
5
Tiefe 1
Tiefe 2
3
Unterbaum
7
1
4
6
9
Blätter
• Unausgeglichener Baum:
7
– ungleiche Tiefe
Vorgänger
Direkter Nachfolger
5
3
1
19
6
4
Brüder
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 18
Binärbäume
Begriffe
• Ausgeglichener Baum:
– gleiche Tiefe oder
max. eine Ebene
Unterschied
7
5
19
4
6
8
2
Datenorganisation 2006
Logische Datenstrukturen
Seite 19
Klöditz
Hochschule Anhalt (FH)
Binärer Suchbaum
Erzeugen
Ausgangspunkt: Liste
5 2 7 4 1
4 1
5
NULL
2
NULL
2 7 4 1
2
NULL
NULL
2
7
2
Klöditz
Hochschule Anhalt (FH)
NULL
1
NULL
NULL
5
5
NULL
NULL
NULL
1
NULL
7 4 1
NULL
7
4
NULL
5
NULL
5
NULL
7
4
NULL NULL
NULL
NULL
NULL
Datenorganisation 2006
Logische Datenstrukturen
Seite 20
Binärer Suchbaum
Hinzufügen
• Ausgangspunkt:
– ausgeglichener Binärbaum
7
• Hinzufügen:
– 20 3 29 17 11 24 18
(in dieser Reihenfolge)
5
• Algorithmus:
19
4
6
8
20
– Durchlaufen des Baumes
bis zu einem Blatt
2
– Anhängen des neuen Knotens
29
9
3
17
11
24
18
Datenorganisation 2006
Logische Datenstrukturen
Seite 21
Klöditz
Hochschule Anhalt (FH)
Binärer Suchbaum
Löschen
• Löschen:
– 3 20 7 (in dieser Reihenfolge)
• Algorithmus:
7
– Durchlaufen des Baumes bis zum
zu löschenden Knoten
– Fallunterscheidung:
• Endknoten
• Knoten
mit nur einem Nachfolger:
2
Nachfolger ersetzt den zu
löschenden Knoten
• Knoten mit zwei Nachfolgern:
"größter" Knoten im "linken"
Unterbaum bzw. "kleinster" Knoten
im "rechten" Unterbaum ersetzt
den zu löschenden Knoten
Klöditz
Hochschule Anhalt (FH)
5
4
19
6
8
20
29
9
3
17
11
24
18
Datenorganisation 2006
Logische Datenstrukturen
Seite 22
Binärer Suchbaum
Löschen
• Ergebnis (1. Schritt):
7
7
5
4
19
6
5
8
2
4
20
29
9
3
17
19
6
8
2
29
9
24
11
24
17
18
11
18
Datenorganisation 2006
Logische Datenstrukturen
Seite 23
Klöditz
Hochschule Anhalt (FH)
Binärer Suchbaum
Löschen
• Ergebnis (2. Schritt):
7
6
5
4
2
19
6
5
29
8
9
24
4
2
19
29
8
9
17
11
Klöditz
Hochschule Anhalt (FH)
24
17
18
11
18
Datenorganisation 2006
Logische Datenstrukturen
Seite 24
Binärer Suchbaum
Durchmustern / Durchlaufen
•
•
Durchmustern berührt alle Knoten des
Baumes, Durchlaufen nur einen Teil
Durchmustern in Präordnung:
– Reihenfolge:
Wurzel des Unterbaums Æ links Æ rechts
– also:
(7) (5 (4 2 _) 6) (19 (8 _ 9) _)
•
7
symmetrisches Durchmustern:
5
– Reihenfolge:
links Æ Wurzel Æ rechts
– also:
((2 4 _) 5 6) 7 (_ 8 9) 19 _)
•
Durchmustern in Postordnung:
– Reihenfolge:
links Æ rechts Æ Wurzel
– also:
((2 _ 4) 6 5) ((_ 9 8) _ 19) 7
•
4
19
6
8
2
9
Durchlaufen eines Baumes:
– von der Wurzel zu einem definierten Knoten
"laufen"
Datenorganisation 2006
Logische Datenstrukturen
Seite 25
Klöditz
Hochschule Anhalt (FH)
Binärer Suchbaum
Suchen / Durchlaufen
• Algorithmus:
– Durchlaufen des Baumes bis zum
gesuchten Knoten oder zu einem Blatt
(bzw. "nicht gefunden")
7
• Beispiel:
maxTiefe = 20
– Anzahl der Knoten eines Baumes:
nB = 2(maxTiefe + 1) -1
5
4
– Durchschnittliche Anzahl der Zugriffe:
vB = ( maxTiefe+1) / 2
Klöditz
Hochschule Anhalt (FH)
6
8
10,5
– Anzahl der Zugriffe in einer Liste
(zum Vergleich):
v L = ( nL + 1 ) / 2
19
2.097.151
2
9
1.048.576
Datenorganisation 2006
Logische Datenstrukturen
Seite 26
Syntaxbäume
• Darstellung der Syntax arithmetischer Ausdrücke:
x+y
x*y
+
*
x
y
x
a*(b+c)
y
a*((b+c)*(d*e-f/g))
*
a
*
+
a
b
y*
c
+
x
y-
b
c
x*
xy/
d
e
f
g
Datenorganisation 2006
Logische Datenstrukturen
Seite 27
Klöditz
Hochschule Anhalt (FH)
Binärbäume
Speichern von Binärbäumen
Prinzip:
key
Inhalt
*left
key
*right
key
Inhalt
*left
Beispiel:
Inhalt
*right
*left
*right
7
7
Inhalt
*5
5
*19
19
5
4
6
Inhalt
*4
2
19
Inhalt
8
9
*6
4
*8
8
Inhalt
Inhalt
*2
NULL
6
NULL
NULL
Inhalt
NULL
NULL
2
Inhalt
NULL
Klöditz
Hochschule Anhalt (FH)
*9
9
Inhalt
NULL
NULL
NULL
Datenorganisation 2006
Logische Datenstrukturen
Seite 28
Binärbaum
Balancierte Bäume
• Problem:
– zufällig erzeugte Bäume können sehr unsymmetrisch sein
– Suchoperationen werden dann aufwändig
• Lösung:
– zusätzliche Bedingungen beim Einfügen und Löschen
berücksichtigen
• Beispiel:
– AVL-Bäume
Datenorganisation 2006
Logische Datenstrukturen
Seite 29
Klöditz
Hochschule Anhalt (FH)
Binärbaum
AVL-Bäume
• zurückzuführen auf Adelson-Velskij und Landis (1962)
• Definition:
– Für jeden Knoten p eines AVL-Baumes gilt, dass sich die Höhe des
linken Teilbaumes maximal um 1 von der des rechten Teilbaumes
unterscheidet.
• Besonderheiten:
– Suchen in AVL-Bäumen geht mit O(log N) bei N Datensätzen
– Nach jedem Einfügen und Löschen muss überprüft werden, ob
noch ein AVL-Baum vorliegt; sonst Wiederherstellung durch
"Rotation" oder "Doppelrotation".
Klöditz
Hochschule Anhalt (FH)
Datenorganisation 2006
Logische Datenstrukturen
Seite 30
Herunterladen