Praktikum Data-Mining und Sequenzanalyse: Graphen

Werbung
Praktikum Data-Mining und Sequenzanalyse:
Graphen
Florian Rasche, Kerstin Scheubert
24. Januar 2011
1
Datenstrukturen und Implementierung
Implementiert zwei Datenstrukturen für gerichtete und ungerichtete, gewichtete Graphen. Die
eine Implementierung soll auf einer Adjazenzmatrix basieren, die andere auf Adjazenzlisten.
Mindestens die folgenden Operationen sollen zur Verfügung stehen:
-isEmpty()
-getVertexCount()
-getEdgeCount()
-containsEdge(int i, int j)
-addVertex(int i)
-addEdge(int i, int j)
-removeVertex(int i)
-removeEdge(int i, int j)
Die Implementierungen sollen über ein vernünftiges exception handling verfügen. Das beinhaltet eine eigene Exception-Klasse.
2
Algorithmen
Implementiert
1. Minimum-Spanning-Tree (Prim’s algorithm)
2. Die Erstellung eines Graphen aus den paarweisen Edit-Distanzen, 2-Approximation des
Minimum-Steiner-Trees (mit Hilfe des Minimum-Spanning-Tree) und Aufbau des zugehrigen Netzgraphen.
3
Protokoll
Minimum-Spanning-Tree: Erzeugt und beschreibt Testgraphen, die die Funktionalität eurer
Implementierung überprüfen und Vor- bzw. Nachteile aufzeigen. Konzentriert euch auf den Unterschied zwischen der Matrix- und der Listen-basierten Implementierung. Wann sollte man welche Datenstruktur bevorzugen? Welche Aussagen kann man über den Speicher-Verbrauch und
Laufzeiten machen? Welche Laufzeit hat eure Implementierung des Prim’s Algorithmus? Kann
man die Laufzeit noch verbessern?
DNA-Netzgraphen und Minimum-Steiner-Tree: Baut einen DNA-Netzgraphen für selbstgewählte Sequenzen auf. Bis zu welcher Sequenzanzahl und -länge kann man den DNA-Netzgraphen
noch aufbauen? Welche Aussagen kann man über den Speicherverbrauch und die Laufzeiten
machen? Testet die 2-Approximation des Steiner-Tree-Algorithmus anhand der gewählten Sequenzen.
1
Herunterladen