ADS: Algorithmen und Datenstrukturen 2 - Teil I

Werbung
ADS: Algorithmen und Datenstrukturen 2
Teil I
Gerhard Heyer, Florian Holz
unter Verwendung der Materialien der letzten Jahre
Abteilung Automatische Sprachverarbeitung
Institut für Informatik
Universität Leipzig
10. April 2013
1 / 24
Organisatorisches
Aktuelle Informationen zur Veranstaltung
http://asv.informatik.uni-leipzig.de/
→ Lehre → Sommersemester 2013
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
2 / 24
Organisatorisches
Übungsaufgaben
Es sind 5 Übungsserien zu lösen
Die ersten Übungsaufgaben werden am 10.04. gestellt.
Abgabe ist am 24.04.
Lösungen sind nach der Bearbeitungszeit direkt vor Beginn der
Vorlesung im Hörsaal abzugeben
(mit Name, Matrikelnummer und Gruppe).
Lösungen werden bewertet und in der Übungsstunde zurückgegeben.
Punkte gibt es für das Lösen der Aufgaben, nicht für die Abgabe der
Kopie der Lösung
Es wird daher stichprobenartig überprüft, ob die Lösung auch
verstanden wurde und erklärt werden kann.
Dies geschieht planmäßig in den Übungsstunden.
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
3 / 24
Organisatorisches
Übungsgruppen
Gruppen
G0
G1
G2/G3
Montag
Dienstag
Mittwoch
15:15 – 16:45
13:15 – 14:45
13:15 – 14:45
Raum 110, Seminargebäude
Raum 109, Härtelstrasse 16–18
Raum 110, Seminargebäude
Termine
G0
G1
G2
G3
29.04.,
30.04.,
08.05.,
15.05.,
27.05.,
28.05.,
29.05.,
05.06.,
G. Heyer, F. Holz (Abt ASV, Uni LE)
10.06.,
11.06.,
12.06.,
19.06.,
24.06.,
25.06.,
26.06.,
03.07.,
ADS 2
08.07.
09.07. (Raum 110)
10.07.
17.07.
SS 2013
4 / 24
Organisatorisches
Übungsgruppen – Anmeldung
Die Anmeldung für die Übungen erfolgt selbstorganisierend. Die
Termine sind so gewählt, dass Studenten verschiedener Fachrichtungen
unterschiedliche Vorzugstermine haben sollten.
ALSO: Einfach zum Wunschtermin hingehen!
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
5 / 24
Organisatorisches
Prüfungs(vor)leistung
Klausur
voraussichtlich erste Prüfungswoche, Dauer 60 Minuten
Zulassungsvoraussetzungen
Erreichen von 50% der Punkte in den Übungsaufgaben
Fähigkeit, abgegebene Lösungen zu erläutern
Kommen Sie also bitte zu den Übungsgruppen
unbenoteter Übungsschein (Diplom-Studiengänge)
50% der erreichbaren Punkte bei den Übungsaufgaben
und die Fähigkeit, abgegebene Lösungen zu erläutern, überprüft
werden konnte. Kommen Sie also zu den Übungsgruppen!
Alternative (falls zuwenig Punkte/Übungsteilnahme):
Mitschreiben der Klausur (bei Anmeldung angeben!)
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
6 / 24
Organisatorisches
Literatur und Weiteres
Literatur,
Termine,
Ergebnisse
alles zu finden auf
http://asv.informatik.uni-leipzig.de/courses/131 (Vorlesung)
und
http://asv.informatik.uni-leipzig.de/courses/132 (Übungen)
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
7 / 24
Organisatorisches
Inhaltsverzeichnis
1
Graphenalgorithmen
2
Verarbeitung von Zeichenketten:
Suche, Vergleich, Kompression
3
Dynamische Programmierung
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
8 / 24
Graphen
Graphen – Themenübersicht
1
Ungerichtete gewichtete Graphen: Grundlegende Definitionen,
minimale Spannbäume
2
Gerichtete Graphen: Definitionen, Speicherung, topologische
Sortierung, transitive Hülle, starke Zusammenhangskomponenten
3
Gerichtete gewichtete Graphen: Kürzeste Pfade, Flußnetzwerke
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
9 / 24
Graphen
Königsberger Brückenproblem (Euler, 1736)
Originalartikel: http://www.math.dartmouth.edu/~euler/pages/E053.html
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
10 / 24
Graphen
Ungerichteter Graph
Ein Tupel (V , E ) heißt (ungerichteter) Graph, wenn V eine endliche Menge
und E eine Menge ungeordneter Paare von Elementen in V ist.
V heißt Knotenmenge, die Elemente von V heißen Knoten.
E heißt Kantenmenge, die Elemente von E heißen Kanten.
Beispiel: V = {1, 2, 3, 4, 5}
E = {{1, 2}, {1, 3}, {2, 3}, {2, 4}, {2, 5}, {3, 4}, {3, 5}, {4, 5}}
2
4
3
5
1
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
11 / 24
Graphen
Ungerichteter Graph
Ein Tupel (V , E ) heißt (ungerichteter) Graph, wenn V eine endliche Menge
und E eine Menge ungeordneter Paare von Elementen in V ist.
V heißt Knotenmenge, die Elemente von V heißen Knoten.
E heißt Kantenmenge, die Elemente von E heißen Kanten.
Beispiel: V = {1, 2, 3, 4, 5}
E = {{1, 2}, {1, 3}, {2, 3}, {2, 4}, {2, 5}, {3, 4}, {3, 5}, {4, 5}}
2
4
2
4
2
1
=
3
5
G. Heyer, F. Holz (Abt ASV, Uni LE)
=
1
3
5
ADS 2
1
4
5
3
SS 2013
11 / 24
Graphen
Graphen: Beispiele realer Systeme
System
Knoten
Kanten
Internet
Router
Datenleitungen
WWW
Webseiten/-dokumente
Hyperlinks
Gesellschaft
Personen
soziale Kontakte
Biotop
Spezies
trophische Bez., “Fressen”
Molekül
Atome
chem. Bindungen
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
12 / 24
Graphen
Graph von Protein-Wechselwirkungen (Hefe)
Jeong, Mason, Barabási & Oltvai, Nature 2001.
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
13 / 24
Graphen
Network of articles about climate change (Okt 2012)
http://www.emapsproject.com/blog/archives/1572
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
14 / 24
Graphen
Facebook’s Social Network Graph (2010)
http://blog.revolutionanalytics.com/2010/12/
facebooks-social-network-graph.html
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
15 / 24
Graphen
Friendship Paradox (eternal ;) )
Why Everyone Has More Friends Than You
http://frs111.cs.princeton.edu/?p=495
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
16 / 24
Graphen
Teilgraphen
Seien G = (V , E ) und H = (W , F ) Graphen.
H heißt Teilgraph von G , wenn W ⊆ V und F ⊆ E ist.
H heißt spannender Teilgraph von G , wenn H Teilgraph von G mit
W = V ist (H enthält dieselben Knoten wie G ).
H heißt induzierter Teilgraph von G , wenn H Teilgraph von G ist und
für alle e ∈ E gilt: e ⊆ W ⇒ e ∈ F . (Alle Kanten aus G , deren zwei
Knoten in H liegen, sind auch in H enthalten.)
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
17 / 24
Graphen
Pfade, Zyklen, Zusammenhang
Sei G = (V , E ) ein Graph, l ∈ N und k = (v0 , v1 , . . . , vl ) ∈ V l+1 .
k heißt Weg der Länge l , wenn für alle i ∈ {1, . . . , l } gilt:
{vi−1 , vi } ∈ E
k heißt Pfad der Länge l , wenn k ein Weg ist und für alle
i, j ∈ {0, . . . , l } mit i 6= j gilt: vi 6= vj .
k heißt Zyklus (oder Kreis) der Länge l , wenn (v1 , . . . , vl ) ein Pfad der
Länge l − 1 ist und v0 = vl .
G heißt zusammenhängend, wenn für alle x, y ∈ V ein Pfad zwischen
x und y existiert.
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
18 / 24
Graphen
Wälder und Bäume
Sei G = (V , E ) ein Graph.
G heißt Wald (oder zyklenfrei), wenn kein Weg in G ein Zyklus ist.
G heißt Baum, wenn G ein Wald ist und G zusammenhängend ist.
Satz: Ist G ein Baum, so hat G genau |V | − 1 Kanten.
Satz: Ist G zusammenhängend, so hat G einen spannenden Teilgraphen T ,
so daß T ein Baum ist. T heißt dann Spannbaum von G .
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
19 / 24
Graphen
Gewichteter Graph
Sei (V , E ) ein Graph und w : E → R.
Das Tripel G = (V , E , w ) heißt gewichteter (oder kantenbewerteter)
Graph.
w (e) heißt Gewicht (oder Länge) der Kante e ∈ E .
Beispiel:
2
1.3
0.5
1
0.8
3
G. Heyer, F. Holz (Abt ASV, Uni LE)
1.8
1.9
4
0.6
2.4
1.5
ADS 2
5
SS 2013
20 / 24
Graphen
Minimaler Spannbaum
Gegeben: Gewichteter zusammenhängender Graph G = (V , E , w ) mit
|V | ≥ 2.
Gesucht: Spannbaum T = (V , F ) mit minimaler Kantensumme. Wähle
also die Kantenmenge F ⊆ E so, daß
X
w (e)
e∈F
möglichst klein wird.
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
21 / 24
Graphen
Kruskal-Algorithmus
Kruskal-Algorithmus (1956)
1
Erzeuge eine PriorityQueue Q mit der Kantenmenge E sortiert nach
Gewicht (kleinstes zuerst). Initialisiere F als leere Menge.
2
Entferne Kante e = {u, v } aus Q
3
Falls (V , F ) keinen Pfad zwischen u und v enthält:
F := F ∪ {e}
(sonst: tue nichts)
4
Falls Q nicht leer, zurück zu 2.
5
Ausgabe F bzw T = (V , F ).
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
22 / 24
Graphen
Beispiel-Lauf: Kruskal-Algorithmus
2
1.3
1.8
1.9
0.5
1
4
0.6
0.8
3
2.4
1.5
5
Q = [{2, 3}, {4, 5}, {1, 3}, {1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}]
F = {}
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
23 / 24
Graphen
Beispiel-Lauf: Kruskal-Algorithmus
2
1.3
1.8
1.9
4
0.5
1
0.6
0.8
3
2.4
1.5
5
Q = [{4, 5}, {1, 3}, {1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}]
F = {{2, 3}}
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
23 / 24
Graphen
Beispiel-Lauf: Kruskal-Algorithmus
2
1.3
1.8
1.9
0.5
1
4
0.6
0.8
3
2.4
1.5
5
Q = [{1, 3}, {1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}]
F = {{2, 3}}, {4, 5}}
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
23 / 24
Graphen
Beispiel-Lauf: Kruskal-Algorithmus
2
1.3
1.8
1.9
0.5
1
4
0.6
0.8
3
2.4
1.5
5
Q = [{1, 2}, {3, 5}, {2, 4}, {2, 5}, {3, 4}]
F = {{2, 3}}, {4, 5}, {1, 3}}
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
23 / 24
Graphen
Beispiel-Lauf: Kruskal-Algorithmus
2
1.3
1.8
1.9
0.5
1
4
0.6
0.8
3
2.4
1.5
5
Q = [{3, 5}, {2, 4}, {2, 5}, {3, 4}]
F = {{2, 3}}, {4, 5}, {1, 3}}
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
23 / 24
Graphen
Beispiel-Lauf: Kruskal-Algorithmus
2
1.3
1.8
1.9
0.5
1
4
0.6
0.8
3
2.4
1.5
5
Q = [{2, 4}, {2, 5}, {3, 4}]
F = {{2, 3}}, {4, 5}, {1, 3}, {3, 5}}
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
23 / 24
Graphen
Beispiel-Lauf: Kruskal-Algorithmus
2
1.3
1.8
1.9
0.5
1
4
0.6
0.8
3
2.4
1.5
5
Q = []
F = {{2, 3}}, {4, 5}, {1, 3}, {3, 5}}
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
23 / 24
Graphen
Anmerkungen zum Kruskal-Algorithmus
Korrektheit: Findet Kruskal-Algorithmus garantiert einen minmalem
Spannbaum? → Ja, sehen wir später bei Greedy-Algorithmen.
Analog: Bestimmung maximaler Spannbäume durch den
Kruskal-Algorithmus
Laufzeit-Komplexität O(|E | log |V |)
G. Heyer, F. Holz (Abt ASV, Uni LE)
ADS 2
SS 2013
24 / 24
Herunterladen