09.02.2014 Aufrufe

Hauptstudiumspraktikum Algorithmen und Datenstrukturen

Hauptstudiumspraktikum Algorithmen und Datenstrukturen

Hauptstudiumspraktikum Algorithmen und Datenstrukturen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

28 Stefan Klinger, Odilo Oehmichen, Jonas Ritter<br />

JDSL-Interface VertexIterator abgeleiteten Iterator (ComponentIterator)<br />

realisiert. Des weiteren stehen dem SCC Algorithmus typsichere<br />

Stackvarianten für Knoten (VertexStack) <strong>und</strong> Komponenten<br />

(ComponentStack) zur Verfügung. Der Stack für die Knoten ist<br />

der im Algorithmus beschriebene. Der Komponenten-Stack dient der<br />

Speicherung der gef<strong>und</strong>enen Komponenten <strong>und</strong> zur Erzeugung einer<br />

Komponenten-Enumeration nach Beendigung des Algorithmus. Eine<br />

weitere Gruppe von Klassen kümmert sich um das Auslesen von .jar<br />

Files <strong>und</strong> das Erzeugen von Graphen.<br />

4 Laufzeitanalyse <strong>und</strong> Ergebnisse<br />

4.1 Allgemein<br />

Wie in [1] schon gezeigt, benötigt der Algorithmus Linearzeit in der<br />

Anzahl der Knoten <strong>und</strong> Kanten. Wir mußten also nur noch zeigen,<br />

daß unsere Implementation dies auch tut.<br />

Dazu ließen wir den Algorithmus auf einer Vielzahl von Graphen<br />

operieren <strong>und</strong> beobachteten das dabei auftretende Laufzeitverhalten.<br />

Wir verwendeten unterschiedliche Klassen von Graphen, darunter<br />

auch zufällige Graphen, von deren Struktur wir keine weitere Kenntnis<br />

hatten 1 . Die Laufzeittests wurden dabei auf einem Rechner im<br />

Netz der Fakultät für Mathematik <strong>und</strong> Informatik der Universität<br />

Konstanz durchgeführt.<br />

4.2 Eingabedaten<br />

Die zu untersuchenden Graphen einer Klasse lagen in Form eines jar-<br />

Archives vor, in dem jeweils eine Datei einen Graphen repräsentierte.<br />

Die Graphen waren als Folge von Kanten in den Dateien gespeichert,<br />

wobei in jeder Zeile genau eine Kante durch die Integer Identifikationsnummern<br />

ihrer Endknoten beschrieben ist.<br />

4.3 Laufzeitmessung<br />

Die Klasse OTFTester läßt den Algorithmus auf Graphklassen im<br />

oben angegebenen Format arbeiten. Für jeden Graphen wird dabei<br />

die Anzahl der Knoten, der Kanten <strong>und</strong> der ermittelten starken Zusammenhangskomponenten,<br />

sowie die benötigte Zeit in Millisek<strong>und</strong>en<br />

ausgegeben.<br />

1 Wir erhielten, wie auch alle anderen Teilnehmer des Praktikums, die zwei<br />

Graphklassen graphA.jar <strong>und</strong> graphA2.jar zum Test unserer Implementation.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!