Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen ¨ 13. Ubung minimale Spannb¨ aume, topologische Sortierung, AVL-B¨ aume Clemens Lang ¨ Ubungen zu AuD 4. Februar 201...
Author: Tobias Albert
1 downloads 1 Views 414KB Size
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