23
Algorithmen I Tutorium 1 - 10. Sitzung Dennis Felsing [email protected] www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-06-20

Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Algorithmen ITutorium 1 - 10. Sitzung

Dennis Felsing

[email protected]

www.stud.uni-karlsruhe.de/~ubcqr/algo

2011-06-20

Page 2: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Klausur

Klausuranmeldung jetzt im Studienportal moglich!Klausur am 19.07.

Dennis Felsing Algorithmen I 2/17

Page 3: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Uberblick

1 GraphtraversierungWiederholungBreitensucheBipartite Graphen

2 Kurzeste PfadeAllgemeinesBellman-Ford-AlgorithmusDijkstra-Algorithmus

3 AufgabenJapanische Leiterspiele

Dennis Felsing Algorithmen I 3/17

Page 4: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Wiederholung

Tiefensuche

Vorgehen:

1 Unbesuchten Knoten auswahlen

2 Knoten besuchen und eintragen von wo und wann

3 Rekursiv alle Kind besuchen

4 Eintragen wann abgeschlossen

5 Falls es noch unbesuchte Knoten gibt, zu Schritt 1

Dennis Felsing Algorithmen I 4/17

Page 5: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Wiederholung

Tiefensuche

Vorgehen:

1 Unbesuchten Knoten auswahlen

2 Knoten besuchen und eintragen von wo und wann

3 Rekursiv alle Kind besuchen

4 Eintragen wann abgeschlossen

5 Falls es noch unbesuchte Knoten gibt, zu Schritt 1

Dennis Felsing Algorithmen I 4/17

Page 6: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Breitensuche

Idee

Kurzeste Wege von Wurzel zu allen anderen Knoten finden

Noch einfacher als Tiefensuche:

Vorgehen

1 Wurzel entdecken

2 Alle Nachbarn von Wurzel entdecken

3 Deren noch unbesuchte Nachbarn entdecken

4 ...

Beim Entdecken Distanz zu Wurzel und von wo aus entdecktspeichern.

Es entsteht ein Breitensuchbaum. Eigenschaften?Enthalt nur kurzeste Wege zu Knoten von Wurzel aus

Dennis Felsing Algorithmen I 5/17

Page 7: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Breitensuche

Idee

Kurzeste Wege von Wurzel zu allen anderen Knoten finden

Noch einfacher als Tiefensuche:

Vorgehen

1 Wurzel entdecken

2 Alle Nachbarn von Wurzel entdecken

3 Deren noch unbesuchte Nachbarn entdecken

4 ...

Beim Entdecken Distanz zu Wurzel und von wo aus entdecktspeichern.

Es entsteht ein Breitensuchbaum. Eigenschaften?

Enthalt nur kurzeste Wege zu Knoten von Wurzel aus

Dennis Felsing Algorithmen I 5/17

Page 8: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Breitensuche

Idee

Kurzeste Wege von Wurzel zu allen anderen Knoten finden

Noch einfacher als Tiefensuche:

Vorgehen

1 Wurzel entdecken

2 Alle Nachbarn von Wurzel entdecken

3 Deren noch unbesuchte Nachbarn entdecken

4 ...

Beim Entdecken Distanz zu Wurzel und von wo aus entdecktspeichern.

Es entsteht ein Breitensuchbaum. Eigenschaften?Enthalt nur kurzeste Wege zu Knoten von Wurzel aus

Dennis Felsing Algorithmen I 5/17

Page 9: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Breitensuche

BFS(G , s)

1 for each u ∈ G .V2 u.visited = false3 u.distance = ∞4 u.predecessor = nil5 s.distance = 0; s.visited = true; Q = ∅; Enqueue(Q, s)6 while Q 6= ∅7 u = Dequeue(Q)8 for each v ∈ G .Adj [u]9 if v .visited == false

10 v .visited = true11 v .distance = u.distance + 112 v .predecessor = u13 Enqueue(Q, v)

Dennis Felsing Algorithmen I 6/17

Page 10: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Bipartite Graphen

Definition

Ein Graph ist bipartit, wenn sich seine Knoten in zwei Mengenaufteilen lassen, so dass alle Kanten von einer Menge in die andereverlaufen.

Test

Sei G zusammenhangend:

1 Breitensuche bei beliebigem Knoten starten und diesen mit 0markieren

2 Neu entdeckte Knoten bekommen andere Markierung alsVorganger (0 oder 1)

3 Wiederentdeckte Knoten uberprufen statt einfach ignorieren

Wie lasst sich der Test auf nicht zusammenhangende Graphenerweitern?

Dennis Felsing Algorithmen I 7/17

Page 11: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Kurzeste Pfade

1 Graphtraversierung

2 Kurzeste PfadeAllgemeinesBellman-Ford-AlgorithmusDijkstra-Algorithmus

3 Aufgaben

Dennis Felsing Algorithmen I 8/17

Page 12: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Kurzeste Pfade

Definitionen

Gewicht eines Pfades p =< v0, v1, ...; vk > istw(p) =

∑ki=1 w(vi−1, vi )

Gewicht eines kurzesten Pfades von u nach v :

δ(u, v) =

{min{w(p) : p Pfad von u nach v} falls p ex.

∞ sonst

Kurzester Pfad von u nach v ist p mit w(p) = δ(u, v)

Dennis Felsing Algorithmen I 9/17

Page 13: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Kurzeste Pfade

Initialisierug

Initialize Single Source(G , s)

1 for each v ∈ G .V2 u.distance = ∞3 u.predecessor = nil4 S .distance = 0

Relaxation

Verbesserung des aktuell kurzesten Pfades von s nach v

Relax(u, v ,w)

1 if v .distance > u.distance + w(u, v)2 v .distance = u.distance + w(u, v)3 v .predecessor = u

Dennis Felsing Algorithmen I 10/17

Page 14: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Bellman-Ford-Algorithmus

Allgemeine Losung, auch mit negativen Kantengewichten

Bellman-Ford(G ,w , s)

1 Initialize Single Source(G , s)2 for i = 1 to |G .V | − 13 for each (u, v) ∈ G .E4 Relax(u, v ,w)5 for each (u, v) ∈ G .E6 if v .distance > u.distance + w(u, v)7 return false8 return true

Laufzeit: O(|V | · |E |)

Dennis Felsing Algorithmen I 11/17

Page 15: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Dijsktra-Algorithmus

Voraussetzung: nichtnegative Kantengewichten

Dijsktra(G ,w , s)

1 Initialize Single Source(G , s)2 S = ∅3 Q = G .V4 while Q 6= ∅5 u = Extract-Min(Q)6 S = S ∪ {u}7 for each v ∈ G .Adj [u]8 Relax(u, v ,w)

Laufzeit:

Mit binarem Min-Heap: O((|V |+ |E |) log |V |)Mit Fibonacci-Heap: O(|V | log |V |+ |E |)

Dennis Felsing Algorithmen I 12/17

Page 16: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Aufgaben

1 Graphtraversierung

2 Kurzeste Pfade

3 AufgabenJapanische Leiterspiele

Dennis Felsing Algorithmen I 13/17

Page 17: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Japanische Leiterspiele

Spielbeschreibung

Platziere Sprossen zwischen den Staben, so dass die Nummernoben mit entsprechenden Nummern unten verbunden sind. JedeNummer wandert dabei von oben nach unten und geht uber jedeSprosse, die sie trifft und danach weiter nach unten. Keine zweiSprossen durfen sich beruhren. Verwende so wenige Sprossen wiemoglich.

Beispiel

1 2 3

3 2 1

1 2 3

3 2 1

1 2 3 4

3 4 2 1

1 2 3 4

3 4 2 1

Dennis Felsing Algorithmen I 14/17

Page 18: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Japanische Leiterspiele

Spielbeschreibung

Platziere Sprossen zwischen den Staben, so dass die Nummernoben mit entsprechenden Nummern unten verbunden sind. JedeNummer wandert dabei von oben nach unten und geht uber jedeSprosse, die sie trifft und danach weiter nach unten. Keine zweiSprossen durfen sich beruhren. Verwende so wenige Sprossen wiemoglich.

Beispiel

1 2 3

3 2 1

1 2 3

3 2 1

1 2 3 4

3 4 2 1

1 2 3 4

3 4 2 1

Dennis Felsing Algorithmen I 14/17

Page 19: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Japanische Leiterspiele

Spielbeschreibung

Platziere Sprossen zwischen den Staben, so dass die Nummernoben mit entsprechenden Nummern unten verbunden sind. JedeNummer wandert dabei von oben nach unten und geht uber jedeSprosse, die sie trifft und danach weiter nach unten. Keine zweiSprossen durfen sich beruhren. Verwende so wenige Sprossen wiemoglich.

Beispiel

1 2 3 4

3 4 2 1

Gedanken

Gibt es immer eine Losung?

Wann gibt es eine Losung?

Passendes mathematisches Modell?

Algorithmus? (Korrektheit, Effizienz)

Dennis Felsing Algorithmen I 15/17

Page 20: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Japanische Leiterspiele

Spielbeschreibung

Platziere Sprossen zwischen den Staben, so dass die Nummernoben mit entsprechenden Nummern unten verbunden sind. JedeNummer wandert dabei von oben nach unten und geht uber jedeSprosse, die sie trifft und danach weiter nach unten. Keine zweiSprossen durfen sich beruhren. Verwende so wenige Sprossen wiemoglich.

Beispiel

1 2 3 4

3 4 2 1

Gedanken

Gibt es immer eine Losung?

Wann gibt es eine Losung?

Passendes mathematisches Modell?

Algorithmus? (Korrektheit, Effizienz)

Dennis Felsing Algorithmen I 15/17

Page 21: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Japanische Leiterspiele

Spielbeschreibung

Platziere Sprossen zwischen den Staben, so dass die Nummernoben mit entsprechenden Nummern unten verbunden sind. JedeNummer wandert dabei von oben nach unten und geht uber jedeSprosse, die sie trifft und danach weiter nach unten. Keine zweiSprossen durfen sich beruhren. Verwende so wenige Sprossen wiemoglich.

Beispiel

1 2 3 4

3 4 2 1

Gedanken

Gibt es immer eine Losung?

Wann gibt es eine Losung?

Passendes mathematisches Modell?

Algorithmus? (Korrektheit, Effizienz)

Dennis Felsing Algorithmen I 15/17

Page 22: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Ubersicht

1 GraphtraversierungWiederholungBreitensucheBipartite Graphen

2 Kurzeste PfadeAllgemeinesBellman-Ford-AlgorithmusDijkstra-Algorithmus

3 AufgabenJapanische Leiterspiele

Dennis Felsing Algorithmen I 16/17

Page 23: Algorithmen I - Tutorium 1 - 10. Sitzung · Algorithmen I - Tutorium 1 - 10. Sitzung Author: Dennis Felsing Created Date: 6/26/2011 8:47:17 PM

Graphtraversierung Kurzeste Pfade Aufgaben

Klausur

Klausuranmeldung jetzt im Studienportal moglich!Klausur am 19.07.

Dennis Felsing Algorithmen I 17/17