Grundbegriffe der Informatik Kapitel 16: Erste Algorithmen in Graphen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 1 / 58 Überblick Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen 2-Erreichbarkeit an einem Beispiel Matrizenmultiplikation und Matrizenaddition Einfache Berechnung der Erreichbarkeitsrelation Potenzen der Adjazenzmatrix Erste Möglichkeit für die Berechnung der Wegematrix Zählen arithmetischer Operationen Schnellere Berechnungen der Wegematrix Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 2 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen Einfache Berechnung der Erreichbarkeitsrelation Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 3 / 58 Objekte im Rechner — Knoten, Kanten und Graphen class Vertex { String name; } «Knoteninhalte» für uns irrelevant class Edge { Vertex start; Vertex end; } class Graph { Vertex[] vertices; Edge[] edges; } GBI — Grundbegriffe der Informatik mehr als eine Menge mehr als eine Menge KIT, Institut für Theoretische Informatik 4 / 58 Objekte im Rechner — Knoten, Kanten und Graphen class Vertex { String name; } «Knoteninhalte» für uns irrelevant class Edge { Vertex start; Vertex end; } class Graph { Vertex[] vertices; Edge[] edges; } GBI — Grundbegriffe der Informatik mehr als eine Menge mehr als eine Menge KIT, Institut für Theoretische Informatik 4 / 58 Objekte im Rechner — Knoten, Kanten und Graphen class Vertex { String name; } «Knoteninhalte» für uns irrelevant class Edge { Vertex start; Vertex end; } class Graph { Vertex[] vertices; Edge[] edges; } GBI — Grundbegriffe der Informatik mehr als eine Menge mehr als eine Menge KIT, Institut für Theoretische Informatik 4 / 58 Objekte im Rechner — Knoten, Kanten und Graphen class Vertex { int id; } Annahme: Wertebereich Z |V | class Edge { Vertex start; Vertex end; } class Graph { Vertex[] vertices; Edge[] edges; } GBI — Grundbegriffe der Informatik mehr als eine Menge mehr als eine Menge KIT, Institut für Theoretische Informatik 4 / 58 Adjazenzlisten — eine andere Repräsentation für Graphen class Vertex { int id; Vertex[] neighbors; } Feldlänge = Knotengrad class Edge { Vertex start; Vertex end; } class Graph { Vertex[] vertices; Edge[] edges; } GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 5 / 58 Inzidenzlisten class Vertex { int id; Edge[] incoming; Edge[] outgoing; } Feldlänge = Eingangsknotengrad Feldlänge = Ausgangsknotengrad class Edge { Vertex start; Vertex end; } class Graph { Vertex[] vertices; Edge[] edges; } GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 6 / 58 Variante von Adjazenzlisten (auf dem Weg zu Matrizen) class Vertex { int id; boolean[] is_connected_to; } Feldlänge = |V | u.is_connected_to[v.id] true falls (u, v) ∈ E = false falls (u, v) < E class Graph { Vertex[] vertices; } GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 7 / 58 Variante von Adjazenzlisten für einen Beispielgraph 0 1 3 GBI — Grundbegriffe der Informatik 2 Objekt u für Knoten 0 u.id u.is_connected_to 0 1 2 3 0 false true false true KIT, Institut für Theoretische Informatik 8 / 58 Variante von Adjazenzlisten für einen Beispielgraph 0 1 3 GBI — Grundbegriffe der Informatik 2 u.id 0 u.is_connected_to 0 1 2 3 false true false true 1 false false false false 2 false 3 false false true true true true false KIT, Institut für Theoretische Informatik 9 / 58 Variante von Adjazenzlisten für einen Beispielgraph 0 1 3 GBI — Grundbegriffe der Informatik 2 u.id 0 1 2 3 u.is_connected_to 0 1 2 3 false true false true false false false false false true true true false false true false KIT, Institut für Theoretische Informatik 9 / 58 Adjazenzmatrix eines gerichteten Graphen G = (V , E) gerichtet mit n Knoten n × n-Matrix A mit 1 Ai j = 0 falls (i, j) ∈ E falls (i, j) < E ungerichtetes U = (V , E) ; G = (V , Eд ) Beispiel 0 1 2 0 0 1 3 2 3 GBI — Grundbegriffe der Informatik 1 2 3 0 1 *. .. 0 0 . 0 1 , 0 0 0 0 1 1 1 0 1 0 +/ // / KIT, Institut für Theoretische Informatik 10 / 58 Repräsentation von Relationen durch Matrizen endliche Menge M mit n Elementen binäre Relation R ⊆ M × M repräsentiert durch n × n-Matrix A(R): 1 (A(R))i j = 0 falls (i, j) ∈ R falls (i, j) < R d. h. also iRj d. h. also ¬(iRj) verschiedene Relationen ↔ verschiedene Matrizen GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 11 / 58 Wegematrix eines Graphen Erreichbarkeitsrelation E ∗ als Matrix W 1 Wi j = 0 1 = 0 falls (i, j) ∈ E ∗ falls (i, j) < E ∗ falls es in G einen Pfad von i nach j gibt falls es in G keinen Pfad von i nach j gibt algorithmisches Problem: gegebene Probleminstanz: Adjazenzmatrix eines Graphen gesucht: zugehörige Wegematrix des Graphen GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 12 / 58 Wegematrix — ein Beispiel 1 Wi j = 0 0 1 falls (i, j) ∈ E ∗ falls (i, j) < E ∗ 2 3 0 0 A= 1 2 3 1 2 3 0 1 *. .. 0 0 . 0 1 , 0 0 0 0 1 1 1 1 0 0 GBI — Grundbegriffe der Informatik +/ // / KIT, Institut für Theoretische Informatik 13 / 58 Wegematrix — ein Beispiel falls (i, j) ∈ E ∗ falls (i, j) < E ∗ 1 Wi j = 0 0 1 2 3 0 0 A= 1 2 3 1 2 3 0 1 *. .. 0 0 . 0 1 , 0 0 0 0 1 1 1 1 0 0 GBI — Grundbegriffe der Informatik 0 1 2 3 0 +/ // / W = 1 2 *. .. . +/ // / 3 - , KIT, Institut für Theoretische Informatik 13 / 58 Wegematrix — ein Beispiel falls (i, j) ∈ E ∗ falls (i, j) < E ∗ 1 Wi j = 0 0 1 2 3 0 0 A= 1 2 3 1 2 3 0 1 *. .. 0 0 . 0 1 , 0 0 0 0 1 1 1 1 0 0 GBI — Grundbegriffe der Informatik 0 W = 1 2 *. .. . 3 - 2 3 1 0 +/ // / 1 , 1 1 +/ // / 1 - KIT, Institut für Theoretische Informatik 13 / 58 Wegematrix — ein Beispiel falls (i, j) ∈ E ∗ falls (i, j) < E ∗ 1 Wi j = 0 0 1 2 3 0 0 A= 1 2 3 1 2 3 0 1 *. .. 0 0 . 0 1 , 0 0 0 0 1 1 1 1 0 0 GBI — Grundbegriffe der Informatik 0 0 +/ // / W = 1 2 3 - 1 2 3 1 1 1 1 +/ 1 // 1 / 1 , *. .. . KIT, Institut für Theoretische Informatik 13 / 58 Wegematrix — ein Beispiel falls (i, j) ∈ E ∗ falls (i, j) < E ∗ 1 Wi j = 0 0 1 2 3 0 0 A= 1 2 3 1 2 3 0 1 *. .. 0 0 . 0 1 , 0 0 0 0 1 1 1 1 0 0 GBI — Grundbegriffe der Informatik 0 0 +/ // / W = 1 2 3 - 1 2 3 1 1 1 1 +/ *. 0 1 // .. 1 / . 0 0 1 , KIT, Institut für Theoretische Informatik 13 / 58 Wegematrix — ein Beispiel falls (i, j) ∈ E ∗ falls (i, j) < E ∗ 1 Wi j = 0 0 1 2 3 0 0 A= 1 2 3 1 2 3 0 1 *. .. 0 0 . 0 1 , 0 0 0 0 1 1 1 1 0 0 GBI — Grundbegriffe der Informatik 0 0 +/ // / W = 1 2 3 - 1 2 3 1 1 *. 0 1 .. 0 1 . , 0 1 1 1 1 1 1 1 1 1 +/ // / - KIT, Institut für Theoretische Informatik 13 / 58 Was ist wichtig Das sollten Sie mitnehmen: Repräsentation von Relationen als Matrizen z. B. Kantenrelation eines Graphen: Adjazenzmatrix Das sollten Sie üben: zu gegebenem Graphen die Adjazenzmatrix hinschreiben zu gegebener Adjazenzmatrix den Graphen hinmalen z. B. für irgendwelche „speziellen“ Graphen und Matrizen GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 14 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen 2-Erreichbarkeit an einem Beispiel Matrizenmultiplikation und Matrizenaddition Einfache Berechnung der Erreichbarkeitsrelation Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 15 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen 2-Erreichbarkeit an einem Beispiel Matrizenmultiplikation und Matrizenaddition Einfache Berechnung der Erreichbarkeitsrelation Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 16 / 58 2-Erreichbarkeit an einem Beispiel 0 0 1 2 3 5 6 1 4 2 3 4 5 6 *. .. .. .. .. .. . , 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +/ // // // // // / - gesucht: Pfade der Länge 2 von Knoten 2 zu Knoten 4 GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 17 / 58 2-Erreichbarkeit an einem Beispiel 0 0 1 2 3 5 6 1 4 2 3 4 5 6 *. .. .. .. .. .. . , 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +/ // // // // // / - gesucht: Pfade der Länge 2 von Knoten 2 zu Knoten 4 hinsehen: (2, 1, 4) und (2, 6, 4) GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 18 / 58 Systematische Suche nach Pfaden im Beispiel alle Pfade? prüfe für alle Knoten k ∈ V : Ist (2, k, 4) ein Pfad? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 19 / 58 Systematische Suche nach Pfaden im Beispiel alle Pfade? prüfe für alle Knoten k ∈ V : Ist (2, k, 4) ein Pfad? Ist (2, k ) ∈ E und (k, 4) ∈ E? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 19 / 58 Systematische Suche nach Pfaden im Beispiel alle Pfade? prüfe für alle Knoten k ∈ V : Ist (2, k, 4) ein Pfad? Ist (2, k ) ∈ E und (k, 4) ∈ E? Ist A2k = 1 und Ak 4 = 1? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 19 / 58 Systematische Suche nach Pfaden im Beispiel alle Pfade? prüfe für alle Knoten k ∈ V : Ist (2, k, 4) ein Pfad? Ist (2, k ) ∈ E und (k, 4) ∈ E? Ist A2k = 1 und Ak 4 = 1? Ist A2k · Ak 4 = 1? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 19 / 58 Systematische Suche nach Pfaden im Beispiel alle Pfade? prüfe für alle Knoten k ∈ V : Ist (2, k, 4) ein Pfad? Ist (2, k ) ∈ E und (k, 4) ∈ E? Ist A2k = 1 und Ak 4 = 1? Ist A2k · Ak 4 = 1? durchlaufe sequenziell für alle k gleichzeitig alle A2k und alle Ak 4 , d. h. Zeile für Knoten 2 und Spalte für Knoten 4 GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 19 / 58 Systematische Suche nach Pfaden A: 0 1 2 3 0 1 *. .. .. .. .. .. , 0 0 0 0 1 A: 2 3 4 5 6 5 6 +/ // // // // // - 0 0 1 4 1 1 0 0 0 0 1 *. .. .. 0 .. .. .. , 1 GBI — Grundbegriffe der Informatik 0 1 0 0 1 +/ // // // // // - 1 2 3 4 5 6 KIT, Institut für Theoretische Informatik 20 / 58 Zählen der Pfade im Beispiel 0 0 1 *. .. .. .. .. .. , 0 0 0 0 1 1 2 3 4 1 1 0 0 0 0 1 5 6 +/ // // // // // - 0 1 2 3 4 5 6 *. .. .. 0 .. .. .. , 1 GBI — Grundbegriffe der Informatik 0 1 0 0 1 +/ // // // // // - *. .. .. .. .. .. , 2 +/ // // // // // - KIT, Institut für Theoretische Informatik 21 / 58 Zählen der Pfade im Beispiel (2) 0 P24 = 6 X *. .. .. .. .. .. , A2k · Ak4 k =0 1 2 3 4 1 1 0 0 0 0 1 5 6 +/ // // // // // - 0 1 2 3 4 5 6 *. .. .. 0 .. .. .. , 1 GBI — Grundbegriffe der Informatik 0 1 0 0 1 +/ // // // // // - *. .. .. .. .. .. , 2 +/ // // // // // - KIT, Institut für Theoretische Informatik 22 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen 2-Erreichbarkeit an einem Beispiel Matrizenmultiplikation und Matrizenaddition Einfache Berechnung der Erreichbarkeitsrelation Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 23 / 58 Matrizenmultiplikation es sei A eine ` × n-Matrix B eine n × m-Matrix Produkt C = A · B die ` × m-Matrix mit Ci j = n−1 X Aik · Bk j k =0 im Allgemeinen A · B , B · A falls überhaupt beides definiert, also ` = m GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 24 / 58 Algorithmus für Matrizenmultiplikation zunächst die naheliegende Möglichkeit demnächst: es geht auch anders! ` Zeilen m Spalten Ci j = n−1 X Aik · Bk j k =0 GBI — Grundbegriffe der Informatik for i ← 0 to ` − 1 do for j ← 0 to m − 1 do Ci j ← 0 for k ← 0 to n − 1 do Ci j ← Ci j + Aik · Bk j od od od KIT, Institut für Theoretische Informatik 25 / 58 Einheitsmatrizen 1 0 ··· 0 0 1 0 .. 0 1 0 . .. 0 1 0 . 0 1 0 0 ··· 0 1 Einheitsmatrix I quadratische Matrix mit 1 Ii j = 0 falls i = j falls i , j für jede m × n-Matrix A gilt I·A=A=A·I linke Einheitsmatrix m × m rechte Einheitsmatrix n × n GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 26 / 58 Potenzen quadratischer Matrizen A0 = I ∀n ∈ N0 : An+1 = An · A GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 27 / 58 Quadrierte Adjazenzmatrix A2 einer Adjazenzmatrix A n−1 X Aik Ak j (A2 )i j = k =0 Aik Ak j = 1 ⇐⇒ Aik = Ak j = 1 ⇐⇒ Kanten von i nach k und von k nach j existieren ⇐⇒ (i, k, j) ein Pfad der Länge 2 von i nach j ist. und 0 sonst. für k 1 , k 2 sind (i, k 1 , j) und (i, k 2 , j) verschieden (A2 )i j ist Anzahl der Pfade der Länge 2 von i nach j GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 28 / 58 Matrizenaddition A und B zwei m × n-Matrizen ! ! 1 2 10 20 + 3 4 30 40 ! 11 22 = 33 44 Summe C = A + B ist m × n-Matrix mit C i j = Ai j + B i j stets A + B = B + A neutrales Element: Nullmatrix 0, überall Nullen algorithmisch: for i ← 0 to m − 1 do for j ← 0 to n − 1 do C i j ← Ai j + B i j od od GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 29 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen Einfache Berechnung der Erreichbarkeitsrelation Potenzen der Adjazenzmatrix Erste Möglichkeit für die Berechnung der Wegematrix Zählen arithmetischer Operationen Schnellere Berechnungen der Wegematrix Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 30 / 58 Berechnung von E ∗ — die naheliegende Idee Benutze E∗ = [ Ei i ∈N0 um die Wegematrix zu berechnen. GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 31 / 58 Berechnung von E ∗ — die naheliegende Idee Benutze E∗ = [ Ei i ∈N0 um die Wegematrix zu berechnen. Probleme: Was kann man gegen das unendlich tun? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 31 / 58 Berechnung von E ∗ — die naheliegende Idee Benutze E∗ = [ Ei i ∈N0 um die Wegematrix zu berechnen. Probleme: Was kann man gegen das unendlich tun? Woher kommen die Matrizen für die Relationen E i ? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 31 / 58 Berechnung von E ∗ — die naheliegende Idee Benutze E∗ = [ Ei i ∈N0 um die Wegematrix zu berechnen. Probleme: Was kann man gegen das unendlich tun? Woher kommen die Matrizen für die Relationen E i ? Welcher Matrizen-Operation entspricht die Vereinigung? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 31 / 58 Beseitigung der unendlichen Vereinigung Existiert Pfad in G von Knoten i nach Knoten j ? Sei G = (V , E) mit |V | = n nur endlich viele Knoten p = (i 0 , i 1 , . . . , i k ) ein Pfad mit i 0 = i und i k = j. GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 32 / 58 Beseitigung der unendlichen Vereinigung Existiert Pfad in G von Knoten i nach Knoten j ? Sei G = (V , E) mit |V | = n nur endlich viele Knoten p = (i 0 , i 1 , . . . , i k ) ein Pfad mit i 0 = i und i k = j. wenn k ≥ n, dann enthält p Zyklus von x nach x Weglassen ergibt kürzeren Pfad von i nach j GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 32 / 58 Beseitigung der unendlichen Vereinigung Existiert Pfad in G von Knoten i nach Knoten j ? Sei G = (V , E) mit |V | = n nur endlich viele Knoten p = (i 0 , i 1 , . . . , i k ) ein Pfad mit i 0 = i und i k = j. wenn k ≥ n, dann enthält p Zyklus von x nach x Weglassen ergibt kürzeren Pfad von i nach j wiederhole, solange Pfadlänge ≥ n Ergebnis: Pfad mit Länge ≤ n − 1 von i nach j GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 32 / 58 Beseitigung der unendlichen Vereinigung (2) eben begründet Lemma Für jeden gerichteten Graphen G = (V , E) mit n Knoten gilt: [ E∗ = Ei i ∈Zn GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 33 / 58 Beseitigung der unendlichen Vereinigung (2) eben begründet Lemma Für jeden gerichteten Graphen G = (V , E) mit n Knoten gilt: [ E∗ = Ei i ∈Zn längere Pfade schaden nicht Lemma Für jeden gerichteten Graphen G = (V , E) mit n Knoten gilt: [ ∀k ≥ n − 1 : E ∗ = Ei i ∈Zk GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 33 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen Einfache Berechnung der Erreichbarkeitsrelation Potenzen der Adjazenzmatrix Erste Möglichkeit für die Berechnung der Wegematrix Zählen arithmetischer Operationen Schnellere Berechnungen der Wegematrix Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 34 / 58 Potenzen der Adjazenzmatrix haben eine Bedeutung Lemma Es sei G ein gerichteter Graph mit Adjazenzmatrix A. Für alle k ∈ N0 gilt: (Ak )i j ist die Anzahl der Pfade der Länge k in G von i nach j. Beweis durch vollständige Induktion. Induktionsschritt fast wie im Fall k = 2. GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 35 / 58 Signum-Funktion 1 sgn : R → R : sgn(x ) = 0 −1 falls x > 0 falls x = 0 falls x < 0 bei Matrizen komponentenweise sgn : Rm×n → Rm×n GBI — Grundbegriffe der Informatik mit (sgn(M ))i j = sgn(Mi j ) KIT, Institut für Theoretische Informatik 36 / 58 Matrizendarstellung für Ek — sgn(Ak ) tut es Korollar Es sei G ein gerichteter Graph mit Adjazenzmatrix A. Für alle k ∈ N0 gilt: 1. 1 sgn((Ak )i j ) = 0 falls in G ein Pfad der Länge k von i nach j existiert falls in G kein Pfad der Länge k von i nach j existiert 2. Matrix sgn(Ak ) repräsentiert die Relation E k . GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 37 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen Einfache Berechnung der Erreichbarkeitsrelation Potenzen der Adjazenzmatrix Erste Möglichkeit für die Berechnung der Wegematrix Zählen arithmetischer Operationen Schnellere Berechnungen der Wegematrix Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 38 / 58 Vereinigung von Relationen Relationen R ⊆ M × M und R 0 ⊆ M × M repräsentiert durch Matrizen A und A0. dann: (i, j) ∈ R ∪ R 0 ↔ (i, j) ∈ R ∨ (i, j) ∈ R 0 ↔ Ai j = 1 ∨ Ai0 j = 1 ↔ Ai j + Ai0 j ≥ 1 ↔ (A + A0 )i j ≥ 1 ↔ sgn(A + A0 )i j = 1 R ∪ R 0 wird durch sgn(A + A0 ) repräsentiert GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 39 / 58 Eine erste Formel für die Wegematrix — es gibt auch noch andere . . . Lemma Es sei G ein gerichteter Graph mit Adjazenzmatrix A. Dann gilt für alle k ≥ n − 1: P Die Matrix sgn( ki=0 Ai ) repräsentiert die Relation E ∗ . Mit anderen Worten: k X W = sgn * Ai + , i=0 - ist die Wegematrix des Graphen G. GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 40 / 58 Beweis noch zu überlegen Sn−1 i=0 E i durch sgn( Pk i i=0 sgn(A )) repräsentiert leichte Verallgemeinerung des Falles R ∪ R 0 „innere“ Anwendungen von sgn dürfen fehlen Wenn alle Matrixeinträge ≥ 0 sind, gilt: sgn(sgn(M ) + sgn(M 0 ))i j = sgn(M + M 0 )i j GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 41 / 58 Einfachster Algorithmus für die Wegematrix hMatrix A sei die Adjazenzmatrixi W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od W ←W +M od W ← sgn(W ) GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 42 / 58 Einfachster Algorithmus für die Wegematrix hMatrix A sei die Adjazenzmatrixi W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od { M = Ai } W ←W +M P { W = ik=0 Ak } od W ← sgn(W ) { W ist die Wegematrix } GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 42 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen Einfache Berechnung der Erreichbarkeitsrelation Potenzen der Adjazenzmatrix Erste Möglichkeit für die Berechnung der Wegematrix Zählen arithmetischer Operationen Schnellere Berechnungen der Wegematrix Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 43 / 58 Was ist der «Aufwand» eines Algorithmus? Anzahl Codezeilen? Entwicklungszeit? Anzahl Schritte? nicht immer gleich benötigter Speicherplatz? nicht immer gleich vorläufig: Anzahl arithmetischer Operationen später anders GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 44 / 58 Wieviele elementare Operationen für Matrizenaddition? for i ← 0 to m − 1 do for j ← 0 to n − 1 do C i j ← Ai j + B i j od od m · n Additionen für n × n-Matrizen: n2 GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 45 / 58 Wieviele elementare Operationen für Multiplikation? for i ← 0 to ` − 1 do for j ← 0 to m − 1 do Ci j ← 0 for k ← 0 to n − 1 do Ci j ← Ci j + Aik · Bk j od od od ` · m · n Additionen und ` · m · n Multiplikationen für n × n-Matrizen: 2n3 kleine Variante: 2n3 − n2 Achtung: es geht auch mit weniger Operationen! GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 46 / 58 Wieviele elementare Operationen für Wegematrix? W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od W ←W +M od W ← sgn(W ) GBI — Grundbegriffe der Informatik Aufwand: n−1 X * i + · (2n3 − n 2 ) + n · n2 + n2 , i=0 3 3 = n5 − n4 + n3 + n2 2 2 KIT, Institut für Theoretische Informatik 47 / 58 Wieviele elementare Operationen für Wegematrix? W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od W ←W +M od W ← sgn(W ) GBI — Grundbegriffe der Informatik Aufwand: n−1 X * i + · (2n3 − n 2 ) + n · n2 + n2 , i=0 3 3 = n5 − n4 + n3 + n2 2 2 KIT, Institut für Theoretische Informatik 47 / 58 Wieviele elementare Operationen für Wegematrix? W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od W ←W +M od W ← sgn(W ) GBI — Grundbegriffe der Informatik Aufwand: n−1 X * i + · (2n3 − n 2 ) + n · n2 + n2 , i=0 3 3 = n5 − n4 + n3 + n2 2 2 KIT, Institut für Theoretische Informatik 47 / 58 Wieviele elementare Operationen für Wegematrix? W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od W ←W +M od W ← sgn(W ) GBI — Grundbegriffe der Informatik Aufwand: n−1 X * i + · (2n3 − n 2 ) + n · n2 + n2 , i=0 3 3 = n5 − n4 + n3 + n2 2 2 KIT, Institut für Theoretische Informatik 47 / 58 Wieviele elementare Operationen für Wegematrix? W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od W ←W +M od W ← sgn(W ) GBI — Grundbegriffe der Informatik Aufwand: n−1 X * i + · (2n3 − n 2 ) + n · n2 + n2 , i=0 3 3 = n5 − n4 + n3 + n2 2 2 KIT, Institut für Theoretische Informatik 47 / 58 Wieviele elementare Operationen für Wegematrix? W ←0 for i ← 0 to n − 1 do M←I for j ← 1 to i do M ← M ·A od W ←W +M od W ← sgn(W ) GBI — Grundbegriffe der Informatik Aufwand: n−1 X * i + · (2n3 − n 2 ) + n · n2 + n2 , i=0 3 3 = n5 − n4 + n3 + n2 2 2 KIT, Institut für Theoretische Informatik 47 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen Einfache Berechnung der Erreichbarkeitsrelation Potenzen der Adjazenzmatrix Erste Möglichkeit für die Berechnung der Wegematrix Zählen arithmetischer Operationen Schnellere Berechnungen der Wegematrix Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 48 / 58 Wiederverwendung — auch bei Zwischenergebnissen eine gute Sache W ←0 M←I for i ← 0 to n − 1 do W ←W +M M ← M ·A od W ← sgn(W ) GBI — Grundbegriffe der Informatik für Ai kann man Ai−1 wiederverwenden Aufwand: n · (n2 + (2n3 − n2 )) + n 2 = 2n4 + n2 KIT, Institut für Theoretische Informatik 49 / 58 Es geht noch besser — erst mehr denken und dann weniger rechnen Schon vergessen? ∀k ≥ n − 1 : E = ∗ k [ Ei i=0 Wie kann ein k > n − 1 helfen? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 50 / 58 Es geht noch besser — erst mehr denken und dann weniger rechnen Schon vergessen? ∀k ≥ n − 1 : E = ∗ k [ Ei i=0 Wie kann ein k > n − 1 helfen? statt n − 1 wähle kleinste Zweierpotenz k = 2m ≥ n also m = dlog2 ne m finde Matrix F mit W = F 2 = (· · · ((F 2 ) 2 ) · · · ) 2 nur noch m = dlog2 ne Matrizenmultiplikationen GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 50 / 58 Es geht noch besser — erst mehr denken und dann weniger rechnen Schon vergessen? ∀k ≥ n − 1 : E = ∗ k [ Ei i=0 Wie kann ein k > n − 1 helfen? statt n − 1 wähle kleinste Zweierpotenz k = 2m ≥ n also m = dlog2 ne m finde Matrix F mit W = F 2 = (· · · ((F 2 ) 2 ) · · · ) 2 nur noch m = dlog2 ne Matrizenmultiplikationen Preisfrage: Wie sieht F aus? GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 50 / 58 Es geht noch besser — erst mehr denken und dann weniger rechnen Schon vergessen? ∀k ≥ n − 1 : E = ∗ k [ Ei i=0 Wie kann ein k > n − 1 helfen? statt n − 1 wähle kleinste Zweierpotenz k = 2m ≥ n also m = dlog2 ne m finde Matrix F mit W = F 2 = (· · · ((F 2 ) 2 ) · · · ) 2 nur noch m = dlog2 ne Matrizenmultiplikationen Preisfrage: Wie sieht F aus? Wähle Matrix F für Relation E 0 ∪ E 1 = IV ∪ E. GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 50 / 58 Es geht noch besser (2) F = E0 ∪ E1 F 2 = (E 0 ∪ E 1 ) ◦ (E 0 ∪ E 1 ) = E 0 ∪ E 1 ∪ E 1 ∪ E 2 = E0 ∪ E1 ∪ E2 F 4 = (F 2 ) 2 = (E 0 ∪ E 1 ∪ E 2 ) ◦ (E 0 ∪ E 1 ∪ E 2 ) = ... = E0 ∪ E1 ∪ E2 ∪ E3 ∪ E4 Induktion: Für alle m ∈ N0 gilt: F 2m = 2m [ Ei i=0 GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 51 / 58 Es geht noch besser (3) Berechnung von dlog2 ne aus n benötigt höchstens dlog2 ne Operationen F ← I+A m ← dlog2 ne for i ← 1 to m do F ←F ·F od W ← sgn(F ) GBI — Grundbegriffe der Informatik Aufwand: n2 + dlog2 ne + dlog2 ne · (2n3 − n2 ) + n2 = dlog2 ne · 2n3 + · · · «besser» als 2n4 nächstes Kapitel: präzise ungenau sein KIT, Institut für Theoretische Informatik 52 / 58 Was ist wichtig Das sollten Sie mitnehmen: die naheliegende Idee nicht immer die beste Denken, Mathematik, Kreativität, Einfach-mal-drüber-schlafen, . . . Das sollten Sie üben: Aufwandsabschätzungen bei (ineinander geschachtelten) Schleifen auch mal verrückte Ideen ausprobieren GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 53 / 58 Wo sind wir? Repräsentation von Graphen im Rechner Berechnung der 2-Erreichbarkeitsrelation und Rechnen mit Matrizen Einfache Berechnung der Erreichbarkeitsrelation Algorithmus von Warshall GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 54 / 58 Algorithmus von Warshall — noch ein bisschen schneller for i ← 0 to n − 1 do for j ← 0 to n − 1 do 1 falls i = j Wi j ← Ai j falls i , j od od for k ← 0 to n − 1 do for i ← 0 to n − 1 do for j ← 0 to n − 1 do Wi j ← max( Wi j , Wik · Wk j ) od od od GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 55 / 58 Algorithmus von Warshall — noch ein bisschen schneller for i ← 0 to n − 1 do for j ← 0 to n − 1 do falls i = j 1 Wi[0] ← j Ai j falls i , j od od for k ← 0 to n − 1 do for i ← 0 to n − 1 do for j ← 0 to n − 1 do ] [k ] [k] Wi[k+1] ← max( Wi[k j j , Wik · Wk j ) od od od GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 56 / 58 Algorithmus von Warshall — noch ein bisschen schneller for i ← 0 to n − 1 do for j ← 0 to n − 1 do falls i = j 1 Wi[0] ← j Ai j falls i , j od od Pfad p = (v 0 , v 1 , . . . , vm−1 , vm ) der Länge m v 1 , . . . , vm−1 Zwischenknoten m ≤ 1: keine Zwischenknoten for k ← 0 to n − 1 do for i ← 0 to n − 1 do for j ← 0 to n − 1 do ] [k ] [k] Wi[k+1] ← max( Wi[k j j , Wik · Wk j ) od od od GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 56 / 58 Algorithmus von Warshall — noch ein bisschen schneller for i ← 0 to n − 1 do for j ← 0 to n − 1 do falls i = j 1 Wi[0] ← j Ai j falls i , j od od for k ← 0 to n − 1 do for i ← 0 to n − 1 do for j ← 0 to n − 1 do ] [k ] [k] Wi[k+1] ← max( Wi[k j j , Wik · Wk j ) od od od GBI — Grundbegriffe der Informatik Pfad p = (v 0 , v 1 , . . . , vm−1 , vm ) der Länge m v 1 , . . . , vm−1 Zwischenknoten m ≤ 1: keine Zwischenknoten ] Wi[k j = 1 ←→ Pfad von i nach j und nur Zwischenknoten mit Nummern x < k benutzt KIT, Institut für Theoretische Informatik 56 / 58 Algorithmus von Warshall — noch ein bisschen schneller for i ← 0 to n − 1 do for j ← 0 to n − 1 do falls i = j 1 Wi[0] ← j Ai j falls i , j od od for k ← 0 to n − 1 do for i ← 0 to n − 1 do for j ← 0 to n − 1 do ] [k ] [k] Wi[k+1] ← max( Wi[k j j , Wik · Wk j ) od od od GBI — Grundbegriffe der Informatik Pfad p = (v 0 , v 1 , . . . , vm−1 , vm ) der Länge m v 1 , . . . , vm−1 Zwischenknoten m ≤ 1: keine Zwischenknoten ] Wi[k j = 1 ←→ Pfad von i nach j und nur Zwischenknoten mit Nummern x < k benutzt KIT, Institut für Theoretische Informatik 56 / 58 Zum Aufwand des Algorithmus von Warshall drei ineinander geschachtelte Schleifen deren jeweiliger Rumpf n-mal durchlaufen wird „irgendwie ungefähr“ n3 Operationen . . . GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 57 / 58 Zusammenfassung Repräsentationen von Graphen im Rechner Berechnung der Wegematrix mit vielen oder weniger Operationen Algorithmus von Warshall kommt mit weniger Operationen aus als alle unsere vorherigen Versuche GBI — Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik 58 / 58