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