Lecture 14
-
Upload
yashaasavi-raj-ladha -
Category
Documents
-
view
218 -
download
0
description
Transcript of Lecture 14
![Page 1: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/1.jpg)
Shortest Paths I: Properties, Dijkstra's Algorithm, Breadth-first Search
Lecture 14
![Page 2: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/2.jpg)
L14.2
Paths in graphs
Consider a digraph G = (V, E) with edge-weight
function w : E R. The weight of path p = v1 v2 L vk is defined to be
1
11),()(
k
iii vvwpw .
v1 v
2
v3 v
4
v5
4 –2 –5 1
Example:
w(p) = –2
![Page 3: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/3.jpg)
L14.3
Shortest paths
A shortest path from u to v is a path of
minimum weight from u to v. The shortest-
path weight from u to v is defined as
d(u, v) = min{w(p) : p is a path from u to v}.
Note: d(u, v) = if no path from u to v exists.
![Page 4: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/4.jpg)
L14.4
Optimal substructure
Theorem. A subpath of a shortest path is a shortest path.
Proof. Cut and paste:
![Page 5: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/5.jpg)
L14.5
Triangle inequality
Theorem. For all u, v, x V, we have
d(u, v) d(u, x) + d(x, v).
u
Proof.
x
v d(u, v)
d(u, x) d(x, v)
![Page 6: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/6.jpg)
L14.6
Well-definedness of shortest paths
If a graph G contains a negative-weight cycle, then some shortest paths may not exist.
Example:
u v
…
< 0
![Page 7: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/7.jpg)
L14.7
Single-source shortest paths
Problem. From a given source vertex s V, find the shortest-path weights d(s, v) for all v V.
If all edge weights w(u, v) are nonnegative, all shortest-path weights must exist.
IDEA: Greedy. 1. Maintain a set S of vertices whose shortest-
path distances from s are known.2. At each step add to S the vertex v V – S
whose distance estimate from s is minimal.3. Update the distance estimates of vertices
adjacent to v.
![Page 8: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/8.jpg)
L14.8
Dijkstra’s algorithm
d[s] 0 for each v V – {s}
do d[v] S Q V ⊳ Q is a priority queue maintaining V – S
while Q do u EXTRACT-MIN(Q)
S S {u} for each v Adj[u]
do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v)
relaxation step
Implicit DECREASE-KEY
![Page 9: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/9.jpg)
L14.9
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2
Graph with nonnegative edge weights:
![Page 10: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/10.jpg)
L14.10
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2
Initialize:
A B C D E Q:
0
S: {}
0
![Page 11: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/11.jpg)
L14.11
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A }
0
“A” EXTRACT-MIN(Q):
![Page 12: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/12.jpg)
L14.12
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A }
0
10
3
10 3
Relax all edges leaving A:
![Page 13: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/13.jpg)
L14.13
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A, C }
0
10
3
10 3
“C” EXTRACT-MIN(Q):
![Page 14: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/14.jpg)
L14.14
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A, C }
0
7
3 5
11
10 3
7 11 5
Relax all edges leaving C:
![Page 15: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/15.jpg)
L14.15
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A, C, E }
0
7
3 5
11
10 3
7 11 5
“E” EXTRACT-MIN(Q):
![Page 16: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/16.jpg)
L14.16
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A, C, E }
0
7
3 5
11
10 3
7 11 5
7 11
Relax all edges leaving E:
![Page 17: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/17.jpg)
L14.17
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A, C, E, B }
0
7
3 5
11
10 3
7 11 5
7 11
“B” EXTRACT-MIN(Q):
![Page 18: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/18.jpg)
L14.18
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A, C, E, B }
0
7
3 5
9
10 3
7 11 5
7 11
Relax all edges leaving B:
9
![Page 19: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/19.jpg)
L14.19
Example of Dijkstra’s algorithm
A
B D
C E
10
3
1 4 7 9 8
2
2 A B C D E Q:
0
S: { A, C, E, B, D }
0
7
3 5
9
10 3
7 11 5
7 11
9
“D” EXTRACT-MIN(Q):
![Page 20: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/20.jpg)
L14.20
Correctness — Part I
Lemma. Initializing d[s] 0 and d[v] for all v V – {s} establishes d[v] d(s, v) for all v V, and this invariant is maintained over any sequence of relaxation steps. Proof. Suppose not. Let v be the first vertex for which d[v] < d(s, v), and let u be the vertex that caused d[v] to change: d[v] = d[u] + w(u, v). Then,
d[v] < d(s, v) supposition d(s, u) + d(u, v) triangle inequality d(s,u) + w(u, v) sh. path specific path d[u] + w(u, v) v is first violation
Contradiction.
![Page 21: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/21.jpg)
L14.21
Correctness — Part II
Theorem. Dijkstra’s algorithm terminates with d[v] = d(s, v) for all v V.
Proof. It suffices to show that d[v] = d(s, v) for every v V when v is added to S. Suppose u is the first vertex added to S for which d[u] d(s, u). Let y be the first vertex in V – S along a shortest path from s to u, and let x be its predecessor:
s x y
u
S, just before adding u.
![Page 22: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/22.jpg)
L14.22
Correctness — Part II (continued)
Since u is the first vertex violating the claimed invariant, we have d[x] = d(s, x). Since subpaths of shortest paths are shortest paths, it follows that d[y] was set to d(s, x) + w(x, y) = d(s, y) when (x, y) was relaxed just after x was added to S. Consequently, we have d[y] = d(s, y) d(s, u) d[u]. But, d[u] d[y] by our choice of u, and hence d[y] = d(s, y) d(s, u) d[u]. Contradiction.
s x y
u S
![Page 23: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/23.jpg)
L14.23
Analysis of Dijkstra
degree(u) times
|V | times
Handshaking Lemma Q(E) implicit DECREASE-KEY’s.
Time = Q(V)·TEXTRACT-MIN + Q(E)·TDECREASE-KEY
Note: Same formula as in the analysis of Prim’s minimum spanning tree algorithm.
while Q do u EXTRACT-MIN(Q)
S S {u} for each v Adj[u]
do if d[v] > d[u] + w(u, v) then d[v] d[u] + w(u, v)
![Page 24: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/24.jpg)
L14.24
Analysis of Dijkstra (continued)
Time = Q(V)·TEXTRACT-MIN + Q(E)·TDECREASE-KEY
Q TEXTRACT-MIN TDECREASE-KEY Total
array O(V) O(1) O(V2)
binary heap
O(lg V) O(lg V) O(E lg V)
Fibonacci heap
O(lg V) amortized
O(1) amortized
O(E + V lg V) worst case
![Page 25: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/25.jpg)
L14.25
Unweighted graphs
Suppose w(u, v) = 1 for all (u, v) E. Can the code for Dijkstra be improved?
while Q do u DEQUEUE(Q)
for each v Adj[u] do if d[v] =
then d[v] d[u] + 1 ENQUEUE(Q, v)
• Use a simple FIFO queue instead of a priorityqueue.
• Breadth-first search
Analysis: Time = O(V + E).
![Page 26: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/26.jpg)
L14.26
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q:
![Page 27: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/27.jpg)
L14.27
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a
0
0
![Page 28: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/28.jpg)
L14.28
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d
0
1
1
1 1
![Page 29: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/29.jpg)
L14.29
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e
0
1
1
2 2
1 2 2
![Page 30: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/30.jpg)
L14.30
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e
0
1
1
2 2
2 2
![Page 31: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/31.jpg)
L14.31
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e
0
1
1
2 2
2
![Page 32: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/32.jpg)
L14.32
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e g i
0
1
1
2 2
3
3
3 3
![Page 33: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/33.jpg)
L14.33
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e g i f
0
1
1
2 2
3
3
4
3 4
![Page 34: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/34.jpg)
L14.34
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e g i f h
0
1
1
2 2
3
3
4 4
4 4
![Page 35: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/35.jpg)
L14.35
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e g i f h
0
1
1
2 2
3
3
4 4
4
![Page 36: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/36.jpg)
L14.36
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e g i f h
0
1
1
2 2
3
3
4 4
![Page 37: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/37.jpg)
L14.37
Example of breadth-first search
a
b
c
d
e
g
i
f h
Q: a b d c e g i f h
0
1
1
2 2
3
3
4 4
![Page 38: Lecture 14](https://reader033.fdocuments.net/reader033/viewer/2022051419/55cf8f19550346703b98f58b/html5/thumbnails/38.jpg)
L14.38
Correctness of BFS
Key idea:
The FIFO Q in breadth-first search mimics the priority queue Q in Dijkstra.
• Invariant: v comes after u in Q implies thatd[v] = d[u] or d[v] = d[u] + 1.
while Q do u DEQUEUE(Q)
for each v Adj[u] do if d[v] =
then d[v] d[u] + 1 ENQUEUE(Q, v)