Zufälliger geometrischer Graph

Aus testwiki
Zur Navigation springen Zur Suche springen

Ein zufälliger geometrischer Graph ist ein ungerichteter geometrischer Graph mit Knoten gleichverteilt auf dem zugrundeliegenden Raum [0,1)d.[1] Zwei Knoten sind genau dann verbunden, wenn ihre Distanz geringer ist als ein zuvor spezifizierter Parameter r(0,1).

Zufällige geometrische Graphen ähneln menschlichen sozialen Netzwerken in vielerlei Hinsicht. Sie zeigen häufig Gemeinschaftsstrukturen, d. h. es bilden sich dicht verknüpfte Gruppen von Knoten. Andere Generatoren für zufällige Graphen, wie zum Beispiel das Erdős-Rényi-Modell oder Barabási-Albert-Modell (BA-Modell), generieren keine solche Strukturen. Außerdem sind Knoten mit einem hohen Knotengrad besonders wahrscheinlich verbunden mit anderen Knoten mit einem hohen Knotengrad.

Eine Anwendung der zufälligen geometrischen Graphen besteht in der Modellierung von Ad-hoc-Netzwerken[2]. Außerdem können sie benutzt werden, um Benchmarks für (externe) Graphalgorithmen zu erstellen.

Definition

Generierung eines zufälligen geometrischen Graphs mit n = 500 Knoten für unterschiedliche Parameter r.

Im Folgenden bezeichnet G=(V,E) einen ungerichteten Graphen mit einer Knotenmenge V und einer Kantenmenge EV×V. Die Knotenanzahl sei |V|=n, die Kantenanzahl |E|=m. Außerdem sind alle mathematischen Betrachtungen auf dem metrischen Raum [0,1)d, falls nicht anders spezifiziert. Die dazugehörige Metrik ist der euklidische Abstand, also für beliebige Knoten x,y[0,1)d ist der euklidische Abstand definiert als d(x,y)=xy2=i=1d(xiyi)2.

Für n und r(0,1) wird ein zufälliger geometrischer Graph 𝒢(n,r) generiert, indem n Knoten gleichverteilt auf [0,1)d gezogen werden. Alle Knoten, deren euklidischer Abstand kleiner als r(0,1) ist, werden durch eine Kante verbunden. Hierbei werden keine Schleifen betrachtet, da sonst jeder Knoten eine Schleife hätte. Damit charakterisieren die Parameter n und r einen zufälligen geometrischen Graph.

Algorithmen

Naiver Algorithmus

Die naive Vorgehensweise ist es, für jeden Knoten die Distanz zu jedem anderen Knoten zu berechnen. Da es n(n1)2 mögliche Verbindungen gibt, ist die Zeitkomplexität Θ(n2). Die Knoten werden mittels eines Zufallszahlengenerators auf [0,1)d generiert. Praktisch kann man dies mit d Zufallszahlengeneratoren auf [0,1), einen für jede Dimension, realisieren.

Ein Algorithmus in Pseudocode dafür ist:

V = generiereKnoten(n) // Generiere n Knoten im Einheitswürfel.
besuchteKnoten = {}
for each p  V
    besuchteKnoten.add(p)
	for each q  V\besuchteKnoten   // Da es ein ungerichteter Graph ist, müssen
	                                // bereits besuchte Knoten nicht betrachtet werden.
		if distanz(p, q) <= r
			ergänzeKante(p, q) // Füge die Kante (p, q) zur Kantendatenstruktur hinzu.
		end
	end
end

Da dieser Algorithmus nicht skalierbar ist (jeder Knoten braucht die Position jedes anderen Knotens), haben Holtgrewe et al. und Funke et al. neue Algorithmen für dieses Problem vorgeschlagen.

Verteilte Algorithmen

Holtgrewe et al.

Dieser Algorithmus, welcher von Holtgrewe et al. vorgeschlagen wurde, war der erste verteilte Generator für zufällige geometrische Graphen für Dimension 2.[3] Das Einheitsquadrat wird hierbei in gleich große Quadrate (Zellen) mit einer Seitenlänge von mindestens rpartitioniert. Für eine gegebene Anzahl P=p2 von Prozessoren wird jedem Prozessor kp×kp Zellen zugewiesen. Hier ist k=1/r die Anzahl der Zellen der Größe r in einer Dimension. Der Einfachheit halber wird P als Quadratzahl angenommen, der Algorithmus kann aber für eine beliebige Anzahl an Prozessoren adaptiert werden. Jeder Prozessor generiert nP Knoten im Einheitsquadrat, insgesamt werden also die benötigten nKnoten generiert. Wenn hierbei Knoten generiert werden, welche in eine Zelle eines anderen Prozessors gehören, werden diese dann zu den korrekten Prozessoren verteilt. Nach diesem Schritt werden die Knoten nach den Zellennummer sortiert, in welche sie fallen, zum Beispiel mit Quicksort. Danach schickt jeder Prozessor jedem benachbarten Prozessor die Position der Knoten in den Randzellen, womit dann alle Kanten generiert werden können. Die Prozessoren brauchen nicht mehr Information zur Generierung der Kanten, da die Zellen mindestens die Seitenlänge rhaben.

Die erwartete Laufzeit ist O(nPlognP). Eine obere Schranke der Kommunikationskosten ist gegeben durch Talltoall(n/P,P)+Talltoall(1,P)+Tpointtopoint(n/(kP)+2). Hierbei ist Talltoall(l,c) die Zeit, die für eine alle-zu-alle Kommunikation mit Nachrichten der Länge l bit zu c Kommunikationspartnern. Tpointtopoint(l) ist die Zeit für eine Punkt-zu-Punkt Kommunikation für eine Nachricht der Länge l bit.

Da dieser Algorithmus nicht kommunikationsfrei ist, haben Funke et al. einen skalierbaren, verteilten Generator vorgeschlagen, der auch in höheren Dimensionen ohne Kommunikation zwischen den Prozessoren funktioniert.

Funke et al.

Die Vorgehensweise in diesem Algorithmus ist ähnlich zu dem Vorgehen von Holtgrewe:[3] Man teilt den Einheitswürfel in gleich große Chunks der Seitenlänge r oder größer. In der Dimension 2 sind es also Quadrate, in Dimension 3 Würfel. Da maximal 1/r Chunks in jede Dimension passen, ist die Anzahl der Chunks beschränkt durch 1/rd. Jedem der P Prozessoren werden 1/rdP Chunks zugewiesen, für welche es Punkte generiert. Für einen kommunikationsfreien Ablauf generiert jeder Prozessor zusätzlich dieselben Knoten in den benachbarten Chunks. Dies wird durch Hashfunktionen mit speziellen Seeds ermöglicht. Auf diese Weise berechnet jeder Prozessor dieselben Knoten und es müssen keine Knotenpositionen kommuniziert werden.

Für Dimension 3 haben Funke et al. bewiesen, dass die erwartete Laufzeit O(m+nP+logP) ist, ohne zusätzlichen Kosten für Kommunikation.[3]

Eigenschaften

Isolierte Knoten und Konnektivität

Die Wahrscheinlichkeit, dass ein einzelner Knoten in einem zufälligen geometrischen Graphen isoliert ist, ist (1πr2)n1[4]. Sei Xdie Zufallsvariable, die zählt wie viele Knoten isoliert sind, dann ist der ErwartungswertE(X)=n(1πr2)n1=neπr2nO(r4n). Der Term μ=neπr2nenthält Informationen über die Konnektivität des zufälligen geometrischen Graphen. Für μ0ist der Graph asymptotisch fast sicher verbunden. Für μist der Graph asymptotisch fast sicher nicht verbunden. Und für μ=Θ(1)besitzt der Graph eine riesige Komponente mit mehr als n2Knoten und Xist Poisson verteilt mit Parameter μ. Es folgt, dass falls μ=Θ(1)die Wahrscheinlichkeit, dass der Graph verbunden ist, P[X=0]eμist und die Wahrscheinlichkeit, dass er nicht verbunden ist, ist P[X>0]1eμ. Für jede lp-Norm (1p) und für jede Anzahl an Dimensionen d>2hat der Graph eine scharfe Grenze für die Konnektivität bei r(ln(n)αp,dn)1dmit einer Konstante αp,d. Im Spezialfall des zweidimensionalen Raumes und der euklidischen Norm (d=2 and p=2) ist rln(n)πn.

Hamiltonizität

Es wurde gezeigt, dass im zweidimensionalen Fall der Schwellwert rln(n)πnauch Aufschluss über die Existenz eines Hamiltonischen Kreises gibt[5]. Für jedes ϵ>0, hat der Graph asymptotisch fast sicher einen Hamiltonischen Kreis falls rln(n)(π+ϵ)nund der Graph hat asymptotisch fast sicher keinen Hamiltonischen Kreis falls rln(n)(πϵ)n.

Clusterkoeffizient

Der Clusterkoeffizient des zufälligen geometrischen Graphen hängt ausschließlich von der Dimension d des zugrundeliegenden Raumes [0,1)dab. Der Clusterkoeffizient ist[6] Cd=1Hd(1)für gerade dund Cd=32Hd(12)für ungerade d. Hierbei ist Hd(x)=1πi=xd2Γ(i)Γ(i+12)(34)i+12.

Für große d, vereinfacht sich der Clusterkoeffizient zu Cd32πd(34)d+12.

Generalisierte zufällige geometrische Graphen

Waxman[7] hat 1988 den zufälligen geometrischen Graphen generalisiert, indem die durch r gegebene deterministische Verbindungsfunktion durch eine probabilistische Verbindungsfunktion ausgetauscht wird. Die von Waxman vorgestellte Variante war eine gestreckte Exponentialfunktion, bei der zwei Knoten iund jmit Wahrscheinlichkeit Hij=βerijr0verbunden werden, wobei ijdie euklidische Separation ist und βsowie r0vom System gegebene Parameter. Ein solcher zufälliger geometrischer Graph wird auch „weicher“ zufälliger geometrischer Graph genannt, welcher zwei Quellen für Zufall hat: der Ort der Knoten und die Bildung der Kanten. Die Verbindungsfunktion wurde noch weiter verallgemeinert durch Hij=βe(rijr0)η, welche oft benutzt wird, um drahtlose Netzwerke ohne Interferenz zu untersuchen. Der Parameter ηgibt an, wie das Signal über die Distanz abfällt. Dabei entspricht η=2einem freien Raum und η>2entspricht gefüllteren Umgebungen wie eine Stadt (η=6wird als Modellierung für New York benutzt). Im Gegenzug entspricht η<2hoch reflektiven Umgebungen. Für η=1ergibt sich genau das Modell von Waxman und für ηund β=1ergibt sich das ursprüngliche Modell des zufälligen geometrischen Graphen. Die erweiterten Verbindungsfunktionen modellieren also, wie die Wahrscheinlichkeit einer Verbindung zwischen zwei Knoten abnimmt mit deren Distanz.

Weiche zufällige geometrische Graphen

Bei Verwendung der vorgestellten Exponentialfunktion als Verbindungsfunktion in einem Netzwerk mit hoher Dichte, ist die Anzahl isolierter Knoten Poisson verteilt und das resultierende Netzwerk enthält eine einzige riesige Komponente und sonst nur isolierte Knoten.[8] Wird sichergestellt, dass kein Knoten isoliert ist, ist der Graph asymptotisch fast sicher verbunden, ähnlich wie in[9] gezeigt. Eigenschaften wie Zentralität[10] und Konnektivität[11] werden meistens untersucht für den Fall, dass die Dichte asymptotisch gegen unendlich konvergiert. Dadurch werden Randfälle oft vernachlässigbar. In der realen Welt sind die Netzwerke aber endlich, auch wenn sie sehr dicht werden können und Randfälle haben einen Einfluss auf die Konnektivität. Tatsächlich wurde gezeigt[12], dass die Konnektivität, mit einer exponentiellen Verbindungsfunktion, stark beeinflusst wird durch Randeffekte, da Knoten nahe der Grenze der Domäne weniger wahrscheinlich mit den Knoten in der Masse verbunden werden. Daher kann volle Konnektivität ausgedrückt werden durch eine Summe an Beiträgen aus der Masse und von den geometrischen Grenzen. Eine allgemeinere Analyse der Verbindungsfunktionen in drahtlosen Netzwerken hat gezeigt, dass die Wahrscheinlichkeit für volle Konnektivität approximiert werden kann durch die Momente der Verbindungsfunktion und der Geometrie der Domäne.[13]

Einzelnachweise