Interdisziplinärer Studientag Informatik

Werbung
Interdisziplinärer Studientag Informatik
Dipl.-Inform. D. Kriesel
M.Sc. Dipl.-Ing. (FH) M.comp.Sc. M.A. B.A.
D.M. Meyer
Gymnasium an der Wolfskuhle
D.M. Meyer
1
Ablauf
I.
II.
III.
IV.
V.
VI.
VII.
VIII.
Begrüßung
Teil 1 – Schwarmverhalten
Übungen
Teil 2 – Kürzeste Wege
Übungen
Teil 3 – Synthetische Biologie
Übungen
Fragerunde
D.M. Meyer
2
Wegfindungsprobleme in Natur & Technik
D.M. Meyer
3
Wegfindung: Alltagsbeispiele
1. Ameisen suchen Nahrung, finde
„gute Wege“ und ihr Nest
2. Navigationsgeräte suchen den
,,besten Weg“ von einem
Startpunkt zu einem Zielpunkt
3. Ein Postbote möchte in einer
Rundreise möglichst schnell
fertig werden, muss dabei aber
alle Briefkästen (genau einmal)
besuchen
4. Telefon-/Netzwerkkabel, Rohre
etc. müssen effektiv verlegt
werden (Kosten, Materialbedarf,
Erreichbarkeit, Ausfallsicherheit,
…)
D.M. Meyer
4
Wegfindung: Eine ergiebige Fragestellung
• Wegfindung ist in Natur und
Technik ein häufig
anzutreffendes Problem mit
vielen Detailabwandlungen
• hohe praktische Relevanz
• gutes Beispiel für
– Modellbildung
– Mathematisierung
– Bearbeitung mit Informatik
D.M. Meyer
5
Modellbildung und Problemreduktion
D.M. Meyer
6
Modellbildung: Fokus auf das Wesentliche
D.M. Meyer
7
Modellbildung: Fokus auf das Wesentliche
D.M. Meyer
8
Mathematisierung im Graphenmodell
• alles Unwesentliche fällt weg
• Reduktion auf 3
Strukturelemente
– Knoten
– Kanten
– Gewichte
10
• Ermöglicht mathematische
Behandlung mit theoretischer
Fundierung
(Korrektheitsbeweise etc.)
D.M. Meyer
9
Unsere Aufgabe
>> Finde den schnellsten Weg
von einem Startpunkt zu
einem Zielpunkt <<
Anmerkung:
Gewichte an den Kanten geben
z.B. die Fahrtzeit an
Vorausgesetzt werden positive
Gewichte
D.M. Meyer
10
Ideen?
D.M. Meyer
11
Dijkstra Algorithmus
>> Finde den schnellsten Weg
von einem Startpunkt zu
einem Zielpunkt <<
Der Dijkstra Algorithmus liefert auch
kürzeste Wege von einem
Startknoten zu allen anderen
Knoten des Graphen
Prof. Edsger W. Dijkstra
1930-2002, Niederlande
Turing-Award 1972
D.M. Meyer
12
Dijkstra – Zentrale Ideen (1)
Knotenmenge V (vertices) mit Knoten v
Kantenmenge E (edges) mit Kanten e
Gewicht der Kante e := c(a,b) zwischen a und b
Distanz vom Startknoten s bis zum Knoten w := dist(w)
Graph G(V,E,s)
Vorüberlegungen:
• Auch über „Umwege“ können kürzere Wege zu einem
Knoten entstehen
Unterscheide permanent und temporär markierte
Knoten
• Markiere den Startknoten s als aktiven Knoten permanent,
alle anderen temporär
• Setze die Distanz zu allen Knoten auf unendlich
• Merke dir den Vorgänger für Wegebestimmung
D.M. Meyer
13
Dijkstra – Zentrale Ideen (2)
Zentrale Frage:
Wir haben den Startknoten s als ersten permanenten Knoten
p markiert, wie aber gehen wir nun weiter vor, also welchen
Knoten wählen wir aus?
Lösung: Denjenigen temporär markierten Knoten a mit
minimaler temporärer Distanz.
Warum?
Wir haben a direkt von p aus erreicht. Falls ein kürzerer Weg
von p zu a existieren würde, müsste er über einen
Zwischenknoten zwischen p und a laufen. Deren Abstand zu
p ist aber größer, da wir ja denjenigen Knoten a mit
minimalem Abstand zu p wählen.
D.M. Meyer
14
Dijkstra – Initialisierungsphase
Knotenmenge V (vertices) mit Knoten v
Kantenmenge E (edges) mit Kanten e
Gewicht der Kante e := c(e),
Distanz vom Startknoten s bis zum Knoten w := dist(w)
Temporär markierte Knotenmenge T
Permanent markierte Knoten P
Dijkstra( G(V,E,s) )
INIT:
dist(v) = ∞
dist(s)=0
pred(s)=s
pred(v)=NULL
P={s}, T=V\{s}
D.M. Meyer
für alle Knoten
für alle Knoten außer für s
15
Dijkstra – Hauptphase
Main:
Wiederhole solange es noch temporär markierte Nachbarn von permanent
markierten Knoten gibt
1. Berechne Distanzen aller noch nicht permanent markierten
Nachbarknoten des aktiven Knotens per
Distanz des aktiven Knotens + Kantengewicht der verbindenden Kante
Ist diese Distanz < als die bereits vorhandene, so wird sie
übernommen und der aktive Knoten als Vorgänger eingetragen
2. Wähle Knoten mit minimaler temporärer Distanz und markiere
ihn permanent. Er wird zum aktiven Knoten.
D.M. Meyer
16
Dijkstra Algorithmus: Beispiel (PC)
D.M. Meyer
17
Dijkstra Algorithmus: Notation
Damit man nicht hoffnungslos die Übersicht verliert, notiert man sich den
Ablauf in Tabellenform und überschreibt mit jedem Schritt die Einträge
INIT
T
a
b
c
d
e
f
P
s
dist()
0
∞
∞
∞
∞
∞
∞
pred()
s
NULL
NULL
NULL
NULL
NULL
NULL
D.M. Meyer
18
Dijkstra Algorithmus: Beispiel - Lösung
D.M. Meyer
19
Dijkstra Algorithmus: Übungsphase
D.M. Meyer
20
Dijkstra Algorithmus: Endlösung
D.M. Meyer
21
Dijkstra Algorithmus: Lösungsweg (1)
D.M. Meyer
22
Dijkstra Algorithmus: Lösungsweg (2)
D.M. Meyer
23
Dijkstra Algorithmus: Lösungsweg (3)
D.M. Meyer
24
Dijkstra – Implementierung
Wie sollen die Strukturelemente repräsentiert werden
(Datenstrukturen)?
–
–
–
–
–
–
Knotenmenge V (vertices) mit Knoten v
Kantenmenge E (edges) mit Kanten e
Gewicht der Kante e := c(e)
Distanz vom Startknoten s bis zum Knoten w := dist(w)
Temporär markierte Knotenmenge T
Permanent markierte Knoten P
Was müssen die Datenstrukturen effizient können?
– einfügen, löschen, suchen, sortieren, …
>> Das wirft nochmals eine Reihe weiterer Fragen auf ☺
D.M. Meyer
25
Schlusswort – Wie immer gilt …
Der Unterschied zwischen Theorie
und Praxis ist in der Praxis
größer als in der Theorie
D.M. Meyer
26
Quellen und Literaturempfehlungen
1. Röglin, Heiko: Algorithmen und Berechnungskomplexität I,
Vorlesung, Uni Bonn, WS 2010/2011
2. Delling, Daniel: Algorithmen für Routenplanung, Vorlesung
1, Lehrstuhl für Algorithmik I, Institut für theoretische
Informatik, KIT (Uni Karlsruhe)
3. http://de.wikipedia.org/wiki/Dijkstra-Algorithmus
4. Büsing, Christina: Graphen- und Netzwerkoptimierung,
Spektrum Verlag, 2010
5. Hußmann et al.: Kombinatorische Optimierung erleben,
Vieweg Verlag, 2007
6. Teschl, Teschl: Mathematik für Informatiker, Band 1, 3.
Auflage, Springer Verlag, 2008
D.M. Meyer
27
Herunterladen