Proseminar „Algorithmen auf Graphen“ Zufälliges Erzeugen von Graphen und Bayes-Netzen Björn Schapitz, CV04, 20.06.2006 Gliederung (1) (2) (3) Einleitung Geschichtliches Algorithmen / Beispiele (1) (2) (3) (4) (5) (4) (5) 2 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 1. Beweise führen (Nachweise der Existenz von Graphen mit bestimmten Eigenschaften) 2. Modellierung von großen, unüberschaubaren Strukturen (z.B. Netzwerke, Internet) 3 Einleitung Arten zufälliger Graphen echt zufällige Graphen Oft bestimmte Eigenschaften benötigt: – – – 4 Begrenzt maximale Cliquen Verhältnis Kanten/Knoten (Dichte) Zusammenhängend ? Geschichtliches Paul Erdös – – 5 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 6 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): – – 7 Zufallszahl x erzeugen: 0 ≤ x ≤ 1 Wenn x > p, Element auf 1 setzen Beispiel 1 8 Zufallsgraph mit 5 Knoten 5 x 5 Matrix erzeugen n1 n2 n3 n4 n5 n1 0 0 0 0 0 n2 0 0 0 0 0 n3 0 0 0 0 0 n4 0 0 0 0 0 n5 0 0 0 0 0 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 n1 0 1 0 1 1 n2 0 0 1 1 0 n3 0 0 0 0 1 n4 0 0 0 0 1 n5 0 0 0 0 0 9 Beispiel 1 Graph anhand Adjazenzmatrix aufbauen n1 10 n1 n2 n3 n4 n5 0 1 0 1 1 n2 0 n3 0 n4 0 0 0 0 1 0 0 1 0 0 0 1 1 n5 0 0 0 0 0 Eigenschaften so erzeugter Graphen 11 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: – – 12 p und q von 1..n wählen, so dass p<q Kante von p nach q erzeugen Beispiel 2 13 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=1 q=4; 14 p=4 q=5; p=3 q=5; p=1 q=2; p=1 q=5; Kante von np nach nq setzen p=1 q=3; p=2 q=5; Eigenschaften so erzeugter Graphen 15 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 16 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 - 1. 2. 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 17 V\K benötigt) Rekursive Erzeugung - Algorithmus 3. 4. 5. 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. 18 Rekursive Erzeugung - Eigenschaften Vorteile: – – Nachteile: – – – 19 Variation von k und s hoher/breiter Graph Rekursive topologische Aufspaltung einfacheres Ermitteln von Attribut-Abhängigkeiten 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 20 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: – – – 21 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 22 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: – – 23 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: – Für i=0 bis r-2 – Kante von vj zu vi setzen (j [r-1,i-1]) Kante von vi zu x setzen (x {vj | p(vj)≥1}) Für i=r bis n-1: – Solange p(vi) ≥ 1 wiederhole: 24 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: – – – 25 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. 2. 3. 4. emax = m(n-r) = 6 e=6 d-(n0)=0, d-(n1 )=0 restliche Knoten: – – – n2=[1,min(2,2)]=2 n3=[1,min(3,2)]=2 n4=[1,min(4,2)]=2 5. p(n2)=2 26 p(n3)=2 p(n4)=2 Beispiel 3 6. i=2 bis 4 – – – nj ni, j[1,1] n1 n2 nj ni, j[1,2] n1 n3 nj ni, j[1,3] n1 n4 7. i=0 bis 0 – 27 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 28 Bayes-Netze Bayessches Netz: – – – 29 Gerichteter azyklischer Graph Jeder Knoten besitzt Variable mit Angabe über ihre statistische Verteilung Meistens zusammenhängend Erweitern zum Bayesschen-Netz 30 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 31 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 32 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