4. Digraphen mit negativen Kantengewichten
4.1 Grunds¨ atzliches
Betrachte Startknoten s und einen Kreis C mit Gesamtl¨ ange < 0.
t t t t
t t
t t
t - - ppppppppp -
J J
J J ^ -
Q Q Q Q Q k
+ -
s
k
0k
1k
2k
3k
41 3 2 v
1 1
1
−5 1 C
Sollte ein Pfad von s nach C und von C nach v existieren, so ist ein k¨ urzester Pfad von s nach v nicht definiert.
EADS 4.1 Grunds¨atzliches 485/530
ľErnst W. Mayr
Falls aber die Gesamtl¨ ange des Kreises C ≥ 0 ist,
t t t t
t t
t t
- - ppppppppp - t J
J
J J ^ -
Q Q Q Q Q k
+ -
s
k
0k
1k
2k
3k
41 3 2 v
1
1 1
−3 1
dann ist der k¨ urzeste Pfad wohldefiniert. Probleme gibt es also nur dann, wenn G einen Zyklus negativer L¨ ange enth¨ alt.
EADS 4.1 Grunds¨atzliches 486/530
ľErnst W. Mayr
Dijkstra’s Algorithmus funktioniert bei negativen Kantenl¨ angen nicht:
s
s
s
@
@
@
@ @
s v
w
3 −2
4
Bei diesem Beispielgraphen (der nicht einmal einen negativen Kreis enth¨ alt) berechnet der Dijkstra-Algorithmus die minimale
Entfernung von s nach w f¨ alschlicherweise als 3 (statt 2).
EADS 4.1 Grunds¨atzliches 487/530
ľErnst W. Mayr
4.2 Modifikation des Bellman-Ford-Algorithmus
B
k[i] gibt die L¨ ange eines k¨ urzesten gerichteten s-i-Pfades an, der aus h¨ ochstens k Kanten besteht. Jeder Pfad, der keinen Kreis enth¨ alt, besteht aus maximal n − 1 Kanten. In einem Graphen ohne negative Kreise gilt daher:
∀i ∈ V : B
n[i] ≥ B
n−1[i]
Gibt es hingegen einen (von s aus erreichbaren) Kreis negativer L¨ ange, so gibt es einen Knoten i ∈ V , bei dem ein Pfad aus n Kanten mit der L¨ ange B
n[i] diesen Kreis h¨ aufiger durchl¨ auft als jeder Pfad aus maximal n − 1 Kanten der L¨ ange B
n−1[i].
Demnach gilt in diesem Fall:
B
n[i] < B
n−1[i]
EADS 4.2 Modifikation des Bellman-Ford-Algorithmus 488/530
ľErnst W. Mayr
Man kann also in den Algorithmus von Bellman-Ford einen Test auf negative Kreise einbauen, indem man auch f¨ ur alle i ∈ V B
n[i]
berechnet und am Ende den folgenden Befehl einf¨ ugt:
for i := 1 to n do
if B
n[i] < B
n−1[i] then stop
” Negativer Kreis“ fi
EADS 4.2 Modifikation des Bellman-Ford-Algorithmus 489/530
ľErnst W. Mayr
4.3 Modifikation des Floyd-Algorithmus
Falls kein negativer Kreis existiert, funktioniert der Algorithmus weiterhin korrekt.
t
t
t
t t
t
* H H
H H H j
? H H H H H Y 6 v1
v
2v
3v
4v
5v
61 1
1 1 1
−6
c
616= 5 = c
516c
661= −6 = c
561c
611= min{c
511, c
516+c
561} = −1
⇒ der Graph enth¨ alt einen negativen Kreis, gdw ein c
nii< 0 existiert.
EADS 4.3 Modifikation des Floyd-Algorithmus 490/530
ľErnst W. Mayr
Man kann also in den Algorithmus von Floyd einen Test auf negative Kreise einbauen, indem man am Ende den folgenden Befehl einf¨ ugt:
for i := 1 to n do if c
nii< 0 then stop
” Negativer Kreis“ fi
EADS 4.3 Modifikation des Floyd-Algorithmus 491/530
ľErnst W. Mayr
4.4 Der Algorithmus von Johnson
Definition 113
Sei d : A → R eine Distanzfunktion. Eine Abbildung r : V → R
heißt Rekalibrierung, falls gilt:
(∀(u, v) ∈ A)[r(u) + d(u, v) ≥ r(v)]
Beobachtung: Sei r eine Rekalibrierung (f¨ ur d). Setze d
0(u, v) := d(u, v) + r(u) − r(v). Dann gilt:
d
0(u, v) ≥ 0
EADS 4.4 Der Algorithmus von Johnson 492/530
ľErnst W. Mayr
Sei u = v
0→ · · · → v
k= v ein Pfad. Dann ist:
d-L¨ ange :=
k−1
X
i=0
d(v
i, v
i+1) Demnach ist:
d
0-L¨ ange =
k−1
X
i=0
d
0(v
i, v
i+1)
=
k−1
X
i=0
(d(v
i, v
i+1) + r(v
i) − r(v
i+1))
=
k−1
X
i=0
d(v
i, v
i+1) + r(v
0) − r(v
k)
Also ist ein d-k¨ urzester Pfad von u (= v
0) nach v (= v
k) auch ein d
0-k¨ urzester Pfad und umgekehrt. Nach einer Rekalibrierung kann man also auch die Algorithmen anwenden, die eine nichtnegative Distanzfunktion d voraussetzen (z.B. Dijkstra).
EADS 4.4 Der Algorithmus von Johnson 493/530
ľErnst W. Mayr
Berechnung einer Rekalibrierung:
~
z
~ 0
0 0 s
s
s
' s
&
$
% s
u
v w
Graph G
d : A → R
F¨ uge einen neuen Knoten s hin- zu und verbinde s mit jedem an- deren Knoten v ∈ V durch eine Kante der L¨ ange 0.
Berechne sssp von s nach allen anderen Knoten v ∈ V (z.B. mit Bellman-Ford). Sei r(v) die dadurch berechnete Entfernung von s zu v ∈ V . Dann ist r eine Rekalibrierung, denn es gilt:
r(u) + d(u, v) ≥ r(v) .
EADS 4.4 Der Algorithmus von Johnson 494/530
ľErnst W. Mayr
5. Zusammenfassung
d ≥ 0 d allgemein
sssp D (Fibonacci): O(m + n · log n) B-F: O(n · m) D (Radix): O(m + n √
log C) apsp D: O(n · m + n
2min{log n, √
log C}) J: O(n · m + n
2log n)
F: O(n
3)
(∗)F: O(n
3)
Bemerkung
(∗): In der Praxis ist der Floyd-Algorithmus f¨ ur kleine n besser als Dijkstra’s Algorithmus.
EADS 5.0 Der Algorithmus von Johnson 495/530
ľErnst W. Mayr
6. Transitive H¨ ulle
6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive H¨ ulle Ring Z (+ , ×)
% -
Gruppe Halbgruppe
Semiring N (+, ×)
% -
Halbgruppe Halbgruppe Wir betrachten den (kommutativen) Semiring ¨ uber R ∪ {∞} mit den Operationen min und +. F¨ ur jede der beiden Operationen haben wir ein Monoid. Es gilt das Distributivgesetz
a + min{b, c} = min{a + b, a + c}.
Normale Matrixmultiplikation:
A = (a
ij)
1≤i,j≤n, B = (b
ij)
1≤i,j≤n, I = (δ
ij)
1≤i,j≤nC = A · B = (c
ij)
1≤i,j≤n, c
ij=
n
X
k=1
a
ik· b
kjEADS 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive H¨ulle 496/530 ľErnst W. Mayr
Entsprechend f¨ ur Min-Plus:
c
ij= min{a
ik+ b
kj; 1 ≤ k ≤ n}
r r
r r r r
XX XX
X X
X X X X X X
H H H H H H
Z Z Z Z Z Z .. .
v
iu
nw
ju
1u
2a
ik= d(v
i, u
k) b
kj= d(u
k, w
j)
EADS 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive H¨ulle 497/530 ľErnst W. Mayr
Anwendung:
k¨ urzeste Wege von v
inach w
jin einem Graph (A = B); dabei ist
I
min,+=
0 ∞
. ..
∞ 0
EADS 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive H¨ulle 498/530 ľErnst W. Mayr
Sei A Entfernungsmatrix, A = (a
ij)
1≤i,j≤n= (d(v
i, v
j))
1≤i,j≤n. Setze a
ii= 0 f¨ ur i = 1, . . . , n.
Betrachte A
2mit dem Min-Plus-Produkt, A
2=: (a
(2)ij)
1≤i,j≤n. Dann ist a
(2)ijdie L¨ ange eines k¨ urzesten Pfades von v
inach v
j, der h¨ ochstens zwei Kanten enth¨ alt. Induktion ergibt: a
(k)ijist die L¨ ange eines k¨ urzesten Pfades von v
inach v
jmit h¨ ochstens k Kanten.
Falls die d(v
i, v
j) alle ≥ 0 sind, gibt es immer k¨ urzeste Pfade, die h¨ ochstens n − 1 Kanten enthalten.
EADS 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive H¨ulle 499/530 ľErnst W. Mayr
Damit ergibt sich folgende alternative L¨ osung des all-pairs-shortest-path-Problems:
Berechne A
n−1(Min-Plus)!
Es gen¨ ugt auch, A
2dlog(n−1)edurch wiederholtes Quadrieren zu berechnen (nicht A
2, A
3, A
4, . . . ).
Definition 114
A
∗:= min
i≥0{A
i} heißt Min-Plus-Transitive H¨ ulle.
Bemerkung: min wird komponentenweise gebildet. Wenn d ≥ 0, dann A
∗= A
n−1.
EADS 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive H¨ulle 500/530 ľErnst W. Mayr
6.2 Boolesche Matrixmultiplikation und Transitive H¨ ulle Wir ersetzen nun im vorhergehenden Abschnitt die Distanzmatrix durch die (boolesche) Adjazenzmatrix und (min, +) durch (∨, ∧), d.h.:
C = A · B; c
ij=
n
_
k=1
a
ik∧ b
kjWenn wir zudem a
ii= 1 f¨ ur 1 ≤ i ≤ n setzen, dann gilt f¨ ur A
k(boolesches Produkt, A
0= I )
a
ij=
1 falls es im Graphen einen Pfad von v
inach v
j, bestehend aus ≤ k Kanten gibt
0 falls es im Graphen keinen Pfad von v
inach v
j, bestehend aus ≤ k Kanten gibt
EADS 6.2 Boolesche Matrixmultiplikation und Transitive H¨ulle 501/530 ľErnst W. Mayr
Transitive H¨ ulle:
A
∗:= _
i≥0
A
i(= A
n−1)
ist damit die Adjazenzmatrix der transitiven H¨ ulle des zugrunde liegenden Digraphen.
EADS 6.2 Boolesche Matrixmultiplikation und Transitive H¨ulle 502/530 ľErnst W. Mayr
Satz 115
Sei M (n) die Zeitkomplexit¨ at f¨ ur das boolesche Produkt zweier n × n-Matrizen, T (n) die Zeitkomplexit¨ at f¨ ur die transitive H¨ ulle einer n × n booleschen Matrix.
Falls T (3n) ≤ cT (n)
| {z }
sicher erf¨ullt, falls T polynomiell
und M (2n) ≥ 4M (n)
| {z }
sicher erf¨ullt, falls M(n)≥n2
, dann gilt:
T(n) = Θ(M (n)) .
EADS 6.2 Boolesche Matrixmultiplikation und Transitive H¨ulle 503/530 ľErnst W. Mayr
Beweis:
(1) Matrixmultiplikation ≺ transitive H¨ ulle:
Seien boolesche Matrizen A, B gegeben und ihr boolesches Produkt C = A · B gesucht.
Setze:
L =
0 A 0
0 0 B
0 0 0
| {z }
3n
3n
EADS 6.2 Boolesche Matrixmultiplikation und Transitive H¨ulle 504/530 ľErnst W. Mayr
Beweis (Forts.):
L ist die Adjazenzmatrix eines tripartiten Digraphen, denn:
v u w v 0 A 0 u 0 0 B w 0 0 0
r r r
r r r
v
nv
1u
nu
1w
nw
1v u w
A B
.. . .. . .. .
- * XX XX X X z :
Daher kann L
∗leicht bestimmt werden:
L
∗=
I A AB
0 I B
0 0 I
(= I ∨ L ∨ L
2) Also gilt: M (n) ≤ T (3n) = O(T (n)).
EADS 6.2 Boolesche Matrixmultiplikation und Transitive H¨ulle 505/530 ľErnst W. Mayr
Beweis (Forts.):
(2) Transitive H¨ ulle ≺ Matrixmultiplikation:
Gegeben: n × n boolesche Matrix L; gesucht: L
∗; Annahme: n ist Zweierpotenz. Teile auf:
L =
A B C D
}
n2}
n2; L
∗=
E F G H
|{z}
n 2|{z}
n 2Es gilt also:
E = (A ∨ BD
∗C)
∗betrachte alle Pfade von der ersten H¨ alfte der Knoten zur ersten H¨ alfte
F = EBD
∗analog
G = D
∗CE analog
H = D
∗∨ GF analog
EADS 6.2 Boolesche Matrixmultiplikation und Transitive H¨ulle 506/530 ľErnst W. Mayr
Beweis (Forts.):
Um L
∗zu berechnen, ben¨ otigen wir zwei
Transitive-H¨ ulle-Berechnungen und sechs Matrixprodukte f¨ ur Matrizen der Dimension
n2×
n2(n¨ amlich M
1= D
∗C, M
2= BM
1, M
3= EB , M
4= M
3D
∗, M
5= M
1E, M
6= GF ), plus den Aufwand f¨ ur ∨, der ≤ c
0n
2ist. Wir zeigen nun durch Induktion (n = 1 √
), dass T (n) ≤ cM (n):
T (n) ≤ 2T (
n2) + 6M (
n2) + c
0n
2≤ 2cM (
n2) + 6M (
n2) + c
0n
2|Vor.: M (2n) ≥ 4M(n)
| da M (n) ≥ n
2≤
14(2c + 6 + 4c
0)M(n)
≤ cM (n)
falls c ≥
14(2c + 6 + 4c
0), also falls c ≥ 3 + 2c
0. Also T (n) = O(M (n)).
EADS 6.2 Boolesche Matrixmultiplikation und Transitive H¨ulle 507/530 ľErnst W. Mayr