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 einen gerichteten, gewichteten 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. den Aufbau eines DNA-Netzgraphen aus gegebenen DNA-Sequenzen, in dem dann eine
2-Approximation des Minimum-Steiner-Trees gefunden wird (mit Hilfe des MinimumSpanning-Tree-Algorithmus). Die Blätter des gesuchten Steiner-Trees sind die gegebenen
DNA-Sequenzen. Die minimalen paarweisen Distanzen können über die Edit-Distanz berechnet werden.
3
Protokoll
Minimum-Spanning-Tree: Erzeugt und beschreibt Testfälle, 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