Lernkontrolle Lösungen
Lernkontrolle Lösungen
Lernkontrolle Lösungen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Algorithmen und Datenstrukturen 2<br />
Prof. Dr. C. Stamm christoph.stamm@fhnw.ch Tel.: 056 462 47 44<br />
Lösungen zu den <strong>Lernkontrolle</strong>n<br />
1.4.1 Grapheneigenschaften<br />
Hier sind einige Graphen abgebildet. Geben Sie für jeden Graphen die Grade der Knoten an. Versuchen<br />
Sie dann so viele Eigenschaften wie möglich zu festzuhalten. Mit Eigenschaften sind hier gemeint:<br />
• Zu welcher Gruppe von Graphen gehört der Graph Z.B. Bäume, Kreise, vollständig bipartite<br />
Graphen, einfacher Graph, etc.<br />
• Ist der Graph zusammenhängend<br />
• Etc.<br />
a)<br />
b) c)<br />
d)<br />
e)<br />
f)<br />
Graphentyp<br />
Einfacher<br />
Graph<br />
Zusammen<br />
hängend<br />
gerichtet planar Speziell<br />
a) C 3 , K 3 Ja Ja Nein Ja<br />
b) C 4 , H 2 Ja Ja Nein Ja<br />
c) - Ja Nein Nein Ja<br />
d) - Nein Ja Nein Ja Schlinge<br />
e) - Nein Ja Nein Ja Mehrfachkante<br />
f) - Nein Ja Ja Ja<br />
1.4.2 Summe der Knotengrade<br />
Im Kapitel über einfache Graphen wurde gesagt, dass es immer eine gerade<br />
Anzahl von Knoten mit ungeradem Grad geben muss. Wie sieht dies für<br />
die Anzahl der Knoten mit geradem Grad aus<br />
Es ist nicht zwingend, dass die Anzahl der Knoten mit geradem Grad eine<br />
gerade Zahl ist. Siehe Beispiel<br />
Dieser Graph hat 3 Knoten mit Grad 2.<br />
1.4.3 Planarität<br />
a) ist planar, heisst auch C 5 , n = m = 5, f = 2, Eulersche Polyederformel: n – m + f = 2 ist erfüllt<br />
b) ist planar, heisst auch Tetraeder, ist also ein Polyeder, n = 4, m = 6, f = 4; n – m + f = 2 ist erfüllt<br />
c) ist planar, heisst auch Oktaeder, n = 6, m = 12, f = 8; n – m + f = 2 ist erfüllt<br />
d) ist planar, heisst auch Würfel, n = 8, m = 12, f = 6; n – m + f = 2 ist erfüllt<br />
1
1.4.4 Kurzaufgaben<br />
a) Wie viele Kanten hat der K 5 10<br />
b) Wie viele Kanten hat der K n n*(n – 1)/2<br />
c) Wie viele Kanten hat der K 3,3 3*3 = 9<br />
d) Wie viele Kanten hat der K a,b a*b<br />
e) Wie viele Kanten hat der C 4 4<br />
f) Wie viele Kanten hat der C n n<br />
g) Zeichnen Sie für die folgende Situation einen Graphen, der die Situation wiedergibt: Sie laden 5<br />
Freunde ein. Jeder Gast kennt zwei andere Gäste. Zeichnen Sie einen zusammenhängenden<br />
Graphen.<br />
h) Kann ein Graph mit 11 Knoten und 30 Kanten planar sein<br />
Eulersche Polyederformel: n – m + f = 2<br />
11 – 30 + f = 2 f = 21<br />
Es muss aber auch gelten: 3f ≤ 2m<br />
3f ≤ 2*30 f ≤ 20<br />
kann nicht planar sein<br />
i) Kann ein Graph mit 5 Knoten und 6 Gebieten planar sein<br />
Eulersche Polyederformel: n – m + f = 2<br />
5 – m + 6 = 2 m = 9<br />
Es muss aber auch gelten: 3f ≤ 2m<br />
3*6 ≤ 2m m ≥ 9<br />
Es muss auch gelten: m ≤ 3n – 6 = 9<br />
Es muss auch gelten: f ≤ 2n – 4 = 6<br />
kann planar sein<br />
j) Kann ein Graph mit 5 Knoten, 10 Kanten und 8 Gebieten planar sein<br />
Eulersche Polyederformel: n – m + f = 2<br />
5 – 10 + 8 = 3<br />
kann nicht planar sein, weil die Eulersche Polyederformel nicht zutrifft<br />
2
2.5.1 Adjazenzmatrix<br />
2.5.2 Inzidenzmatrix<br />
2.5.3 Adjazenzlisten<br />
3.6.1 Topologische Sortierung<br />
a) Kann ein ungerichteter Graph topologisch sortiert werden<br />
Nein, es fehlt die partielle Ordnung.<br />
b) Geben Sie für den folgenden Graphen eine topologische Sortierung an.<br />
1<br />
4<br />
6<br />
2<br />
3 5<br />
7<br />
1, 2, 3, 4, 5, 6, 7<br />
c) Zeichnen Sie noch zwei Kanten ein, welche die topologische Sortierung nicht beeinträchtigen.<br />
Z.B. die Kanten (5, 7) und (3, 6)<br />
3.6.2 Durchlaufen von Graphen<br />
Zeichnen Sie im folgenden Graphen die verschiedenen Schritte einer a) Tiefensuche und b) Breitensuche<br />
ein. Startknoten ist der Knoten 1. Geben Sie auch an, in welcher Reihenfolge die Knoten gefunden<br />
werden.<br />
Annahme: kleinere Knotennummern werden zuerst besucht.<br />
Tiefensuche: 3, 6, 7, 4, 5, 2, 1<br />
Breitensuche: 1, 2, 4, 5, 7, 3, 6<br />
1<br />
4<br />
6<br />
2<br />
3<br />
5 7<br />
3.6.3 Kürzeste Pfade<br />
a) Sie haben gesehen, dass die Laufzeit des Dijkstra-Algorithmus O((n + m) log n) ist. Rechnen Sie<br />
nun aus, wie die Laufzeit wäre, wenn anstatt der Prioritätswarteschlange eine sortierte Liste verwendet<br />
würde.<br />
O(min suchen) = O (n)<br />
O(min extrahieren) = O (1)<br />
O(einfügen) = O (n)<br />
O(update im Array) = O (n)<br />
O ( n + n *((n) + (1)) + n *(n) + m* (n)) = O( n + n² + n² + mn ) = O((n + m) n)<br />
3
) Sie erhalten einen Graphen und sollen nun herausfinden, ob er eine Kante mit negativem Gewicht<br />
enthält. Schreiben Sie in Pseudocode eine entsprechende Testmethode auf. Geben Sie zudem<br />
die Laufzeit Ihres Algorithmus an.<br />
boolean Test(Graph G, Knoten s)<br />
forall v in V do<br />
v.gefunden := false<br />
endforall<br />
Q := {s}<br />
while Q nicht leer do<br />
entferne das vorderste Element u aus Q<br />
u.gefunden := true<br />
forall e inzident zu u<br />
if w(e) < 0<br />
return false<br />
endif<br />
endforall<br />
forall v Nachbarn von u<br />
if !v.gefunden<br />
füge v in Q ein<br />
endif<br />
endforall<br />
endwhile<br />
// alle Knoten unentdeckt<br />
// Alle Knoten die von u aus mit einer Kante<br />
// erreicht werden können<br />
Diese Methode hat dieselbe Laufzeit wie die Breitensuche O(n + m).<br />
c) Bestimmen Sie eine möglichst scharfe untere Grenze der Laufzeit für einen Algorithmus zur<br />
Überprüfung von Kanten mit negativem Gewicht.<br />
Eine Methode, die ganz sicher alle Kanten findet, muss mindestens eine Laufzeit von Ω (m) haben.<br />
4.3.2 Minimaler Spannbaum<br />
a) Zeichnen Sie den Graphen, der zu der nachfolgend gegebenen Adjazenzmatrix (links) gehört.<br />
Erzeugen Sie dann den minimalen Spannbaum für diesen Graphen. Füllen Sie dabei die rechte<br />
Tabelle der Gewichte aus (rechts). Geben Sie in dieser Tabelle in der Spalte ganz links an, welches<br />
der aktuelle Knoten ist (analog zu den vorherigen Beispielen).<br />
s 1 2 3 4 5 6<br />
0 ∞ ∞ ∞ ∞ ∞ ∞<br />
s 0 1 ∞ 10 ∞ ∞ ∞<br />
1 0 0 2 10 ∞ 7 ∞<br />
2 0 0 0 10 8 5 ∞<br />
5 0 0 0 10 3 0 4<br />
4 0 0 0 2 0 0 4<br />
3 0 0 0 0 0 0 4<br />
4 0 0 0 0 0 0 0<br />
b) Geben Sie die Menge der Kanten an, die im minimalen Spannbaum enthalten sind. Z.B. {s, 3}<br />
Menge der Kanten im Spannbaum: {s,1}, {1,2}, {2,5}, {5,4}, {5,6}, {4,3}<br />
c) Welches Gewicht hat der hier erzeugte minimale Spannbaum.<br />
Gewicht des Spannbaums: 17<br />
4
d) Hätte in einem Schritt auch eine andere Kante (bzw. ein anderer Knoten) in den MST aufgenommen<br />
werden können<br />
es gibt keine Alternativen<br />
5