Bellman-Ford Algorithm
回顧
Bellman-Ford Algorithm
假設圖上有 V 個頂點
(因最多經過 V-1 條邊,必定到達終點)
(通常還未進行到 V-1 次時,就已不會降低 cost)
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
∞ | ∞ | ∞ | ∞ | ∞ | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 6 | ∞ | ∞ | ∞ | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 6 | 5 | ∞ | ∞ | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 6 | 5 | 5 | ∞ | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 6 | 5 | 5 | 5 | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 5 | 5 | 5 | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 5 | 5 | 5 | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | ∞ | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | ∞ |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 8 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
First round completed
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 3 | 3 | 5 | 5 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
Second round start
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 3 | 3 | 5 | 5 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 3 | 3 | 5 | 5 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 3 | 3 | 5 | 5 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 3 | 3 | 5 | 2 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 7 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 5 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 5 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
Second round completed
2nd
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 5 |
0 | 1 | 3 | 5 | 0 | 4 | 3 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
2nd
3rd
a | b | c | d | e | f | g |
---|---|---|---|---|---|---|
0 | 3 | 3 | 5 | 5 | 4 | 7 |
0 | 1 | 3 | 5 | 2 | 4 | 5 |
0 | 1 | 3 | 5 | 0 | 4 | 3 |
0 | 1 | 3 | 5 | 0 | 4 | 3 |
a
b
c
d
e
f
g
6
5
5
-2
-2
-1
1
-1
3
3
EdgeList:
1st
2nd
3rd
4th
Nothing changed
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
∞ | ∞ | ∞ | ∞ |
EdgeList:
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | ∞ | ∞ | ∞ |
EdgeList:
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | ∞ | ∞ | ∞ |
EdgeList:
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | ∞ | ∞ | 5 |
EdgeList:
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
EdgeList:
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
0 | 4 | 8 | 5 |
EdgeList:
1st
2nd
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
0 | 4 | 8 | 5 |
0 | -2 | 8 | 5 |
EdgeList:
1st
2nd
3rd
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | ∞ | ∞ | ∞ |
EdgeList:
5
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | ∞ | ∞ | ∞ |
EdgeList:
5
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | ∞ | ∞ | ∞ |
EdgeList:
5
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | ∞ | ∞ | 5 |
EdgeList:
5
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
EdgeList:
5
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
EdgeList:
5
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
0 | 4 | 8 | 5 |
EdgeList:
5
1st
2nd
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
0 | 4 | 8 | 5 |
0 | -2 | 8 | 5 |
EdgeList:
5
1st
2nd
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
0 | 4 | 8 | 5 |
0 | -2 | 8 | 3 |
EdgeList:
5
1st
2nd
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
0 | 4 | 8 | 5 |
0 | -2 | 8 | 3 |
0 | -2 | 8 | 3 |
EdgeList:
5
1st
2nd
3rd
a
b
c
d
4
5
3
-10
a | b | c | d |
---|---|---|---|
0 | 4 | ∞ | 5 |
0 | 4 | 8 | 5 |
0 | -2 | 8 | 3 |
0 | -2 | 6 | 3 |
EdgeList:
5
1st
2nd
3rd
Negative cycle detected
b
c
d
3
-10
5
Negative cycle
References