Forschungsinstitut für Diskrete Mathematik
Programmierpraktikum Diskrete Optimierung (Modul P2C1)
Sommersemester 2020
Thema: Graphenisomorphie
Thema dieses Programmierpraktikums ist die Implementierung von
Algorithmen zum Test auf Isomorphie von Graphen.
Aktueller Hinweis:
Das Programmierpraktikum wird wie geplant im SS2020 stattfinden. Aufgrund der derzeitigen Situation
wird jedoch die Frist zur Abgabe der Einstiegsaufgabe bis zum 15.5.2020 verlängert.
Abschlusspräsentation: Die Präsentation der Programme
ist für Montag, den 6.7., 16:00 Uhr s.t. geplant. Jeder Teilnehmer soll dabei
in 10 bis 15 Minuten das von ihm betrachtete Verfahren, seine Implementierung sowie
experimentelle Ergebnisse vorstellen.
Terminplan für die Abschlusspräsentation:
-
16:00 Antonia Ellerbrock
-
16:15 Markus Kleinau
-
16:30 Linnea Leuze
-
16:45 Simon Blasinski
-
17:00 Timo Brand
-
17:15 Jan Sebastian Walter
Einstiegsaufgabe: Implementieren Sie einen Backtracking-Algorithmus,
der Graphisomorphie testet. Der Algorithmus soll die jeweils ersten i Knoten
des ersten Graphen auf die ersten i Knoten des zweiten Graphen abbilden und
für die Wahl des i+1-ten Knoten die Adjazenz zu den bisherigen Knoten beachten.
Mögliche, aber nicht notwendige Ausbaustufen: Geschickte Wahl des i+1-ten
Knotens, Gradbedingungen etc.
Testinstanzen: Hier finden Sie einige Testinstanzen. Die Dateien enthalten
in der ersten Zeile eine Knotenzahl n. In jeder weiteren Zeile wird genau eine Kante durch die
Nummern ihrer Endknoten bestimmt, wobei alle Knoten von 0 bis n-1 nummeriert seien.
Dieses Datenformat wurde bereits in der Vorlesung Algorithmische Mathematik I verwendet
(siehe hier) und kann
mit den dort eingeführten Einleseroutinen eingelesen werden.
Neue Abgabefrist der Einstiegsaufgabe: 15.5.2020
Programmieraufgaben:
- Aufgabe 1 (Antonia Ellerbrock): Isomorphie von Intervallgraphen
Algorithmus von Lueker und Booth, wie in deren Arbeit beschrieben.
Betreuer: Siad Daboul
- Aufgabe 2 (Markus Kleinau): Exakter Isomorphietest
Algorithmus von Corneil und Gotlieb
Betreuer: Siad Daboul
- Aufgabe 3 (Linnea Leuze): Local Weisfeiler Lehman Algorithmus
Arbeit von Morris und Mutzel 2019, Vergleich k-dim vs local
Betreuer: Benjamin Klotz
- Aufgabe 4 (Simon Blasinski):
Erzeuge Liste aller nicht-isomorphen Graphen mit Eigenschaft Pi
Arbeiten von Read sowie Colbourn+Read,
Ergebnis sollte verglichen werden mit der sehr effizienten Implementierung von McKay (makeg)
Betreuer: Stefan Rabenstein
- Aufgabe 5 (Timo Brand): Practical Graph Isomorphism
Arbeit von McKay, in der die wesentliche Funktionsweise von Nauty beschrieben wird.
Betreuer: Stefan Rabenstein
- Aufgabe 6 (Jan Sebastian Walter): Largest Common Subgraph
Arbeit von Koch (via Clique Reduction) und Cuissart et al (direkter Ansatz)
Betreuer: Benjamin Klotz
Abgabefrist der Hauptaufgabe: 29.6.2020
Allgemeine Hinweise zum Programmieren.
Prof. Dr.
B. Korte,
Prof. Dr.
J. Vygen,
Prof.
Dr. S. Hougardy,
Prof.
Dr. S. Held,
Dr. U.
Brenner