Proseminar „Algorithmen auf Graphen“ Zufälliges Erzeugen von Graphen und Bayes-Netzen Björn Schapitz, CV04, 20.06.2006
Gliederung Einleitung Geschichtliches Algorithmen / Beispiele Anschauliches Vorgehen Zufällige Adjazenzmatrix Zufällige Kantenanordnung Rekursive Erzeugung One-Pass-Algorithm Zufällige Bayes-Netze Zusammenfassung
Gründe zur Beschäftigung mit zufälligen Graphen Beweise führen (Nachweise der Existenz von Graphen mit bestimmten Eigenschaften) Modellierung von großen, unüberschaubaren Strukturen (z.B. Netzwerke, Internet) Einleitung
Arten zufälliger Graphen echt zufällige Graphen Oft bestimmte Eigenschaften benötigt: Begrenzt maximale Cliquen Verhältnis Kanten/Knoten (Dichte) Zusammenhängend ?
Geschichtliches Paul Erdös ungarischer Mathematiker * 26.03.1913, † 20.09.96 Entwickelte die „Probabilistische Methode“ zum Beweis seines Satzes: „Es gibt Graphen, die gleichzeitig beliebig hohe Taillenweite und beliebig hohe chromatische Zahl haben.“
Anschauliches Vorgehen Leeren Graphen mit n Knoten erzeugen Wahrscheinlichkeitszahl p mit 0 ≤ p ≤ 1erzeugen Für jedes Tupel (n1,n2) mit (n1≠n2) entscheiden, ob Kante gesetzt wird Beispiel:
Zufällige Adjazenzmatrix n Knoten: n x n Matrix erzeugen Mit Nullen füllen Wahrscheinlichkeitszahl p erzeugen: 0 ≤ p ≤ 1 Für jedes Element der oberen Dreiecksmatrix (ohne Hauptdiagonale): Zufallszahl x erzeugen: 0 ≤ x ≤ 1 Wenn x > p, Element auf 1 setzen
Beispiel 1 Zufallsgraph mit 5 Knoten 5 x 5 Matrix erzeugen n1 n2 n3 n4
Beispiel 1 Wahrscheinlichkeit p erzeugen p = 0.5 Für jedes Element oberhalb der Hauptdiagonalen Zufallszahl x erzeugen falls x > p, Matrixelement anpassen n1 n2 n3 n4 n5 1
Beispiel 1 Graph anhand Adjazenzmatrix aufbauen n1 n2 n3 n4 n5 1
Eigenschaften so erzeugter Graphen Erzeugt echt zufällige Graphen Anzahl der Kanten über p beeinflussbar Nicht immer zusammenhängend Komplexität: O(n2)
Zufällige Kantenanordnung Leeren Graphen mit n Knoten erzeugen Anzahl der Kanten e zwischen 0 und emax wählen 1 bis e mal: p und q von 1..n wählen, so dass p<q Kante von p nach q erzeugen
Beispiel 2 Leeren Graph mit 5 Knoten erzeugen emax = 10 (max. Anzahl Kanten ohne Loops = (n(n-1))/2 e zufällig aus 1 bis 10: e = 8
Beispiel 2 1 bis 8 mal p und q aus 1..n wählen (mit p<q): p=2 q=3; p=4 q=5; p=1 q=2; p=1 q=3; p=1 q=4; p=3 q=5; p=1 q=5; p=2 q=5; Kante von np nach nq setzen
Eigenschaften so erzeugter Graphen gezieltes Setzen von e = feste Kantenanzahl Durch geeignete Wahl von p und q kann die max. Anzahl der Eltern und Kinder beeinflusst werden Sind nicht immer zusammenhängend Laufzeit: abhängig von e Komplexität: bis zu O(n2)
Rekursive Erzeugung Basiert auf der Formel von R.W. Robinson, Anzahl möglicher Graphen mit n Knoten und k Wurzeln ist an(k), mit Wiederholte rekursive Zerlegung in Wurzeln und Rest-Knoten Für alle möglichen Wurzel-Anzahlen s des Teilgraphen alle Kombinationen aufsummieren
Rekursive Erzeugung - Algorithmus Umkehrung der Berechnungsformel zur Berechnung eines Graphen (benötigt Knotenmenge V und Wurzelanzahl k) Zufällig k Wurzeln wählen: K V, |K| = k Zufällig s aus 1..(n-k) wählen, dabei beachten: (s wird für die Erzeugung von S V\K benötigt)
Rekursive Erzeugung - Algorithmus Wähle zufällig und unabhängig voneinander s nichtleere Teilmengen aus K Eltern für jedes Element aus S Wähle zufällig und unabhängig voneinander (n-k-s) Teilmengen (dürfen leer sein) aus K Eltern für Elemente aus V\K\S Benutze diesen Algorithmus rekursiv, um aus V \ K als Knotenmenge und s als Anzahl der Wurzeln einen azyklischen Graphen mit den Wurzel-Knoten S zu erzeugen Bei zufälliger Bestimmung von k muss P(k)=an(k)/an gelten.
Rekursive Erzeugung - Eigenschaften Vorteile: Variation von k und s hoher/breiter Graph Rekursive topologische Aufspaltung einfacheres Ermitteln von Attribut-Abhängigkeiten Nachteile: Nicht immer zusammenhängend an(k) müssen für alle Kombinationen von k und n berechnet und zwischengespeichert werden (a1=1, a2=3, a3=25, … , a7=1.138.779.265!!!) Komplexität: O(n2)
One-Pass-Algorithm Erzeugt in einem Schritt einen zusammenhängenden Graphen Anzahl Knoten n und Wurzeln r muss bekannt sein Maximaler Eingangsgrad m ist begrenzt
One-Pass-Algorithm Notwendige Bedingungen: n ≥ 2 sinnvoller Graph muss mindestens 2 Knoten haben 1 ≤ r < n mindestens eine Wurzel 1 ≤ m < n zusammenhängender Graph
One-Pass-Algorithm Einschränkungen von n, r und m: wenn r ≥ m, dann m(n-r) ≥ n-1 sonst m(n-r) + m(m-1)-r(r-1) ≥ n-1 2 Eingabe: Knoten n, Wurzeln r und maximaler Eingangsgrad m Ausgabe: zusammenhängender azyklischer gerichteter Graph Komplexität: O(mn)
One-Pass-Algorithm Maximale Kantenanzahl berechnen: emax = m(n-r) falls r ≥ m emax = m(n-r)+½(m(m-1)-r(r-1)) sonst Kantenanzahl e zufällig aus Intervall [n, emax] bestimmen Für alle Wurzelknoten (v0…vr-1) Eingangsgrad d-(vi)=0 setzen Für restliche Knoten d-(vi) = [1,min(i,m)] setzen dabei beachten, dass ∑i=r d-(vi)=e sein muss
One-Pass-Algorithm Für alle Knoten Anzahl zu verbindender Eltern p(vi)=d-(vi) Für i=r bis n-1: Kante von vj zu vi setzen (j [r-1,i-1]) Für i=0 bis r-2 Kante von vi zu x setzen (x {vj | p(vj)≥1}) Solange p(vi) ≥ 1 wiederhole: Kante von x zu vi setzen (x {vj | 0 ≤ j ≤ i-1, (vj,vi) є E})
Beispiel 3 Graph mit 5 Knoten, 2 Wurzeln und maximalem Eingangsgrad 2 Bedingungen: n ≥ 2 erfüllt 1 ≤ r < n erfüllt 1 ≤ m < n erfüllt Einschränkung: da r ≥ m, muss m(n-r) ≥ n-1 gelten 2(5-2) ≥ 5-1 6 ≥ 4
Beispiel 3 1. emax = m(n-r) = 6 2. e=6 3. d-(n0)=0, d-(n1 )=0 4. restliche Knoten: n2=[1,min(2,2)]=2 n3=[1,min(3,2)]=2 n4=[1,min(4,2)]=2 5. p(n2)=2 p(n3)=2 p(n4)=2
Beispiel 3 6. i=2 bis 4 7. i=0 bis 0 nj ni, j[1,1] n1 n2 Kante von ni zu x, wobei x={nj | p(nj)≥1} n0 n2
Beispiel 3 8. i=2 bis 4 - p(n2) ≥ 1 ? nein - p(n3) ≥ 1 ? ja, x zu n3, x {nj | 0 ≤ j ≤ 2, (nj,n3) nicht Element von E nj=n0, n0n3 - p(n4) ≥ 1 ? ja, x zu n4, x {nj | 0 ≤ j ≤ 3, (nj,n4) nicht Element von E nj=n0, n0n4
Bayes-Netze Bayessches Netz: Gerichteter azyklischer Graph Jeder Knoten besitzt Variable mit Angabe über ihre statistische Verteilung Meistens zusammenhängend
Erweitern zum Bayesschen-Netz Jedem Knoten vi Variable Vi zuordnen Anzahl der möglichen Zustände für Vi bestimmen: Ni=|Vi| Für jeden Wurzelknoten: Ni Zufallswerte erzeugen und zu ∑=1 normieren Für alle anderen Knoten in topologischer Reihenfolge: für jede Belegung der Elternknoten Ni Zufallswerte erzeugen und zu ∑=1 normieren Bei Bedarf beliebig viele Einzelbelegungen des Netzes entsprechend den Verteilungen erzeugen Komplexität: abhängig von Elternknoten-Anzahl, ≈ O(mn)
Zusammenfassung Zufällige Graphen verwendet zur Beweisführung und zur Modellierung unübersichtlicher Strukturen Algorithmen: Zufällige Adjazenzmatrix: kaum Variationen möglich Zufällige Kantenzuordnung: Variationen bedingt über Parameter möglich Rekursive Erzeugung: Struktur variierbar, aber komplex und langsam One-Pass-Algorithm: zusammenhängend, wenige Kanten gut für Bayessche-Netze Bayessche Netze: Erweiterungen obiger Algorithmen mit Zustandsvariablen für Knoten
Quellen Reinhard Diestel: „Graphentheorie“, 1996, Springer Svante Janson, Tomasz Luczak, Andrzej Rucinski: „Random Graphs“, 2000, John Wiley & Sons Inc. Lothar Wenzel: „Wie klein ist doch die Welt“, in: Toolbox, Ausgabe 6/2002, S. 6 ff. Ansgar Voigt: „Mathe-Tricks in der Biologie“, in: RUBIN, 2003 Peter Eichelsbacher: „Die Steinsche Methode“, 2003