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