Der Min-Plus-Matrixmultiplikations-Algorithmus ist ein Algorithmus der Graphentheorie , der die Distanzmatrix eines Graphen berechnet. Er läuft mit einer speziellen Matrizenoperation und hat zudem den Vorteil, dass bei jedem Berechnungsschritt automatisch alle Informationen über erreichbare Wege innerhalb der bisher angegebenen Anzahl der Berechnungsschritte verfügbar sind. Er ist allerdings sehr rechenintensiv und daher langsam.
Definitionen
Gegeben seien ein gerichteter Graph
G
=
(
V
,
E
)
{\displaystyle G=(V,E)}
und eine Matrix mit Gewichten
c
i
,
j
{\displaystyle c_{i,j}}
, wobei die Indizes
i
{\displaystyle i}
und
j
{\displaystyle j}
über die Menge
V
{\displaystyle V}
laufen.
Bewertungsmatrix
Die Kostenmatrix oder Bewertungsmatrix
K
{\displaystyle K}
ist dann wie folgt definiert:
k
i
,
j
=
{
0
f
a
l
l
s
i
=
j
c
i
,
j
f
a
l
l
s
(
i
,
j
)
∈
E
∞
s
o
n
s
t
{\displaystyle k_{i,j}={\begin{cases}0~\mathrm {falls} ~i=j\\c_{i,j}~\mathrm {falls} ~(i,j)\in E\\\infty ~\mathrm {sonst} \end{cases}}}
Entfernungsmatrix
Die Entfernungsmatrix
D
{\displaystyle D}
ist wie folgt definiert
d
i
,
j
=
{
0
,
f
a
l
l
s
i
=
j
L
a
¨
n
g
e
d
e
s
k
u
¨
r
z
e
s
t
e
n
W
e
g
e
s
v
o
n
i
n
a
c
h
j
∞
,
f
a
l
l
s
e
s
k
e
i
n
e
n
W
e
g
g
i
b
t
{\displaystyle d_{i,j}={\begin{cases}0,~\mathrm {falls} ~i=j\\\mathrm {L{\ddot {a}}nge~des~k{\ddot {u}}rzesten~Weges~von~} i\mathrm {~nach~} j\\\infty ,~\mathrm {falls~es~keinen~Weg~gibt} ~\end{cases}}}
Matrizenoperation ⊕
F
,
G
{\displaystyle F,G}
seien zwei
n
×
n
{\displaystyle n\times n}
-Matrizen.
Die Matrix
H
=
F
⊕
G
{\displaystyle H=F\oplus G}
berechnet sich wie folgt:
h
i
,
j
=
min
{
f
i
,
l
+
g
l
,
j
∣
l
∈
{
1
,
…
,
n
}
}
{\displaystyle h_{i,j}=\min\{f_{i,l}+g_{l,j}\mid l\in \{1,\dots ,n\}\}}
wobei gelten soll
a
+
∞
=
∞
+
a
=
∞
{\displaystyle a+\infty =\infty +a=\infty }
.
⊕
{\displaystyle \oplus }
ist also die Multiplikation von Matrizen über einem Halbring mit
(
0
,
1
,
+
,
⋅
)
:=
(
∞
,
0
,
min
,
+
)
{\displaystyle (0,1,+,\cdot ):=(\infty ,0,\operatorname {min} ,+)}
.
Statt
K
⊕
K
{\displaystyle K\oplus K}
schreiben wir kurz
K
[
2
]
{\displaystyle K^{[2]}}
.
K
[
n
+
1
]
=
K
[
n
]
⊕
K
{\displaystyle K^{[n+1]}=K^{[n]}\oplus K}
Algorithmus
1.
K
{\displaystyle K}
sei die Kostenmatrix des Netzwerkes N
2. Berechne
K
[
2
]
,
K
[
3
]
,
K
[
4
]
,
.
.
.
{\displaystyle K^{[2]},K^{[3]},K^{[4]},...}
gilt irgendwann
K
[
p
+
1
]
=
K
[
p
]
{\displaystyle K^{[p+1]}=K^{[p]}}
, so ist
K
[
p
]
=
D
{\displaystyle K^{[p]}=D}
oder
2. Berechne
K
[
2
]
,
K
[
4
]
,
K
[
8
]
,
.
.
.
{\displaystyle K^{[2]},K^{[4]},K^{[8]},...}
gilt irgendwann
K
[
2
∗
p
]
=
K
[
p
]
{\displaystyle K^{[2*p]}=K^{[p]}}
, so ist
K
[
p
]
=
D
{\displaystyle K^{[p]}=D}
Siehe auch
Quellen