Institut für Analysis und Numerik 18.05.2017 Universität Magdeburg

Werbung
Institut für Analysis und Numerik
Universität Magdeburg
Thomas Richter
18.05.2017
Übung Nr. 7 zur Vorlesung Algorithmische Mathematik II
Sommersemester 2017
Aufgabe 7.1: (6 Punkte)
Auf der Basis der Funktion breitensuche (oder bei Vorliebe tiefensuche, beide sind in der
Vorlage geschrieben) entwerfe man ein Verfahren zur Suche aller Zusammenhangskomponenten eines Graphen.
a) Man formuliere einen möglichen Algorithmus.
b) Man implementiere den Algorithmus und gebe für die drei Testgraphen graph1.gr,
,→ graph2.gr., graph3.gr jeweils die Anzahl der verschiedenen Zusammenhangskomponenten und die pro Zusammenhangskomponenten die Anzahl der vorhandenen Knoten an.
Hinweis: es sind nicht viele Modifikationen im Programm notwendig. Die Aufgabe kann durch
mehrfache Ausführung der Suche gelöst werden. Es ist lediglich notwendig, ein paar weitere
Daten zu protokollieren (wieviele Knoten wurde bereits gefunden, mit welchem Knoten starten
wir die Suche nach Zusammenhang?)
Aufgabe 7.2: (6 Punkte)
a) Man formuliere die notwendige Änderung der breitensuche zum Finden kürzester Wege.
b) Man implementiere einen Algorithmus und suche den Abstand (also den kürzesten
Weg) zwischen den folgenden Knoten:
1. Im Graph graph1.gr von Knoten 1 nach Knoten 99
2. Im Graph graph2.gr von Knoten 1 nach Knoten 300
3. Im Graph graph3.gr von Knoten 84 nach Knoten 575, von Knoten 575 nach Knoten
209 und von Knoten 84 nach Knoten 209
Falls kein Weg existiert gebe man dieses an.
1
Aufgabe 7.3: (6 Punkte)
Es sei G = (V, E) ein gerichteter Graph. Ausgehend von einem Knoten x ∈ V suchen
wir den kürzesten Kreis, in dem jeder Knoten nur einmal vorkommt.
a) Man beschreibe eine Modifikation der breitensuche zum finden kürzester Kreise.
b) Man implementiere ein entsprechendes Verfahren und suche den kürzesten Kreis
im Graphen gerichtet .gr ausgehen von den Knoten 145,251,947,1001. Man gebe jeweils die
Länge der Kreise aus.
Falls kein Kreis existiert gebe man dies an.
c) Man überlege sich, wie man auch die Knoten der Kreise angeben kann. Man gebe die
Kreise für die Startknoten aus b) aus.
Bei großen Problemen mit den Programmieraufgaben einfach bei Tetiana oder mir nach Tips
fragen.
Abgabe der Übungen am 01.06.2017 in der Vorlesung
2
Herunterladen