Algorithmen und Datenstrukturen 1 - 5. Seminar

Werbung
Algorithmen und Datenstrukturen 1
- 5. Seminar Dominic Rose
Bioinformatics Group, University of Leipzig
Wintersemester 2009/10
Outline
5.+6. Übungsserie: 5 Aufgaben, insgesamt 40 Punkte
A17 Baum-Traversierung (14 Punkte)
A18 AVL-Bäume(14 Punkte)
A19 Beweis (4 Punkte)
A20 Beweis (4 Punkte)
A21 Beweis (4 Punkte)
→ Zusammenfassung (Klausur)
Aufgabe 17
Ein Programm erzeugt eine Permutation einer einzugebenden Schlüsselfolge, indem es
die Schlüssel in der gegebenen Reihenfolge in einen anfangs leeren binären Suchbaum
einfügt und anschliessend in einem Durchlauf in Nebenreihenfolge (post-order
traversal) ausgibt.
Welche Ausgabe liefert das Programm bei Eingabe folgender Schlüsselsequenzen?
a) 1 2 3 4
b) 4 3 2 1
c) 3 2 1 4 5
d) 2 1 5 8 4 7 9
e) 6 2 7 3 1 4 5
f) 4 6 2 7 5 3 1
g) 1 2 3 4 5 6 7 9 8
→ 7x2 = 14 Punkte
Wiederholung: Traversieren von Bäumen
Verschiedene Möglichkeiten, die Knoten von Binärbäumen zu
durchlaufen. Man unterscheidet:
• pre-order Hauptreihenfolge: WLR
• in-order symmetrische Reihenfolge: LWR
• post-order Nebenreihenfolge: LRW
Allgemein: Traversieren von Graphen
• Baum: Zyklenfreier Graph
• Breitensuche (BFS - breadth-first-search)
• Tiefensuche (DFS - depth-first-search)
Allgemein: Traversieren von Graphen
• Breitensuche (BFS - breadth-first-search)
Durchlaufen der Knoten eines Graphen geordnet nach der
Entfernung von einem Startknoten. Zuerst werden alle
vom Startknoten direkt durch eine Kante erreichbaren
Knoten besucht, danach die mit zwei Kanten Entfernung,
dann die mit drei usw.
Allgemein: Traversieren von Graphen
• Tiefensuche (DFS - depth-first-search)
Vom Startknoten so weit wie möglich einen gewählten
Pfad entlang gehen. Am Ende eines Zweiges
angekommen, schrittweise zurück gehen, bis man
unbesuchten Teilbaum absteigen kann. Fertig, wenn man
wieder am Startknoten angelangt ist und es keine
unbesuchten direkten Nachbarknoten des Startknotens
mehr gibt. → Backtracking: Solange wie möglich gehen,
wenn man nicht mehr weiter kommt, zurückgehen bis
man einen anderen Weg findet.
Allgemein: Traversieren von Graphen
Aufgabe 17 (a)
post-order = Nebenreihenfolge = LRW
Eingabefolge: 1 2 3 4
Aufgabe 17 (b)
post-order = Nebenreihenfolge = LRW
Eingabefolge: 4 3 2 1
Aufgabe 17 (c)
post-order = Nebenreihenfolge = LRW
Eingabefolge: 3 2 1 4 5
Aufgabe 17 (d)
post-order = Nebenreihenfolge = LRW
Eingabefolge: 2 1 5 8 4 7 9
Aufgabe 17 (e)
post-order = Nebenreihenfolge = LRW
Eingabefolge: 6 2 7 3 1 4 5
Aufgabe 17 (f)
post-order = Nebenreihenfolge = LRW
Eingabefolge: 4 6 2 7 5 3 1
Aufgabe 17 (g)
post-order = Nebenreihenfolge = LRW
Eingabefolge: 1 2 3 4 5 6 7 9 8
Aufgabe 18
Konstruieren Sie zu jeder der in Aufgabe 17 angegebenen Schlüsselfolgen (a-g) einen
AVL-Baum, indem Sie die Schlüssel in der gegebenen Reihenfolge in einen anfangs
leeren AVL-Baum einfügen und nach jeder Einfügung die gegebenfalls notwendigen
Rotationen vornehmen. Zeichnen Sie für jede der Schlüsselfolgen (a-g) nur den
resultierenden Baum. Zwischenschritte brauchen nicht angegeben zu werden.
→ 7x2 = 14 Punkte
Wiederholung: l -balancierter Binärbaum
• Seien Bl (x) und Br (x) die linken und rechten TB eines
Knotens x und h(B) die Höhe eines Baumes B.
• Definition: Ein l-balancierter Binärbaum ist entweder leer
oder es ist ein Baum, bei dem für jeden Knoten x gilt:
|h(Bl (x)) − h(Br (x))| ≤ l .
• l läßt sich als Maß für die zulässige Entartung im
Vergleich zur ausgeglichenen Baumstruktur auffassen.
• 1-balancierter Binärbaum heißt AVL-Baum
Wiederholung: AVL-Baum
• Balancierungskriterium
|h(Bl (x)) − h(Br (x))| ≤ 1 .
• Der Balancierungsfaktor BF(x) eines Knotens x:
BF(x) = h(Bl (x)) − h(Br (x)) .
= Höhendifferenz der Unterbäume von x.
• Einfügen/Löschen von Knoten:
AVL-Kriterium darf nicht verletzt werden, sonst
Reorganisation: Einfach-/Doppelrotation.
Reorganisation: Rotation
4 Fälle:
1. Einfache Rechts-Rotation
2. Einfache Links-Rotation
3. Doppelte Rechts-/Links-Rotation
4. Doppelte Links-/Rechts-Rotation
Reorganisation: Einfachrotation
Einfache Rechts-Rotation:
Reorganisation: Einfachrotation
Einfache Links-Rotation:
Reorganisation: Einfachrotation
Einfachrotation im Allgemeinen:
Reorganisation: Doppelrotation
Doppelte Rechts-/Links-Rotation:
Reorganisation: Doppelrotation
Doppelte Links-/Rechts-Rotation:
AVL-Rebalancierung
Jeweils nach Einfügen oder Löschen eines Knotens i, für alle
Knoten y auf dem Pfad vom Vater von i bis zur Wurzel:
• Berechne BF(y ).
• Falls BF(y ) ≥ +2: Betrachte linken Tochterknoten x von
y . Bei BF(x) ≥ 0, rotiere rechts um y . Sonst
(BF(x) < 0), rotiere zuerst links um x, dann rechts um y .
• Falls BF(y ) ≤ −2: Betrachte rechten Tochterknoten x
von y . Bei BF(x) ≤ 0, rotiere links um y . Sonst
(BF(x) > 0), rotiere zuerst rechts um x, dann links um y .
Aufgabe 18 (a)
Eingabefolge: 1 2 3 4
Aufgabe 18 (a)
Eingabefolge: 1 2 3 4
Aufgabe 18 (b)
Eingabefolge: 4 3 2 1
Aufgabe 18 (b)
Eingabefolge: 4 3 2 1
Aufgabe 18 (c)
Eingabefolge: 3 2 1 4 5
Aufgabe 18 (c)
Eingabefolge: 3 2 1 4 5
Aufgabe 18 (d)
Eingabefolge: 2 1 5 8 4 7 9
Aufgabe 18 (d)
Eingabefolge: 2 1 5 8 4 7 9
Aufgabe 18 (e)
Eingabefolge: 6 2 7 3 1 4 5
Aufgabe 18 (e)
Eingabefolge: 6 2 7 3 1 4 5
Aufgabe 18 (f)
Eingabefolge: 4 6 2 7 5 3 1
Aufgabe 18 (f)
Eingabefolge: 4 6 2 7 5 3 1
Aufgabe 18 (g)
Eingabefolge: 1 2 3 4 5 6 7 9 8
Aufgabe 18 (g)
Eingabefolge: 1 2 3 4 5 6 7 9 8
Aufgabe 19
• Aufgabe: Sei T ein binärer Suchbaum mit paarweise
verschiedenen Schlüsseln. Der Schlüssel x befinde sich in
einem Knoten von T mit zwei nicht-leeren Unterbäumen.
Zeigen Sie: Der Nachfolger von x befindet sich in einem
Knoten mit leerem linken Unterbaum.
Aufgabe 19
• Aufgabe: Sei T ein binärer Suchbaum mit paarweise
verschiedenen Schlüsseln. Der Schlüssel x befinde sich in
einem Knoten von T mit zwei nicht-leeren Unterbäumen.
Zeigen Sie: Der Nachfolger von x befindet sich in einem
Knoten mit leerem linken Unterbaum.
• Lösungsidee: Beweis durch Widerspruch
Seien x, y Knoten im Baum T und y der Nachfolger von x
(y > x) und y habe einen nicht-leeren linken Teilbaum.
Wir zeigen, dass y nicht der Nachfolger von x in T sein
kann.
Aufgabe 19
Es gibt 3 Fälle für die rel. Anordnung von x und y im Baum T:
1.
2.
3.
Aufgabe 19
• Fall 1: x ist im linken Unterbaum des y -Knotens.
Der rechte Unterbaum des x-Knotens ist nicht-leer und
enthält einen Schlüssel z mit x < z < y . Damit ist y
nicht Nachfolger von x.
Aufgabe 19
• Fall 1: x ist im linken Unterbaum des y -Knotens.
Der rechte Unterbaum des x-Knotens ist nicht-leer und
enthält einen Schlüssel z mit x < z < y . Damit ist y
nicht Nachfolger von x.
• Fall 2: y ist im rechten Unterbaum des x-Knotens.
Der linke Unterbaum des y -Knotens ist nicht-leer und
enthält einen Schlüssel z mit x < z < y . Damit ist y
nicht Nachfolger von x.
Aufgabe 19
• Fall 1: x ist im linken Unterbaum des y -Knotens.
Der rechte Unterbaum des x-Knotens ist nicht-leer und
enthält einen Schlüssel z mit x < z < y . Damit ist y
nicht Nachfolger von x.
• Fall 2: y ist im rechten Unterbaum des x-Knotens.
Der linke Unterbaum des y -Knotens ist nicht-leer und
enthält einen Schlüssel z mit x < z < y . Damit ist y
nicht Nachfolger von x.
• Fall 3: Es gibt einen Knoten mit Schlüssel z, so dass sich
der x-Knoten im linken Unterbaum des z-Knotens und y
im rechten Unterbaum des z-Knotens befindet. Dann ist
x < z < y und somit y nicht Nachfolger von x.
Aufgabe 20
Ein binärer Suchbaum T mit n Knoten wird in
Nebenreihenfolge durchlaufen (post-order traversal), was eine
Schlüsselfolge a1 , a2 , . . . , an erzeugt. Die Schlüssel werden
anschliessend in umgekehrter Reihenfolge an , an−1 , . . . , a1 in
einen anfangs leeren binären Suchbaum iterativ eingefügt.
Zeigen Sie, dass der so konstruierte binäre Suchbaum gleich
dem eingegebenen Baum T ist.
Aufgabe 20
Ein binärer Suchbaum T mit n Knoten wird in
Nebenreihenfolge durchlaufen (post-order traversal), was eine
Schlüsselfolge a1 , a2 , . . . , an erzeugt. Die Schlüssel werden
anschliessend in umgekehrter Reihenfolge an , an−1 , . . . , a1 in
einen anfangs leeren binären Suchbaum iterativ eingefügt.
Zeigen Sie, dass der so konstruierte binäre Suchbaum gleich
dem eingegebenen Baum T ist.
Induktion über |T | (Anzahl der Stufen von T).
Aufgabe 20
• B(a) sei der binäre Suchbaum nach Einfügen der
Schlüssel der Sequenz a in einen anfangs leeren Baum.
• P(T ) sei die Schlüsselsequenz aus der
Post-Order-Traversierung des binären Suchbaums T .
• R(a) sei die Sequenz a nach Umkehrung der Reihenfolge.
• Induktionsbehauptung: B ◦ R ◦ P ist die Identität, also
für jeden binären Suchbaum T gilt T = B(R(P(T ))).
Aufgabe 20
Beweis per Induktion über |T |:
• Induktionsvoraussetzung: Für |T | = 0 ist P(T ) die leere
Sequenz, ebenso R(P(T )). Einfügen von nichts in den
leeren Suchbaum ergibt wieder den leeren Baum T .
Aufgabe 20
Beweis per Induktion über |T |:
• Induktionsvoraussetzung: Für |T | = 0 ist P(T ) die leere
Sequenz, ebenso R(P(T )). Einfügen von nichts in den
leeren Suchbaum ergibt wieder den leeren Baum T .
• Induktionsannahme: Sei |T | > 0 und für alle binären
Suchbäume U mit |U| < |T | gelte die Gleichung
U = B(R(P(U))).
• Den linken bzw. rechten Teilbaum von T nennen wir Tl
bzw. Tr , die Wurzel w , so dass T = (Tl , w , Tr ).
Aufgabe 20
Induktionsschluss:
• Dann ist P(T ) = P(Tl ) P(Tr ) w und somit
R(P(T )) = w R(P(Tr )) R(P(Tl )).
• Nach Induktionsannahme ist B(R(P(Tl ))) = Tl und
B(R(P(Tr ))) = Tr .
• Da alle Schlüssel aus der Sequenz R(P(Tr )) grösser als w
und alle Schlüssel aus der Sequenz R(P(Tl )) kleiner als w
sind, finden wir:
B(R(P(T ))) = B( w R(P(Tr )) R(P(Tl )) ) =
(B(R(P(Tl ))), B(w ), B(R(P(Tr ))) = (Tl , w , Tr ) = T .
Aufgabe 21
Seien T1 und T2 binäre Suchbäume, die dieselben Schlüssel
enthalten, jedoch verschiedene Struktur besitzen. Zeigen Sie,
dass sich T1 durch eine geeignete Folge von Rotationen in T2
überführen lässt.
Aufgabe 21
Vorbetrachtungen:
• Für einen Knoten v auf Stufe i > 0 in einem binären
Suchbaum T gibt es eine Rotation R, nach welcher sich
der Knoten v auf Stufe i − 1 befindet.
Aufgabe 21
Vorbetrachtungen:
• Für einen Knoten v auf Stufe i > 0 in einem binären
Suchbaum T gibt es eine Rotation R, nach welcher sich
der Knoten v auf Stufe i − 1 befindet.
• Bezeichne w den Vaterknoten von v . Je nachdem, ob v
linkes oder rechtes Kind von w ist, ist R als Rechts- bzw.
Links-Rotation um w zu wählen.
Aufgabe 21
Vorbetrachtungen:
• Für einen Knoten v auf Stufe i > 0 in einem binären
Suchbaum T gibt es eine Rotation R, nach welcher sich
der Knoten v auf Stufe i − 1 befindet.
• Bezeichne w den Vaterknoten von v . Je nachdem, ob v
linkes oder rechtes Kind von w ist, ist R als Rechts- bzw.
Links-Rotation um w zu wählen.
• Durch Induktion folgt, dass jeder Knoten, der sich
ursprünglich auf Stufe i befunden hat, durch eine Abfolge
von i Rotationen auf Stufe 0 gebracht werden kann, also
zur Wurzel des Baums gemacht werden kann.
Aufgabe 21
Beweis:
• Seien nun T1 und T2 wie in der Aufgabenstellung, wobei
x der Schlüssel in der Wurzel von T2 sei.
Aufgabe 21
Beweis:
• Seien nun T1 und T2 wie in der Aufgabenstellung, wobei
x der Schlüssel in der Wurzel von T2 sei.
• Gemäß Vorbetrachtung kann der Knoten v , der den
Schlüssel x im Baum T1 enthält, durch eine endliche
Abfolge von Rotationen zur Wurzel des Baum gemacht
werden.
Aufgabe 21
Beweis:
• Seien nun T1 und T2 wie in der Aufgabenstellung, wobei
x der Schlüssel in der Wurzel von T2 sei.
• Gemäß Vorbetrachtung kann der Knoten v , der den
Schlüssel x im Baum T1 enthält, durch eine endliche
Abfolge von Rotationen zur Wurzel des Baum gemacht
werden.
• Wenden wir diese Rotationsfolge auf T1 an und nennen
den resultierenden Baum T∗ .
Aufgabe 21
Beweis:
• Seien nun T1 und T2 wie in der Aufgabenstellung, wobei
x der Schlüssel in der Wurzel von T2 sei.
• Gemäß Vorbetrachtung kann der Knoten v , der den
Schlüssel x im Baum T1 enthält, durch eine endliche
Abfolge von Rotationen zur Wurzel des Baum gemacht
werden.
• Wenden wir diese Rotationsfolge auf T1 an und nennen
den resultierenden Baum T∗ .
• Die Wurzel von T∗ enthält den Schlüssel x.
Aufgabe 21
Beweis:
• Seien nun T1 und T2 wie in der Aufgabenstellung, wobei
x der Schlüssel in der Wurzel von T2 sei.
• Gemäß Vorbetrachtung kann der Knoten v , der den
Schlüssel x im Baum T1 enthält, durch eine endliche
Abfolge von Rotationen zur Wurzel des Baum gemacht
werden.
• Wenden wir diese Rotationsfolge auf T1 an und nennen
den resultierenden Baum T∗ .
• Die Wurzel von T∗ enthält den Schlüssel x.
• Dementsprechend enthält der linke Teilbaum von T∗
dieselben Schlüssel wie der linke Teilbaum von T2 ,
nämlich genau diejenigen, die kleiner als x sind.
Aufgabe 21
Beweis:
• Entsprechend enthalten die rechten Teilbäume von T∗
und T2 beide genau die Schlüssel größer als x.
Aufgabe 21
Beweis:
• Entsprechend enthalten die rechten Teilbäume von T∗
und T2 beide genau die Schlüssel größer als x.
• Daher können wir nun die Vorbetrachtung separat auf
den linken und den rechten Teilbaum anwenden und
anschliessend auf deren Teilbäume und so weiter.
Aufgabe 21
Beweis:
• Entsprechend enthalten die rechten Teilbäume von T∗
und T2 beide genau die Schlüssel größer als x.
• Daher können wir nun die Vorbetrachtung separat auf
den linken und den rechten Teilbaum anwenden und
anschliessend auf deren Teilbäume und so weiter.
• Nach der i-ten solchen Rekursion ist der resultierende
Baum auf den Stufen 0 bis i − 1 gleich dem Baum T2 .
Aufgabe 21
Beweis:
• Entsprechend enthalten die rechten Teilbäume von T∗
und T2 beide genau die Schlüssel größer als x.
• Daher können wir nun die Vorbetrachtung separat auf
den linken und den rechten Teilbaum anwenden und
anschliessend auf deren Teilbäume und so weiter.
• Nach der i-ten solchen Rekursion ist der resultierende
Baum auf den Stufen 0 bis i − 1 gleich dem Baum T2 .
• Daher sind maximal h(T2 ) Rekursionen nötig, um T2 aus
T1 durch Rotationen zu erzeugen.
Klausur
03.02.2010, 17:15 - 18:45 Uhr, HS 8+9
• Asymptotische Komplexität
• Master-Theorem
• Suchen
• Sortieren
• Bäume
• Hashing
Wiederholung
• Groß-Oh-Notation: bringt zum Ausdruck, dass eine
Funktion f (n) höchstens so schnell wächst wie eine
andere Funktion g (n).
• Definition: Funktion f (n) ist in der Menge O(g (n)),
wenn es ein c > 0 und ein n0 ∈ N gibt, so dass für alle
n ≥ n0 gilt: f (n) ≤ c · g (n)
• Groß-Omega-Notation: f (n) wächst mindestens so
schnell wie g (n).
Wiederholung
Herunterladen