06.11.2014 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

VL Peer-2-Peer Netzwerke<br />

SS 2009<br />

Dr. Dominic Battré<br />

Ausgabe 23.4.2009<br />

Abgabe 30.4.2009<br />

Besprechung 8.5.2009<br />

Übungszettel 2<br />

<strong>Hinweise</strong><br />

• Übungen können in Gruppen beliebiger Größe bearbeitet werden<br />

• Abgabe per e-Mail an dominic.battre@tu-berlin.de<br />

• Alle abgegebenen Zettel werden korrigiert<br />

• Übungen werden nicht benotet – die Bearbeitung wird aber dringend empfohlen!<br />

• Der Stoff der Übungen ist grundsätzlich prüfungsrelevant! Ausnahmen sind mit<br />

Stern gekennzeichnete <strong>Aufgabe</strong>n.<br />

• Homepage der Vorlesung: http://www.cit.tu-berlin.de/?id=51290<br />

<strong>Aufgabe</strong> 1<br />

Zeichne einen Graphen mit Cluster-Koeffizient 1 und zwei Graphen mit Cluster-Koeffizient<br />

0 bestehend aus 5 Knoten. Welche Durchmesser und Charakteristischen Pfadlängen haben<br />

diese Graphen?<br />

<strong>Aufgabe</strong> 2<br />

Ein ungerichteter G(n, p) Graph ist ein zufälliger ungerichteter Graph mit n Knoten,<br />

wobei die Wahrscheinlichkeit, dass eine Kante zwischen 2 Knoten existiert gleich p ist.<br />

Ein ungerichteter G(n, k) Graph ist ein zufälliger ungerichteter Graph mit n Knoten und<br />

genau k Kanten.<br />

Wie kann ich für gegebene Werte (n, p) die Werte für (n, k) finden, sodass die beiden<br />

Graphen G(n, p) und G(n, k) im Erwartungswert gleich viele Kanten besitzen?<br />

<strong>Aufgabe</strong> 3 (*)<br />

Diese <strong>Aufgabe</strong> ist sehr programmieraufwändig und für diejenigen gedacht, die den<br />

erlernten Stoff zu P2P Netzwerken praktisch ausprobieren möchten. Die Bearbeitung ist<br />

daher noch freiwilliger als die Bearbeitung der anderen <strong>Aufgabe</strong>n. ;-) In der Übung am<br />

24.4.09 werden noch weitere Tipps zu dieser <strong>Aufgabe</strong> gegeben.<br />

1


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


• Jeder Teilnehmer hat einen Namen, beim Programmstart loggt man sich mit Name<br />

/ Passwort ein.<br />

• Jeder Teilnehmer hat eine Liste von Bekannten.<br />

• Nach Programmstart sehe ich eine Liste meiner Bekannten, und es ist jeweils<br />

gekennzeichnet, ob der Bekannte gerade Online oder Offline ist.<br />

• Ich kann einen Chat mit einem Bekannten starten. Jede Nachricht, die ich tippe,<br />

wird sofort an den Bekannten übermittelt. Wenn er nicht online ist, werden die<br />

Nachrichten gepuffert, bis er online ist.<br />

• Ich kann weitere Bekannte zu einem Chat einladen. Auch diese bekommen die<br />

Nachrichten angezeigt.<br />

• Wenn ich einen Chat später fortsetze, kann ich die alten Nachrichten wieder ansehen.<br />

Skizziere jeweils kurz, wie diese Funktionen im DHT-Netz umgesetzt werden können.<br />

Was muss passieren, wenn ein Knoten das Netzwerk betritt bzw. wenn er es wieder<br />

verlässt? Auf welchem Knoten werden welche Daten gespeichert?<br />

Anmerkung 1: Normalerweise ist die Routing-Funktion unzuverlässig (Nachrichten<br />

können dupliziert werden oder verloren gehen). Für diese <strong>Aufgabe</strong> nehmen wir an, dass<br />

sie zuverlässig ist.<br />

Anmerkung 2: Sicherheitsaspekte können erstmal vernachlässigt werden.<br />

3

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!