Lösungen zu Aufgabenblatt 6P - www2.inf.h

Werbung
Graphentheorie
Prof. Dr. Peter Becker
Fachbereich Informatik
Wintersemester 2014/15
19. Dezember 2014
Lösungen zu Aufgabenblatt 6P
Aufgabe 1 (Müllabfuhr)
a/Depot
3
5
b
3
h
c
4
e
d
3
3
5
4
5
4
6
f
g
4
2
5
3
7
i
k
2
2
j
Der angegebene Graph modelliert ein Straßennetz, die Kantenbewertungen geben die Straßenlängen an.
Ermitteln Sie eine möglichst kurze Route für die Müllabfuhr in diesem Straßennetz. Anforderungen:
• Das Müllauto muss im Depot starten und wieder zu diesem zurückkehren.
• Jede Straße muss mindestens einmal durchfahren werden.
Machen Sie die Herleitung Ihrer Route deutlich.
Lösung: Der theoretische Idealfall würde vorliegen, wenn das Straßennetz einen eulerschen Graphen bildet. Dann wäre ein Eulerkreis die optimale Lösung.
Der gegebene Graph ist aber nicht eulersch, denn er enthält zwei Knoten (g und h) mit ungeradem Grad. Zu einer optimalen Lösung kommen wir, indem wir zwischen diesen Knoten eine
zusätzliche Kante einfügen. Diese Kante muss dabei dem kürzesten Weg von g nach h entsprechen.
Mit dem Algorithmus von Dijkstra können wir den kürzesten Weg von g nach h berechnen. Dies
ist (g, k, j, i, h) mit der Länge 12.
Wir berechnen nun für den Graphen, der zusätzlich die Kante {g, h} enthält, einen Eulerkreis
(z.B. mit dem Algorithmus von Hierholzer). Wir erhalten
(a, b, d, h, i, j, k, g, c, b, e, f, g, h, e, i, k, f, c, a).
Für die Kante (g, h) setzen wir den zuvor ermittelten kürzesten Weg ein und erhalten somit als
optimale Route
(a, b, d, h, i, j, k, g, c, b, e, f, g, k, j, i, h, e, i, k, f, c, a).
Aufgabe 2 (Textfaktorisierung, 4 Punkte)
Die Nachricht babbbaabba soll mit dem folgenden Code codiert werden:
Text
a
b
ba
bb
abb
Code
00
010
0110
0111
1
Länge
2
3
4
4
1
Beispiel für eine mögliche Codierung der Nachricht:
ba
0110
bb
0111
ba
0110
a
00
bb
0111
a
00
Die Gesamtlänge dieser Codierung ist 20.
Finden Sie eine Codierung mit minimaler Gesamtlänge. Erläutern Sie hierzu kurz, wie Sie dieses
Problem mit Hilfe der Graphentheorie lösen können und berechnen Sie eine Lösung.
Lösung: Sei text = babbbaabba = c1 . . . c10 . Wir definieren einen gerichteten azyklischen Graphen G = (V, A) mit
V = {0, . . . 10}
und
A = {(i, j)|ci+1 . . . cj ist im Code}.
Die Länge w(e) einer gerichteten Kante e ∈ A ergibt sich durch die Länge der zugehörigen
Codierung im Code.
1
4
3
b
4
1
2
a
3
4
4
b
3
b
3
b
2
a
2 a
3
b
3 b 2
a
4
4
Jeder Weg von 0 nach 10 legt eine Codierung fest. Somit erhält man eine Codierung mit minimaler Gesamtlänge durch einen kürzesten Weg von 0 nach 10. Dieser kann mit dem Algorithmus
von Dijkstra oder durch die Rekursionformel gemäß Satz 4.6 bestimmt werden. Für die Rekursionsformel erhalten wir:
v
0
1
2
3
4
5
6
7
8
9
10
d(v) best(v) Text
0
3
0
b
4
0
ba
7
2
b
4
1
abb
7
4
b
8
4
ba
10
6
a
13
7
b
9
6
abb
11
9
a
b abb ba abb a
eine Codierung mit minimaler Gesamtlänge 11.
010
1
0110
1
00
Damit ist
Veranschaulichung des kürzesten Weges:
1
4
3
4
1
2
b
3
a
4
4
3
b
3
b
2
b
2 a
a
3
3 b 2
b
a
4
4
Bemerkung: Der vorgegebene Code ist übrigens ein Präfixcode. Eine Bitsequenz, die durch
eine Codierung entstanden ist, kann somit eindeutig decodiert werden.
Aufgabe 3 (Minimalgerüst)
Gegeben sei der folgende Graph:
f
i
4
4
7
b
4
d
a
12
l
4
2
h
8
5
2
1
3
6
2
m
3
8
4
o
g
2
c
5
e
6
2
k
1
7
3
2
n
j
10
Berechnen Sie zu diesem Graphen ein Minimalgerüst. Ist dieses Minimalgerüst eindeutig?
Lösung: Das Minimalgerüst ist nicht eindeutig bestimmt. Die fettgedruckten Kanten im folgenden Graphen charakterisieren ein mögliches Minimalgerüst:
f
i
4
4
7
b
4
d
a
12
l
4
2
h
8
5
2
1
3
6
2
m
3
8
4
o
g
2
c
5
e
2
k
1
7
3
2
n
6
j
10
Prim: Wir starten den Algorithmus im Knoten a. Der Ablauf des Algorithmus kann dann der
folgenden Tabelle entnommen werden:
U
{a}
{a, c}
{a, b, c}
{a, b, c, f }
{a, b, c, d, f }
{a, b, c, d, e, f }
{a, b, c, d, e, f, g}
{a, b, c, d, e, f, g, j}
{a, b, c, d, e, f, g, j, k}
{a, b, c, d, e, f, g, i, j, k}
{a, b, c, d, e, f, g, h, i, j, k}
{a, b, c, d, e, f, g, h, i, j, k, l}
{a, b, c, d, e, f, g, h, i, j, k, l, n}
{a, b, c, d, e, f, g, h, i, j, k, l, n, o}
Knoten
c
b
f
d
e
g
j
k
i
h
l
n
o
m
Entfernung
2
4
4
3
2
2
1
2
4
1
2
3
3
4
Kante
{a, c}
{a, b}
{b, f }
{d, f }
{d, e}
{e, g}
{g, j}
{j, k}
{f, i}
{h, i}
{i, l}
{l, n}
{n, o}
{l, m}
Die Gesamtlänge des Minimalgerüstes ist 37.
Wenn wir im Minimalgerüst die Kante {i, l} gegen die Kante {h, l} austauschen, entsteht ein
anderes Minimalgerüst. Ebenso könnten wir {l, m} gegen {m, o} austauschen. Damit ist das
Minimalgerüst nicht eindeutig.
Herunterladen