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
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/598
ľErnst W. Mayr
Berechnung einer Rekalibrierung:
0 0 s 0
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) .
5. Zusammenfassung
d≥0 d allgemein
sssp D (Fibonacci):O(m+n·logn) B-F:O(n·m) D (Radix):O(m+n√
logC) apsp D:O(n·m+n2min{logn,√
logC}) J: O(n·m+n2logn)
F:O(n3)(∗) F:O(n3)
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/598
ľ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
kjEntsprechend f¨ ur Min-Plus:
c
ij= min{a
ik+ b
kj; 1 ≤ k ≤ n}
.. .
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/598 ľErnst W. Mayr
Anwendung:
k¨ urzeste Wege von v
inach w
jin einem Graph (A = B); dabei ist
I
min,+=
0 ∞
. ..
∞ 0
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/598 ľ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.
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/598 ľ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.
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/598 ľ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
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
v
nv
1u
nu
1w
nw
1v u w
A B
.. . .. . .. .
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/598 ľ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
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/598 ľErnst W. Mayr