Aufgabenblatt 6H

Werbung
Graphentheorie
Prof. Dr. Peter Becker
Fachbereich Informatik
Wintersemester 2014/15
12. Januar 2015
Aufgabenblatt 6H
Aufgabe 1 (Blockung)
Gegeben sei eine Folge F von n natürlichen Zahlen, z.B.
F = 5, 7, 3, 9, 2, 3, 6, 8, 4, 1, 8, 6, 5,
sowie eine Blockgröße B, z.B. B = 10.
Wir wollen nun versuchen, F in Blöcke zu zerlegen, so dass die Summe der Folgenglieder in
einem Block möglichst wenig von B abweicht. Für unsere Beispielfolge wäre
5|7, 3|9, 2|3, 6|8, 4|1, 8|6, 5
eine Zerlegung. Wir bewerten solch eine Zerlegung, indem wir für jeden Block die Abweichung
von der Blockgröße berechnen und diese Abweichungen summieren. Für die oben angegebene
Zerlegung ergibt sich
5 | 7, 3 | 9, 2 | 3, 6 | 8, 4 | 1, 8 | 6, 5
|{z}
|{z} |{z} |{z} |{z} |{z} |{z}
5
0
1
1
2
1
1
und damit wäre die Bewertung dieser Zerlegung
5 + 0 + 1 + 1 + 2 + 1 + 1 = 11.
Gesucht ist eine Zerlegung mit möglichst kleiner Bewertung.
Lösen Sie dieses Problem für die Folge
F = 6, 6, 4, 6, 7, 1, 4, 9, 1, 5, 9, 2, 5, 6, 2
und B = 10. Geben Sie in Delivery.java eine optimale Zerlegung mit Hilfe der Variablen
blockung als Feld der Blöcke an, wobei jeder Block wieder ein Feld ist.
Beispiel: Für obige Beispielzerlegung schreiben Sie
public static int[][] blockung = {
{5}, {7, 3}, {9, 2}, {3, 6}, {8, 4}, {1, 8}, {6, 5}
};
(8 Punkte)
Aufgabe 2 (Bottleneck-Minimierung)
Gegeben sei der folgende Graph:
4
2
5
1
0
3
1
8
7
5
9
11
7
9
4
7
8
9
9
1
6
5
10
5
7
6
8
8
9
Gesucht ist ein Weg vom Knoten 0 zum Knoten 11, so dass die längste Kante dieses Weges
möglichst kurz ist.
Überlegen Sie sich, wie Sie den Algorithmus von Dijkstra anpassen müssen, um dieses Problem
zu lösen und berechnen Sie einen Weg, dessen längste Kante minimale Länge hat (unter allen
Wegen von 0 nach 11). Geben Sie den besten Weg mittels der Variablen
public static int [] besterWeg = { ... };
als Knotenfolge an.
Beispiel: Für den Graphen
und die Knoten a und d wäre der Weg (a, b, d) besser als der Weg (a, c, d), denn max{4, 5} =
5 < 6 = max{1, 6}.
(8 Punkte)
Aufgabe 3 (Minimalgerüst)
Gegeben sei der folgende Graph:
3
2
7
5
0
3
8
2
7
5
2
11
5
5
4
3
8
3
9
1
3
5
10
9
4
6
3
1
9
Berechnen Sie zu diesem Graphen ein Minimalgerüst. Geben Sie das Minimalgerüst in Delivery.java
als Feld von Kanten mittels der Variablen mst an.
Beispiel: Für
müssten Sie
public static int[][] mst = { {0,2}, {1,2}, {1,3} };
angeben.
Abgabe der Lösungen bis 23. Januar 2015, 24 Uhr
(8 Punkte)
Herunterladen