8. Übung zu Algorithmen I

Werbung
8. Übung zu Algorithmen I
Institut für Theoretische Informatik, Prof. Sanders
1
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
KIT – die Kooperation von8.Forschungszentrum
GmbH und Universität Karlsruhe (TH)
Übung zu Algorithmen Karlsruhe
I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Organisatorisches
Raumverlegung:
Tutorium 10 von 131 nach -102 (Hörsaal) am 30.6. und 14.7.
Mittsemesterklausur
Ergebnisse sind online und ausgehängt
Klausureinsicht am 3.7.2009:
Nachnamen A–J 14 Uhr; K–Z um 15 Uhr
Name fehlt immer noch bei ID 210;
bitte vorbeikommen und Schriftprobe abgeben
2. Programmier-Übungsblatt ist online
Abgabe ist Montag, 20.7.2009
2
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Matrizen zu Graphen: Un-/bigerichtet
Un-/bigerichtete Graphen haben eine symmetrische
Adjazenzmatrix
3
1
2
0
1
0
1
1
0
1
0
0
1
0
0
1
0
0
0
4
3
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Matrizen zu Graphen: DAG
DAGs lassen sich als obere Dreiecksmatrix repräsentieren.
4
5
3
1
4
2009
2
0
0
1
0
1
0
0
1
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Matrizen zu Graphen: DAG
DAGs lassen sich als obere Dreiecksmatrix repräsentieren.
1
3
2
4
4
2009
5
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
1
1
0
0
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Matrizen zu Graphen:
Zusammenhangskomponenten
Pro Zusammenhangskomponente ein Block in der Matrix
5
2009
4
5
1
3
2
6
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
0
0
0
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Matrizen zu Graphen:
Zusammenhangskomponenten
Pro Zusammenhangskomponente ein Block in der Matrix
5
2009
4
3
6
1
2
5
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Matrizen zu Graphen: Potenzierung
Was resultiert aus Potenzierung der Adjazenzmatrix?
Wie sind überhaupt · und + definiert auf {0, 1}?
z. B. · wie üblich (also Logisches Und), + als max
Was bedeutet aij = 1? Weg von i nach j (in einem Schritt).
Dann gilt für M = A2
mij = max` (mi ` · m`j ): Existiert ein Weg von i nach j über `?
mittels Induktion: (Ak )ij = 1 ⇐⇒
ein Weg von i nach j in k Schritten existiert
6
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Implizite Graphen: Unit Disk Graph
Implizite Graphen
Knoten und/oder Kanten
implizit gegeben
Unit Disk Graph
Knoten mit 2D-Position
Kante zu Knoten mit
Entfernung ≤ 1
z. B. Funkreichweite in
Sensornetzwerken
7
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Implizite Graphen: Spielbäume
Knoten ist Stellung im Spiel
Kanten sind implizit gegeben durch mögliche Züge,
zu deren Nachfolgezuständen
Tic Tac Toe
relativ kleine Anzahl Zustände im DAG
optimales Spielen möglich
Schach
Knoten praktisch nicht mehr aufzählbar
allgemeiner Graph, da Stellungs-Wiederholungen
8
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Euler-Tour
jede Kante genau 1x enthalten
Folgende Aussagen sind für einen ungerichteten Graphen G
äquivalent:
A G enthält eine Euler-Tour
B G ist zusammenhängend und jeder Knoten hat geraden Grad
C G ist zusammenhängend und die kantendisjunkte Vereinigung
von Kreisen
Kreis
Ein Kreis ist ein kantendisjunkter Pfad mit identischem Anfangsund Endknoten.
9
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Beweis
A⇒B
Die inzidenten Kanten eines Knoten lassen sich in eingehende
und ausgehende Kanten unterteilen.
Jede eingehende Kante ist bijektiv auf eine ausgehende Kante
abgebildet.
Also gibt es eine gerade Anzahl inzidenter Kanten an jedem
Knoten.
10
2009
4
5
7
3
6
1
2
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Beweis
B⇒C
Q := ∅
while E 6= ∅
e := {u , v } aus E beliebig, E := E \ e
x : = v , K : = hu , v i
do // invariante genau u und x haben ungeraden Grad
e := {x , w } aus E beliebig, E := E \ e
x := w, K := K . hw i // gehe zu nächstem Knoten
while x 6= u
Q := Q ∩ {K } // füge Kreis hinzu
5
4
11
2009
7
3
1
2
6
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Beweis
C⇒A
Kreise sind nicht knotendisjunkt, da G sonst nicht
zusammenhängend
Induktion über die Anzahl k Kreise
Induktionsanfang k = 1: der eine Kreis ist eine Euler-Tour.
Induktionsvoraussetzung: Ein zusammenhängender Graph aus k
kantendisjunkten Kreisen hat eine Euler-Tour.
Induktionsschritt k
k + 1: Sei T eine Euler-Tour aus k Kreisen
(IV) und K der fehlende Kreis. Da der Graph zusammenhängend,
muss es einen gemeinsamen Knoten v geben. Fahre T ab bis v ,
dann vollständig K und dann weiter mit T . Das ist eine gültige
Euler-Tour aus k + 1 Kreisen.
5
1
3
2
12
2009
4
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Euler-Tour Algorithmus
Verknüpfe Beweise B ⇒ C
Finde kantendisjunkte Kreise.
und C ⇒ A.
Bilde eine einzige Euler-Tour.
Ergibt einen Algorithmus mit Laufzeit O(n + m ).
Algorithmus von Hierholzer
Demo der Technischen Universität München
http://www-m9.ma.tum.de/Allgemeines/HierholzerApplet
13
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Pfade finden
Aufgabe:
Gegeben ein ungerichteter zusammenhängender Graph.
Finde einen knotendisjunkten Pfad P von Knoten u zu v in O(n).
Vorberechnung mit O(n) Platz und O(n + m ) Zeit.
Bekannte Algorithmen zur Pfadsuche:
Breitensuche (BFS) benötigt O(n + m ) Laufzeit. Der gefundene
Pfad ist kantenminimal.
Tiefensuche (DFS) benötigt O(n + m ) Laufzeit. Der gefundene
Pfad muss nicht kantenminimal sein.
Beide Algorithmen benötigen keine Vorberechnung.
14
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Algorithmus
Lösung:
Speichere Breitensuchbaum (parent) für einen beliebigen
Startknoten ab.
O(n) Platz und O(n + m ) Zeit
Von den Knoten u und v traversiere den Baum in Richtung
Wurzel bis zum tiefsten gemeinsamen Konten.
lowest common ancestor (LCA)
Beide Teilpfade zusammen ergeben einen gewünschten Pfad P.
Laufzeit ist O(|P |) ⊆ O(n)
15
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Beispiel
13
16
14
17
18
12
15
20
19
23
11
22
21
7
10
8
5
9
3
4
6
2
1
16
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Beispiel
Breitensuche von 1
13
16
14
17
18
12
15
20
19
23
11
22
21
7
10
8
5
9
3
4
6
2
1
17
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Beispiel
Pfad zwischen Knoten 17 und 21
13
16
14
17
18
12
15
20
19
23
11
22
21
7
10
8
5
9
3
4
6
2
1
18
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
1. Programmier-Aufgabe
Proportion Extend Sort
Interessanter Algorithmus, der wenig Vergleiche benötigt
“... the average number of comparisions is close to
n log n − O(n) for some p ...”
guter Algorithmus, wenn Vergleiche sehr teuer sind
2. Programmier-Aufgabe
Diese ist anspruchsvoller, da der Algorithmus nicht vorgegeben
ist.
Wer früher anfängt, kann den Tutor mehr fragen.
Die meisten werden diese nicht an einem Wochenende lösen
können!
Allerdings können 12 Punkte erreicht werden ohne eine einzige
Zeile Java-Code. (schwierig!)
19
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
presorted.png mit p = 16
20
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
random.png mit p = 16
21
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
random.png mit p = 8
22
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
random.png mit p = 4
23
2009
Robert Geisberger, Johannes Singler – Institut für Theoretische Informatik, Prof. Sanders
8. Übung zu Algorithmen I
KIT – die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
Herunterladen