Folien - Grundbegriffe der Informatik

Werbung
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
Herunterladen