Algorithmen und Datenstrukturen ¨ 13. Ubung minimale Spannb¨ aume, topologische Sortierung, AVL-B¨ aume
Clemens Lang ¨ Ubungen zu AuD
4. Februar 2010
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
1 / 14
Organisatorisches
Klausur 25. Februar, 8:00 Uhr sp¨atestens 7:45 Uhr da sein Raumeinteilung auf der AuD-Seite
Terminplan N¨ achste Woche: Klausurvorbereitung Klausur aus dem SS 2009 oder WS 2008/09
Letzter Vorlesungstermin: Vorstellung einer Beispielklausur Heute: Besprechung der Evaluationsergebnisse
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
2 / 14
Organisatorisches
Klausur 25. Februar, 8:00 Uhr sp¨atestens 7:45 Uhr da sein Raumeinteilung auf der AuD-Seite
Terminplan N¨ achste Woche: Klausurvorbereitung Klausur aus dem SS 2009 oder WS 2008/09
Letzter Vorlesungstermin: Vorstellung einer Beispielklausur Heute: Besprechung der Evaluationsergebnisse
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
2 / 14
Minimale Spannb¨aume: Algorithmus von Prim Minimale Spannb¨aume Teilmenge von Kanten eines Graphen, die alle Knoten untereinander verbindet, dabei aber die minimale Summe von Kantengewichten hat
Algorithmus von Prim Auf ungerichteten, zusammenh¨angenden, gewichteten Graphen Vorgehensweise: W¨ahle beliebigen Knoten als Startknoten Solange der Teilgraph noch nicht alle Knoten erreicht: W¨ ahle billigste erreichbare Kante, die zu einem neuen“ Knoten f¨ uhrt ” F¨ uge Kante und Knoten dem Graphen hinzu
Laufzeit je nach Implementierung zwischen O(|E | + |V | log|V |) und O((|V | + |E |) log|V |)a a
V ist die Menge der Knoten aus dem Englischen vertices, Plural von vertex E ist die Menge der Kanten aus dem Englischen edges ¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
3 / 14
Minimale Spannb¨aume: Algorithmus von Prim Minimale Spannb¨aume Teilmenge von Kanten eines Graphen, die alle Knoten untereinander verbindet, dabei aber die minimale Summe von Kantengewichten hat
Algorithmus von Prim Auf ungerichteten, zusammenh¨angenden, gewichteten Graphen Vorgehensweise: W¨ahle beliebigen Knoten als Startknoten Solange der Teilgraph noch nicht alle Knoten erreicht: W¨ ahle billigste erreichbare Kante, die zu einem neuen“ Knoten f¨ uhrt ” F¨ uge Kante und Knoten dem Graphen hinzu
Laufzeit je nach Implementierung zwischen O(|E | + |V | log|V |) und O((|V | + |E |) log|V |)a a
V ist die Menge der Knoten aus dem Englischen vertices, Plural von vertex E ist die Menge der Kanten aus dem Englischen edges ¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
3 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Prim (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
11
G
Gesamtgewicht des Spannbaums: 39 ¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
4 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal
Algorithmus von Kruskal Ebenfalls auf ungerichteten, zusammenh¨angenden, gewichteten Graphen W¨ahle aus den noch nicht ausgew¨ahlten Kanten die leichteste Kante, die keinen Zyklus mit den bereits gew¨ahlten Kanten erzeugt Aufwand O(|E | log|E |) oder O(|E | log|V |)
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
5 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
¨ Clemens Lang (Ubungen zu AuD)
11
Algorithmen und Datenstrukturen
G
4. Februar 2010
6 / 14
Minimale Spannb¨aume: Algorithmus von Kruskal (2)
A 7 8
B
5
C
7 9
D
5
15
E
6
9 8
F
11
G
Gesamtgewicht des Spannbaums: 39 ¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
6 / 14
AVL-B¨aume
(13.2, 13.4)
Grundidee: Bin¨arer Suchbaum Vermeidung von Ungleichgewichten durch automatisches Balancieren AVL-Eigenschaft: |hoehe(linkerTeilbaum) − hoehe(rechterTeilbaum)| ≤ 1 AVL-Eigenschaft gilt f¨ ur jeden beliebigen Teilbaum ⇒ Baum ist AVL-Baum keine unbalancierten B¨aume m¨ oglich, Operationen bleiben schnell Balancieren braucht nur Konstanten zus¨atzlichen Aufwand
Begriffe H¨ohe Anzahl der Ebenen unter dem Knoten Balancefaktor hlinks − hrechts
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
7 / 14
AVL-B¨aume
(13.2, 13.4)
Grundidee: Bin¨arer Suchbaum Vermeidung von Ungleichgewichten durch automatisches Balancieren AVL-Eigenschaft: |hoehe(linkerTeilbaum) − hoehe(rechterTeilbaum)| ≤ 1 AVL-Eigenschaft gilt f¨ ur jeden beliebigen Teilbaum ⇒ Baum ist AVL-Baum keine unbalancierten B¨aume m¨ oglich, Operationen bleiben schnell Balancieren braucht nur Konstanten zus¨atzlichen Aufwand
Begriffe H¨ohe Anzahl der Ebenen unter dem Knoten Balancefaktor hlinks − hrechts
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
7 / 14
AVL-B¨aume: Rotation
(13.2, 13.4)
Einfachrotation Balancefaktoren von letztem balanciertem und erstem unbalancierten Knoten haben gleiches Vorzeichen Rotiere letzten balancierten Knoten Balancefaktor < 0: Linksrotation Balancefaktor > 0: Rechtsrotation
Doppelrotation Balancefaktoren von letztem balanciertem und erstem unbalancierten Knoten haben unterschiedliches Vorzeichen Rotiere zwei mal um vorletzten balancierten Knoten
Beispiel-Applet
tinyurl.com/avltreeapplet Achtung! Balancefaktoren sind in diesem Applet invertiert! ¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
8 / 14
AVL-B¨aume: Rotation
(13.2, 13.4)
Einfachrotation Balancefaktoren von letztem balanciertem und erstem unbalancierten Knoten haben gleiches Vorzeichen Rotiere letzten balancierten Knoten Balancefaktor < 0: Linksrotation Balancefaktor > 0: Rechtsrotation
Doppelrotation Balancefaktoren von letztem balanciertem und erstem unbalancierten Knoten haben unterschiedliches Vorzeichen Rotiere zwei mal um vorletzten balancierten Knoten
Beispiel-Applet
tinyurl.com/avltreeapplet Achtung! Balancefaktoren sind in diesem Applet invertiert! ¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
8 / 14
AVL-B¨aume: Rotation
(13.2, 13.4)
Einfachrotation Balancefaktoren von letztem balanciertem und erstem unbalancierten Knoten haben gleiches Vorzeichen Rotiere letzten balancierten Knoten Balancefaktor < 0: Linksrotation Balancefaktor > 0: Rechtsrotation
Doppelrotation Balancefaktoren von letztem balanciertem und erstem unbalancierten Knoten haben unterschiedliches Vorzeichen Rotiere zwei mal um vorletzten balancierten Knoten
Beispiel-Applet
tinyurl.com/avltreeapplet Achtung! Balancefaktoren sind in diesem Applet invertiert! ¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
8 / 14
Topologische Sortierung
Nur auf gerichteten azyklischen Graphen, sog. DAGsa m¨oglich Aufl¨osung von Abh¨angigkeiten zwischen Knoten Vorgehensweise: 1 2 3 a
Suche Knoten ohne Eingangskante Markiere und entferne Knoten Wiederhole bis Graph leer
engl. directed acyclic graph
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
9 / 14
Topologische Sortierung (2)
J
Ho
Sh
¨ Clemens Lang (Ubungen zu AuD)
Sch
So
Algorithmen und Datenstrukturen
He
4. Februar 2010
10 / 14
Topologische Sortierung (2)
J
Ho
1 Sh
¨ Clemens Lang (Ubungen zu AuD)
Sch
So
Algorithmen und Datenstrukturen
He
4. Februar 2010
10 / 14
Topologische Sortierung (2)
J
Ho
1 Sh
¨ Clemens Lang (Ubungen zu AuD)
Sch
2 So
Algorithmen und Datenstrukturen
He
4. Februar 2010
10 / 14
Topologische Sortierung (2)
J
Ho
1 Sh
¨ Clemens Lang (Ubungen zu AuD)
Sch
2 So
Algorithmen und Datenstrukturen
3 He
4. Februar 2010
10 / 14
Topologische Sortierung (2)
J
4 Ho
1 Sh
¨ Clemens Lang (Ubungen zu AuD)
Sch
2 So
Algorithmen und Datenstrukturen
3 He
4. Februar 2010
10 / 14
Topologische Sortierung (2)
J
4 Ho
1 Sh
¨ Clemens Lang (Ubungen zu AuD)
5 Sch
2 So
Algorithmen und Datenstrukturen
3 He
4. Februar 2010
10 / 14
Topologische Sortierung (2)
6 J
4 Ho
1 Sh
¨ Clemens Lang (Ubungen zu AuD)
5 Sch
2 So
Algorithmen und Datenstrukturen
3 He
4. Februar 2010
10 / 14
Topologische Sortierung (2)
6 J
4 Ho
1 Sh
5 Sch
2 So
3 He
M¨ ogliche Reihenfolge: Sh, So, He, Ho, Sch, J
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
10 / 14
Traversierung von Graphen
Tiefensuche Vorgehensweise zur Traversierung eines Knotens und seiner Kindknoten: 1 2 3 4 5 6 7
d f s ( node ) : i f ( node i s n u l l ) r e t u r n ; p r e f i x W o r k ( node ) ; d f s ( node−> l e f t C h i l d ) ; i n f i x W o r k ( node ) ; d f s ( node−>r i g h t C h i l d ) ; p o s t f i x W o r k ( node ) ;
Mit einem Stack auch iterativ implementierbar
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
11 / 14
Traversierung von Graphen (2)
Breitensuche 1 2 3 4 5 6 7 8
b f s ( node ) : // r e p l a c e queue by s t a c k t o g e t depth− f i r s t −s e a r c h queue := { node } w h i l e ( n o t queue−>empty ( ) ) : elem := queue−>pop ( ) doWork ( elem ) f o r e a c h ( c h i l d i n elem−>c h i l d r e n ) : queue−>add ( c h i l d )
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
12 / 14
Nachbesprechung von Blatt 10, 11, 12
10 11 12
ADTs, Freies Programmieren: Quilt Simple Scheduler, Radixsort, Mergesort Hashes, dynamische Reihung, Quicksort, RingBuffer
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
13 / 14
Nachbesprechung von Blatt 10, 11, 12
10 11 12
ADTs, Freies Programmieren: Quilt Simple Scheduler, Radixsort, Mergesort Hashes, dynamische Reihung, Quicksort, RingBuffer
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
13 / 14
Nachbesprechung von Blatt 10, 11, 12
10 11 12
ADTs, Freies Programmieren: Quilt Simple Scheduler, Radixsort, Mergesort Hashes, dynamische Reihung, Quicksort, RingBuffer
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
4. Februar 2010
13 / 14
Ende
Guten Appetit! Spaghetti Bolognese mit Reibek¨ase Fr¨ankischer SauerbratenR Sellerieschnitzel mit BrokkolisoßeV
¨ Clemens Lang (Ubungen zu AuD)
Algorithmen und Datenstrukturen
1,60 1,90 1,60
4. Februar 2010
14 / 14