Hinweise Aufgabe 1 Aufgabe 2 Aufgabe 3 (*) - TU Berlin
Hinweise Aufgabe 1 Aufgabe 2 Aufgabe 3 (*) - TU Berlin
Hinweise Aufgabe 1 Aufgabe 2 Aufgabe 3 (*) - TU Berlin
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Lade das Quellcode-Archiv uebung2.tar.gz von der Vorlesungswebseite und entpacke<br />
es. Mittels File → Import kannst du das Projekt z.B. in Eclipse importieren.<br />
1. In der Vorlesung haben wir die Definitionen von Charakteristischer Pfadlänge und<br />
dem Clustering-Koeffizienten kennengelernt. Im ersten Schritt sollen diese beiden<br />
Metriken implementiert werden.<br />
Du findest im Projekt ein Paket p2p.uebung2.graph, das einen sehr simplen ungerichteten<br />
Graphen implementiert. Desweiteren findest Du ein Paket p2p.uebung2.<br />
generators mit einem Interface GraphGenerator mit dem Graphen generiert werden<br />
können.<br />
Du findest ein Interface p2p.uebung2.analysis.Analyzer, mit zwei Methoden<br />
zum Bestimmen von Charakteristischer Pfadlänge und dem Clustering-Koeffizienten.<br />
Implementiere dieses Interface in der Klasse p2p.uebung2.analysis.AnalyzerImpl.<br />
Führe den JUnit Test p2p.uebung2.analysis.AnalyzerTest im Ordner test aus.<br />
Wenn er erfolgreich ist, sollte diese <strong>Aufgabe</strong> erledigt sein.<br />
Tipp: Für die charakteristische Pfadlänge musst du die kürzesten Wege zwischen<br />
zwei Punkten bestimmen. Dies ist mit einer Breitensuche möglich.<br />
2. In der Vorlesung haben wir weiterhin, die Generierung von Graphen nach dem<br />
Barabási-Albert Modell und dem Watts-Strogatz Modell kennengelernt.<br />
Implementiere diese Modelle in den Klassen p2p.uebung2.generators.Graph-<br />
GeneratorBarabasiAlbert und p2p.uebung2.generators.GraphGeneratorWatts-<br />
Strogatz. Die JUnit Tests im Paket p2p.uebung2.generators können zum Testen<br />
genutzt werden. Es könnte insb. beim passieren Watts-Strogatz Modell passieren,<br />
dass die Ergebnisse leicht abweichen, wenn das rewiring unterschiedlich implementiert<br />
wird.<br />
Tipp: Die Klassen GraphGeneratorGnp und GraphGeneratorRing zeigen, wie man<br />
Graphgeneratoren erzeugt.<br />
3. Nutze die Klassen aus (a) und (b) und vergleiche die Ergebnisse mit denen aus der<br />
Tabelle in den Folien (Eigenschaften von Gnutella, Untersuchung von 2000).<br />
<strong>Aufgabe</strong> 4<br />
In der Vorlesungen habt ihr die grundlegenden Operationen von distributed hash tables<br />
(DHTs) kennengelernt:<br />
• Jeder Knoten im Netz ist für einen bestimmten Bereich von IDs zuständig.<br />
• Es gibt eine Routing-Funktion, die eine Nachricht an einen Knoten sendet, der für<br />
eine gegebene ID zuständig ist.<br />
Überlege, wie ein Instant-Messenger-Programm mit Hilfe eines DHT-Netzes realisiert<br />
werden kann. Dabei soll folgende Funktionalität vorhanden sein (analog zu Skype):<br />
2