Aufgabe 1 (Algorithmus von Dijkstra) Aufgabe 2 ... - Callerid.de
Aufgabe 1 (Algorithmus von Dijkstra) Aufgabe 2 ... - Callerid.de
Aufgabe 1 (Algorithmus von Dijkstra) Aufgabe 2 ... - Callerid.de
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Kurs 1663 „Datenstrukturen“ Einsen<strong>de</strong>aufgaben zur Kurseinheit 5 Seite 1<br />
<strong>Aufgabe</strong> 1<br />
(<strong>Algorithmus</strong> <strong>von</strong> <strong>Dijkstra</strong>)<br />
25 Punkte<br />
Der <strong>Algorithmus</strong> <strong>von</strong> <strong>Dijkstra</strong> berechnet in seiner ursprünglichen Form lediglich einen<br />
<strong>de</strong>r kürzesten Wege <strong>von</strong> einem Knoten zu allen an<strong>de</strong>ren. Wenn es mehrere<br />
Wege mit gleichen Kosten zu einem an<strong>de</strong>ren Knoten gibt, so wird <strong>de</strong>r erste gefun<strong>de</strong>ne<br />
Weg gewählt. Die <strong>Aufgabe</strong> besteht nun darin, <strong>de</strong>n <strong>Algorithmus</strong> <strong>de</strong>rart zu verän<strong>de</strong>rn,<br />
daß er alle Wege mit gleichen Kosten für einen Knoten speichert.<br />
(a)<br />
Wie sind <strong>Algorithmus</strong> und Implementierung zu modifizieren? Wie än<strong>de</strong>rt<br />
sich die Laufzeit? Begrün<strong>de</strong>n Sie.<br />
10 Punkte<br />
(b)<br />
Demonstrieren Sie die Arbeitsweise Ihres <strong>Algorithmus</strong> am folgen<strong>de</strong>n Beispiel.<br />
Startknoten ist A.<br />
15 Punkte<br />
A<br />
2<br />
B<br />
2<br />
C<br />
2<br />
1<br />
2<br />
1<br />
2<br />
D<br />
2<br />
E<br />
2<br />
F<br />
2<br />
2<br />
2<br />
G<br />
2 2<br />
H<br />
I<br />
<strong>Aufgabe</strong> 2<br />
(Artikulationspunkte)<br />
25 Punkte<br />
Sei G = (V, E) ein verbun<strong>de</strong>ner, ungerichteter Graph. Dann besteht G aus genau einer<br />
Komponente. Das Entfernen eines Knotens v (und seiner inzi<strong>de</strong>nten Kanten) aus<br />
G schreiben wir als G - v und meinen damit <strong>de</strong>n Graphen G' = (V - {v}, {(x, y) ∈ E<br />
| x ≠ v ∧ y ≠ v}). Ein Artikulationspunkt ist ein Knoten v ∈ V, für <strong>de</strong>n gilt: G - v ist<br />
nicht verbun<strong>de</strong>n. Ein verbun<strong>de</strong>ner Graph ohne Artikulationspunkte heißt nicht-separierbarer<br />
Graph. Ein Block eines Graphen ist eine maximaler, nicht-separierbarer
Seite 2 Einsen<strong>de</strong>aufgaben zur Kurseinheit 5 Kurs 1663 „Datenstrukturen“<br />
Teilgraph. Im Graph <strong>de</strong>r folgen<strong>de</strong>n Abbildung sind die Knoten x und y Artikulationspunkte.<br />
x<br />
y<br />
Die Blöcke <strong>de</strong>s Graphen sind:<br />
x<br />
x<br />
y<br />
y<br />
y<br />
10 Punkte<br />
(a)<br />
Beweisen Sie <strong>de</strong>n folgen<strong>de</strong>n Satz:<br />
v ist Artikulationspunkt <strong>von</strong> G ⇔ Es existieren zwei <strong>von</strong> v verschie<strong>de</strong>ne<br />
Knoten u und w, so daß v in je<strong>de</strong>m Pfad <strong>von</strong> u nach w enthalten ist.<br />
Zu je<strong>de</strong>m ungerichteten Graphen gibt es einen korrespondieren<strong>de</strong>n gerichteten Graphen,<br />
in <strong>de</strong>m je<strong>de</strong> ungerichtete Kante in bei<strong>de</strong>n Richtungen auftritt. Wir nehmen an,<br />
daß jeweils bei<strong>de</strong>n Kanten ein und dasselbe Kostenmaß c zugewiesen ist.<br />
15 Punkte<br />
(b)<br />
Wie kann man das Wissen über Blöcke und Artikulationspunkte ausnutzen,<br />
um die Suche nach <strong>de</strong>m kürzesten Weg zwischen zwei Knoten s und t zu beschleunigen?<br />
(Hinweis: Sie brauchen Ihre I<strong>de</strong>e nur für <strong>de</strong>n einfachen Fall zu<br />
beschreiben, in <strong>de</strong>m lediglich ein Artikulationspunkt existiert.)<br />
Begrün<strong>de</strong>n Sie die Korrektheit Ihres Ansatzes, und schätzen Sie <strong>de</strong>n Laufzeitgewinn<br />
durch Gegenüberstellung <strong>de</strong>r Komplexitäten für die “normale”<br />
und Ihre verbesserte Lösung ab.
Kurs 1663 „Datenstrukturen“ Einsen<strong>de</strong>aufgaben zur Kurseinheit 5 Seite 3<br />
<strong>Aufgabe</strong> 3<br />
Inselstaat<br />
20 Punkte<br />
A 1 A 2<br />
B 3<br />
B 2<br />
B 1<br />
B 4<br />
C 3<br />
A 3<br />
C 1 C2<br />
Die vergröberte Geometrie eines kleinen Inselstaates ist im obigen Bild durch Polygone<br />
dargestellt, die wie<strong>de</strong>rum durch einen Graphen abgebil<strong>de</strong>t wer<strong>de</strong>n, d.h. die<br />
Eckpunkte eines Polygons sind Knoten <strong>de</strong>s Graphen und Linienzüge entsprechen<br />
Kanten im Graphen. Der Staat besteht aus mehreren Inseln, welche in Gebiete aufgeteilt<br />
sind. Letztere sind im Besitz verschie<strong>de</strong>ner Stämme (A, B, C) bzw. Familien<br />
dieser Stämme (A 1 ...A 3 , B 1 ...B 4 , C 1 ...C 3 ). Gegeben sind die Teilgraphen, die die<br />
Grenzen <strong>de</strong>r einzelnen Familien (Gebiete) repräsentieren und <strong>de</strong>r Gesamtgraph G,<br />
<strong>de</strong>r oben dargestellt ist.<br />
Die folgen<strong>de</strong>n <strong>Aufgabe</strong>n sollen mittels Graphalgorithmen gelöst wer<strong>de</strong>n.<br />
(a)<br />
Wie kann die Anzahl <strong>de</strong>r Inseln auf Basis <strong>von</strong> G berechnet wer<strong>de</strong>n? Welche<br />
Kosten hat das Verfahren?<br />
3 Punkte<br />
(b)<br />
Wie kann die Anzahl <strong>de</strong>r Inseln berechnet wer<strong>de</strong>n, in<strong>de</strong>m nur die Teilgraphen<br />
benutzt wer<strong>de</strong>n (und ohne die Teilgraphen zu G zusammenzusetzen)?<br />
5 Punkte<br />
(c)<br />
Sei length eine Kantenmarkierung in G (und seinen Teilgraphen), die die Länge<br />
<strong>de</strong>r Kante angibt. Geben Sie einen <strong>Algorithmus</strong> an, um die Länge <strong>de</strong>r Küste<br />
<strong>de</strong>s Inselstaates zu berechnen.<br />
8 Punkte<br />
(d)<br />
Beschreiben Sie, wie die Anzahl <strong>de</strong>r Nachbarn einer Familie berechnet wer<strong>de</strong>n<br />
kann. Ein Nachbar einer Familie sei <strong>de</strong>finiert als eine an<strong>de</strong>re Familie mit<br />
einem angrenzen<strong>de</strong>n Gebiet. Geben Sie einen <strong>Algorithmus</strong> an, wenn nötig.<br />
4 Punkte
Seite 4 Einsen<strong>de</strong>aufgaben zur Kurseinheit 5 Kurs 1663 „Datenstrukturen“<br />
30 Punkte<br />
<strong>Aufgabe</strong> 4<br />
(Stadtparkbewässerung)<br />
In einem Stadtpark soll die Bewässerung über ein Kanalsystem realisiert wer<strong>de</strong>n.<br />
Die <strong>Aufgabe</strong> ist es, alle Plätze mit Wasser zu versorgen. Dabei sollen die Kanäle<br />
entlang <strong>de</strong>r Wege verlegt wer<strong>de</strong>n. Die Vegetation in <strong>de</strong>r Nähe <strong>de</strong>r Kanäle wird direkt<br />
durch die Kanäle versorgt, während Pflanzen, die an Wegen ohne Kanäle liegen,<br />
<strong>von</strong> Gärtnern versorgt wer<strong>de</strong>n, die das Wasser dann aus <strong>de</strong>n Brunnen an <strong>de</strong>n Plätzen<br />
beziehen. In <strong>de</strong>m gezeigten Graphen stellen die Knoten die Plätze und die Kanten<br />
die Wege dar. Die Kantenmarkierungen geben die Länge <strong>de</strong>r Wege an.<br />
A<br />
3<br />
B<br />
3<br />
2<br />
2<br />
F<br />
2<br />
2<br />
3<br />
E<br />
2<br />
H<br />
1<br />
1<br />
1<br />
G<br />
2<br />
C<br />
3<br />
2<br />
2<br />
3<br />
D<br />
12 Punkte<br />
(a)<br />
Wieviele Möglichkeiten gibt es, ein Kanalsystem minimaler Länge, das alle<br />
Plätze miteinan<strong>de</strong>r verbin<strong>de</strong>t, anzulegen? Begrün<strong>de</strong>n Sie Ihre Aussage.<br />
Geben Sie ein Beispiel für ein Kanalsystem an und <strong>de</strong>n <strong>Algorithmus</strong>, mit<br />
<strong>de</strong>m sie ihn gefun<strong>de</strong>n haben.<br />
12 Punkte<br />
(b)<br />
Um zu überprüfen, ob die Vegetation außerhalb <strong>de</strong>r Kanäle ausreichend bewässert<br />
ist, müssen alle Wege ohne Kanäle überprüft wer<strong>de</strong>n. Dazu müssen<br />
diese Wege abgegangen wer<strong>de</strong>n.<br />
Gibt es zu je<strong>de</strong>r <strong>de</strong>r Möglichkeiten aus <strong>Aufgabe</strong>nteil (a) einen Pfad, <strong>de</strong>r je<strong>de</strong>n<br />
Weg ohne Kanal genau einmal (und sonst keine weiteren Wege) benutzt?<br />
Wenn ja, geben Sie für Ihr Beispiel aus (a) einen solchen Pfad an. Wenn<br />
nicht, begrün<strong>de</strong>n Sie dies ausführlich.<br />
6 Punkte<br />
(c)<br />
Gibt es einen Pfad durch <strong>de</strong>n Park, <strong>de</strong>r je<strong>de</strong>n Weg genau einmal benutzt, mit<br />
Start ≠ Ziel und Start, Ziel ∈ {A, B, C, D, E}? Gibt es einen Rundweg, also
Kurs 1663 „Datenstrukturen“ Einsen<strong>de</strong>aufgaben zur Kurseinheit 5 Seite 5<br />
einen Pfad durch <strong>de</strong>n Park, <strong>de</strong>r je<strong>de</strong>n Weg genau einmal benutzt, mit<br />
Start = Ziel, Start, Ziel ∈ {A, B, C, D, E}? Geben Sie für bei<strong>de</strong> Fragen jeweils<br />
einen gültigen Weg an, falls es einen solchen gibt. Wenn nicht, begrün<strong>de</strong>n<br />
Sie dies.