Algorithmen und Datenstrukturen 13. Übung minimale Spannbäume, topologische Sortierung, AVL-Bäume Clemens Lang Übungen zu AuD 4. Februar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 1 / 14
Organisatorisches Klausur 2. Februar, :00 Uhr spätestens :4 Uhr da sein Raumeinteilung auf der AuD-Seite Terminplan Nächste Woche: Klausurvorbereitung Klausur aus dem SS 200 oder WS 200/0 Letzter Vorlesungstermin: Vorstellung einer Beispielklausur Heute: Besprechung der Evaluationsergebnisse Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 2 / 14
Organisatorisches Klausur 2. Februar, :00 Uhr spätestens :4 Uhr da sein Raumeinteilung auf der AuD-Seite Terminplan Nächste Woche: Klausurvorbereitung Klausur aus dem SS 200 oder WS 200/0 Letzter Vorlesungstermin: Vorstellung einer Beispielklausur Heute: Besprechung der Evaluationsergebnisse Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 2 / 14
Minimale Spannbäume: Algorithmus von Prim Minimale Spannbäume Teilmenge von Kanten eines Graphen, die alle Knoten untereinander verbindet, dabei aber die minimale Summe von Kantengewichten hat Algorithmus von Prim Auf ungerichteten, zusammenhängenden, gewichteten Graphen Vorgehensweise: Wähle beliebigen Knoten als Startknoten Solange der Teilgraph noch nicht alle Knoten erreicht: Wähle billigste erreichbare Kante, die zu einem neuen Knoten führt Füge 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 (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 3 / 14
Minimale Spannbäume: Algorithmus von Prim Minimale Spannbäume Teilmenge von Kanten eines Graphen, die alle Knoten untereinander verbindet, dabei aber die minimale Summe von Kantengewichten hat Algorithmus von Prim Auf ungerichteten, zusammenhängenden, gewichteten Graphen Vorgehensweise: Wähle beliebigen Knoten als Startknoten Solange der Teilgraph noch nicht alle Knoten erreicht: Wähle billigste erreichbare Kante, die zu einem neuen Knoten führt Füge 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 (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 3 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Prim (2) A D 6 1 B F E 11 C G Gesamtgewicht des Spannbaums: 3 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 4 / 14
Minimale Spannbäume: Algorithmus von Kruskal Algorithmus von Kruskal Ebenfalls auf ungerichteten, zusammenhängenden, gewichteten Graphen Wähle aus den noch nicht ausgewählten Kanten die leichteste Kante, die keinen Zyklus mit den bereits gewählten Kanten erzeugt Aufwand O( E log E ) oder O( E log V ) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
Minimale Spannbäume: Algorithmus von Kruskal (2) A D 6 1 B F E 11 C G Gesamtgewicht des Spannbaums: 3 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 6 / 14
AVL-Bäume (13.2, 13.4) Begriffe Grundidee: Binärer Suchbaum Vermeidung von Ungleichgewichten durch automatisches Balancieren AVL-Eigenschaft: hoehe(linkerteilbaum) hoehe(rechterteilbaum) 1 AVL-Eigenschaft gilt für jeden beliebigen Teilbaum Baum ist AVL-Baum keine unbalancierten Bäume möglich, Operationen bleiben schnell Balancieren braucht nur Konstanten zusätzlichen Aufwand Höhe Anzahl der Ebenen unter dem Knoten Balancefaktor h links h rechts Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 / 14
AVL-Bäume (13.2, 13.4) Begriffe Grundidee: Binärer Suchbaum Vermeidung von Ungleichgewichten durch automatisches Balancieren AVL-Eigenschaft: hoehe(linkerteilbaum) hoehe(rechterteilbaum) 1 AVL-Eigenschaft gilt für jeden beliebigen Teilbaum Baum ist AVL-Baum keine unbalancierten Bäume möglich, Operationen bleiben schnell Balancieren braucht nur Konstanten zusätzlichen Aufwand Höhe Anzahl der Ebenen unter dem Knoten Balancefaktor h links h rechts Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 / 14
AVL-Bäume: 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 (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 / 14
AVL-Bäume: 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 (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 / 14
AVL-Bäume: 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 (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 / 14
Topologische Sortierung Nur auf gerichteten azyklischen Graphen, sog. DAGs a möglich Auflösung von Abhängigkeiten zwischen Knoten Vorgehensweise: 1 Suche Knoten ohne Eingangskante 2 Markiere und entferne Knoten 3 Wiederhole bis Graph leer a engl. directed acyclic graph Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 / 14
Topologische Sortierung (2) J Ho Sch Sh So He Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Topologische Sortierung (2) J Ho Sch 1 Sh So He Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Topologische Sortierung (2) J Ho Sch 1 Sh 2 So He Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Topologische Sortierung (2) J Ho Sch 1 Sh 2 So 3 He Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Topologische Sortierung (2) J 4 Ho Sch 1 Sh 2 So 3 He Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Topologische Sortierung (2) J 4 Ho Sch 1 Sh 2 So 3 He Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Topologische Sortierung (2) 6 J 4 Ho Sch 1 Sh 2 So 3 He Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Topologische Sortierung (2) 6 J 4 Ho Sch 1 Sh 2 So 3 He Mögliche Reihenfolge: Sh, So, He, Ho, Sch, J Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 10 / 14
Traversierung von Graphen Tiefensuche Vorgehensweise zur Traversierung eines Knotens und seiner Kindknoten: 1 d f s ( node ) : 2 i f ( node i s n u l l ) r e t u r n ; 3 p r e f i x W o r k ( node ) ; 4 d f s ( node >l e f t C h i l d ) ; i n f i x W o r k ( node ) ; 6 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 (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 11 / 14
Traversierung von Graphen (2) Breitensuche 1 b f s ( node ) : 2 // r e p l a c e queue by s t a c k to g e t depth f i r s t s e a r c h 3 queue := { node } 4 w h i l e ( not queue >empty ( ) ) : elem := queue >pop ( ) 6 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 (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 12 / 14
Nachbesprechung von Blatt 10, 11, 12 10 ADTs, Freies Programmieren: Quilt 11 Simple Scheduler, Radixsort, Mergesort 12 Hashes, dynamische Reihung, Quicksort, RingBuffer Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 13 / 14
Nachbesprechung von Blatt 10, 11, 12 10 ADTs, Freies Programmieren: Quilt 11 Simple Scheduler, Radixsort, Mergesort 12 Hashes, dynamische Reihung, Quicksort, RingBuffer Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 13 / 14
Nachbesprechung von Blatt 10, 11, 12 10 ADTs, Freies Programmieren: Quilt 11 Simple Scheduler, Radixsort, Mergesort 12 Hashes, dynamische Reihung, Quicksort, RingBuffer Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 13 / 14
Ende Guten Appetit! Spaghetti Bolognese mit Reibekäse 1,60 Fränkischer Sauerbraten R 1,0 Sellerieschnitzel mit Brokkolisoße V 1,60 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 4. Februar 2010 14 / 14