Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester 2010/11 H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 1 / 620
Versteckte Folgerung Falls P N P gilt, gibt es keinen Polynomialzeit-Algorithmus, der eine Clique der Größe k in einem Graphen findet, der garantiert eine solche Clique der Größe k enthält. Bemerkung: Die Schwierigkeit, eine versteckte Clique zu finden, hängt nicht von der Größe der Clique ab. Auch der Größe (1 ε) n können nicht in Polynomialzeit gefunden werden. H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 282 / 620
Maximum-Clique: besserer exponentieller Algorithmen Satz Eine Maximum-Clique (also eine Clique maximaler Kardinalität) kann in Zeit O (1.3803 n ) berechnet werden. (O ignoriert polynomielle Faktoren) H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 283 / 620
Maximum-Clique: besserer exponentieller Algorithmus Beweis. Falls δ(g) n 3, dann fehlen in G nur einfache Pfade und Kreise im Vergleich zum vollständigen Graphen K n Maximum Clique kann in O(m + n) berechnet werden: betrachte zur Veranschaulichung den komplementären Graphen entsprechen unabhängigen Mengen In einem Pfad P kann man die Größe einer unabhängigen Menge (independent set) maximaler Kardinalität berechnen als V (P) /2. In einem Kreis C ist die Größe V (C) /2. Da die Pfade und Kreise paarweise disjunkt sind, kann man die einzelnen Werte einfach addieren. H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 284 / 620
Maximum-Clique: besserer exponentieller Algorithmus Beweis. Ansonsten sei v ein Knoten mit Grad deg G (v) n 4 Jede Maximum-Clique ist entweder {v} vereinigt mit einer Maximum-Clique von G[N(v)] oder eine Maximum-Clique von G[V \ {v}]. Rekursive Berechnung mit worst-case-zeit T (n) T (n 4) + T (n 1) + c (m + n) mit Erzeugendenfunktionen kann man zeigen, dass T (n) O (β n ) mit β 1.3803, wobei β die größte reelle Nullstelle des charakteristischen Polynoms β 4 β 3 1 ist H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 285 / 620
Approximation von Maximum- Approximation der größten Clique mit Faktor n/2 ist einfach: wähle die Endknoten einer Kante, falls es eine gibt. Satz Es gibt einen Algorithmus, der bei Eingabe eines Graphen G mit n Knoten in polynomieller ( Zeit ) eine Clique ausgibt, deren Größe maximal um einen Faktor O n von der Maximum-größe ω(g) abweicht. (log n) 2 Satz Falls nicht N P = ZPP gilt, dann existiert kein Polynomialzeitalgorithmus, der bei Eingabe eines Graphen G mit n Knoten eine Clique ausgibt, deren Größe maximal um einen Faktor n 1 ɛ von der Maximum-größe ω(g) abweicht (für jedes ɛ > 0). ZPP: Klasse der Probleme, die von randomisierten Algorithmen in erwarteter Polynomialzeit gelöst werden können ohne Fehler zu machen H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 286 / 620
Suche nach fester Größe In einigen Fällen reicht es, nach fester Größe zu suchen größe wird nicht als Teil der Eingabe betrachtet Vollständige Suche: O(k 2 n k ) = O(n k ), wenn größe k fest ist H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 287 / 620
Bessere Komplexität für Dreiecke A(G): Adjazenzmatrix von Graph G B(G) = A(G) 2 = A(G) A(G): Einträge b ij sind die Wege der Länge 2 zwischen den Knoten v i und v j läßt sich durch schnellere Matrixmultiplikation ausrechnen, z.b. in O(n 2.376 ) (Coppersmith / Winograd, 1990) Existiert ein Eintrag b ij 1 mit i j, dann gibt es einen Knoten u V, der zu v i und zu v j adjazent ist. Wenn nun auch eine Kante {v i, v j } existiert, dann enthält der Graph ein Dreieck {v i, v j, u} Checke für alle echt positiven Werte b ij, ob es eine Kante {v i, v j } gibt Zeit-Komplexität: O(n α ), wobei α < 2.376 der Exponent für Matrixmultiplikation ist H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 288 / 620
fester Größe k 3 Sei α(r, s, t) so definiert, dass man die Multiplikation einer n r n s -Matrix mit einer n s n t -Matrix in Zeit O ( n α(r,s,t)) berechnen kann. Satz Für jedes k 3 existiert ein Algorithmus, der eine Clique der Größe k in einem Graphen mit n Knoten finden kann (falls eine solche existiert) und der in Zeit O ( n β(k)) läuft, wobei β(k) = α( k/3, (k 1)/3, k/3 ). H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 289 / 620
fester Größe k 3 Beweis. Seien k 1 = k/3, k 2 = (k 1)/3 und k 3 = k/3 Es gilt k = k 1 + k 2 + k 3. Konstruiere tripartiten Hilfsgraph G Ṽ = Ṽ1 Ṽ2 Ṽ3, wobei V i aus allen der Größe k i in G besteht (kann man mit dem naiven Algorithmus in O(n k i ) berechnen) Knoten U Ṽi und U Ṽ j sind adjazent in G g.d.w. i j und U U eine Clique der Größe k i + k j in G ist. Berechne dazu die partiellen Adjazenzmatrizen A 12, A 13 und A 23, die die Kanten zwischen den jeweiligen Knotenmengen darstellen Teste G auf Dreiecke H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 290 / 620
fester Größe k 3 Beweis. Dreieck {U 1, U 2, U 3 } impliziert eine Clique der Größe k in G geht mit schneller Matrixmultiplikation, aber hier muss eine O(n k 1 ) O(n k 2 )-Matrix (Kanten zwischen Ṽ1 und Ṽ2) mit einer O(n k 2 ) O(n k 3 )-Matrix (Kanten zwischen Ṽ 2 und Ṽ 3 ) multipliziert werden, und zwar in Zeit O ( n β(k)) Berechnung der drei Matrizen A 12, A 23 und A 13 in O ( n max{k 1+k 2,k 1 +k 3,k 2 +k 3 } ) = O (n 2k 3 ) (wird dominiert durch die Zeit O(n β(k) ) für die Multiplikation der rechteckigen Matrizen, also B 13 = A 12 A 23 ) H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 291 / 620
fester Größe k 3 k3 O( ) n k2 O( ) n A 23 k2 O( ) n O( ) n k 1 A 12 B 13 B 13 wird dann mit A 13 verknüpft H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 292 / 620
fester Größe k 3? k 1 k 2 k 3 H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 293 / 620
fester Größe: Beispielkomplexitäten größe Vollständige Suche Matrixmultiplikation 3 O(n 3 ) O(n 2.376 ) 4 O(n 4 ) O(n 3.376 ) 5 O(n 5 ) O(n 4.220 ) 6 O(n 6 ) O(n 4.751 ) 7 O(n 7 ) O(n 5.751 ) 8 O(n 8 ) O(n 6.595 ) H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 294 / 620
fester Größe: Mitgliedszahlen Satz Für jedes k 3 existiert ein Algorithmus, der in Zeit O ( n β(k)) läuft und der für jeden Knoten zählt, an wieviel der Größe k er beteiligt ist (in einem Graphen mit n Knoten), wobei β(k) = α( k/3, (k 1)/3, k/3 ). H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 295 / 620
fester Größe: Mitgliedszahlen Beweis. Für k = 3 (Dreiecke) kann man nicht nur feststellen, ob zwei Knoten v i und v j zu einem Dreieck gehören, sondern auch zu wievielen. Wenn Kante {v i, v j } in G existiert, dann ist diese Anzahl gleich dem Eintrag b ij in der quadrierten Adjazenzmatrix B(G) = A(G) A(G). Anwendung im allgemeinen Fall von G: für jeden Knoten v V sei C k (v) die Anzahl verschiedener der Größe k, in denen v enthalten ist. Entsprechend sei C 3 (U) die Anzahl der Dreiecke in G, zu denen Knoten U gehört. (U ist eine Clique der Größe kleiner als k) H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 296 / 620
fester Größe: Mitgliedszahlen Beweis. der Größe k können viele verschiedene Repräsentationen in G haben. Diese Anzahl ist die Anzahl der Partitionierungen von einer Menge der Kardinalität k in drei Mengen der Kardinalitäten k 1, k 2 und k 3, also der Multinomialkoeffizient ( ) k k 1,k 2,k 3. o.b.d.a. sei k 1 der kleinste der drei Parameter. Sei U(v) die Menge aller U der Größe k 1 in G, so dass v U. Dann gilt: ( ) (k 1) C 3 (U) = C k (v) (k 1 1), k 2, k 3 U U(v) Berechne linke Seite in O ( n β(k)) (berechne Matrizen; suche Einträge für alle U, die v enthalten); Berechne C k (v)) H. Täubig (TUM) Fortg. Graph- u. Netzwerk-Algorithmen WS 10/11 297 / 620