• Keine Ergebnisse gefunden

Übung 8: Graphen

N/A
N/A
Protected

Academic year: 2022

Aktie "Übung 8: Graphen"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

 Übung Praktische Informatik 2 SS 2017 

Übung 8: Graphen

Abgabetermin: 16.05.2017

Name: Matrikelnummer:

Gruppe: ​​☐ G1 ​Di 10:15-11:00 ​ ​ ​☐ G2 ​Di 11:00-11:45 ​☐ G3 ​Di 12:45-13:30

Aufgabe Punkte gelöst abzugeben

schriftlich abzugeben

elektronisch Korr. Punkte

Aufgabe 1 8 ☐ Simulation Simulation ☐

Aufgabe 2 16 ☐ Java-Programm Projekt Archiv ☐

Aufgabe 1: Transitive Hülle mit dem Warshall-Algorithmus bestimmen (8 Punkte)

Berechnen Sie die transitive Hülle des Graphen mit dem Warshall-Algorithmus. Geben Sie alle Zwischenergebnisse als Adjazenzmatrix an. Markieren Sie neu hinzugekommene Kanten durch Einkreisen.

Abzugeben ist​: Simulation

(2)

 Übung Praktische Informatik 2 SS 2017 

Aufgabe 2: Implementierung des Warshall-Algorithmus (16 Punkte)

Implementieren Sie den Warshall-Algorithmus in Java. Erstellen Sie zuerst eine Adjazenzmatrix in der Methode ​Warshall.graphToMatrixmit den Kanten des Graphen. Verwenden Sie dafür ein​long[]​-Array. Die Einträge sind als Bit-Vektor zu verstehen. Zum Beispiel ist das 3. Bit im 5. Array-Eintrag gesetzt existiert eine Kante vom Knoten mit Index 5 zum Knoten mit Index 3. Verwenden Sie als Indizes in die Matrix die Position der Knoten in der ​vertices​-Liste des Graph-Objekts. Bestimmen Sie dann mit dem Warshall-Algorithmus die Kanten der transitiven Hülle (​transitiveClosure​). Erstellen Sie danach als Ergebnis einen neuen Graphen der alle Kanten der transitiven Hülle enthält (​matrixToGraph).

Abzugeben ist​: Projekt Archiv Implementierungshinweise:

● Verwenden Sie das Vorgabeprojekt ​PI2_UE08.zip​.

● Fügen Sie Ihre Implementierung in den mit ​TODO​ markierten Teilen der Klassen ​Warshall ein.

● Berücksichtigen Sie, dass bei einer ungerichteten Kante zwischen A und B sowohl A direkt von B als auch B direkt von A erreichbar ist.

● Ignorieren Sie eventuell vorhandene Kantengewichte.

● Implementieren und benutzen Sie ​isBitSet und ​setBit in der Klasse ​Warshall um die Bit-Manipulationen auf der Matrix zu abstrahieren.

● Unabhängig davon ob der übergebene Graph gerichtet oder ungerichtet ist: Das Ergebnis von transitiveClosure​ soll ein gerichteter Graph sein (das macht Ihre Lösung einfacher).

● Die ​indexOf​-Methode von ​Graph.vertices​ liefert den Index eines Vertex-Objekts.

○ Verwenden Sie​indexOfnur wenn unbedingt notwendig. I vielen Fällen gibt es Alternativen mit besserem Laufzeitverhalten.

● Ändern sie ​keine​​public Interfaces​ vorgegebener Skeleton Klassen.

● Halten Sie sich an die ​Codierungsrichtlinien​ auf der Kurs Website.

Referenzen

ÄHNLICHE DOKUMENTE

In jedem Graphen ist die Anzahl der Knoten mit ungeradem Grad

Die Prozedur Tiefensuche wird dann solange mit einem weiß gefärbten Knoten aufgerufen, bis es keine weiß gefärbten Knoten mehr gibt... Wir müssen zeigen, dass die Nummer von u

Bemerkung: Da in einem Weg die Kanten per Definition paarweise verschieden sind, enthält ein Eulerscher Weg damit jede Kante genau einmal.. G = (V, E)

Bemerkung: Da abgesehen vom Endknoten kein Knoten wiederholt wird, enthält auch ein Hamiltonscher Zyklus jeden Knoten von genau einmal.. Hamiltonsche Graphen sind benannt nach

Wenn die Nachbarn von weniger als Farben verbrauchen, dann kann mit einer nicht verbrauchten Farbe gefärbt werden... Satz von

In einem sozialen Netzwerk, beispielsweise bestehend aus einer Men- ge von Personen (repr¨ asentiert durch Knoten) und der unter diesen Personen stattfindenden Kommunikation

„the ending -ene is used for fused polycyclic aromatic hydrocarbons, even when the root of the name is of trivial origin, for example,. naphthalene,

Da jeder Block eines Blockgraphen vollst¨andig ist, gibt es nach dem Satz von Krausz (Satz 8.14) einen schlichten Graphen H ohne isolierte Ecken mit G ∼ = L (H). Ist G ein