2015/4/11cs4335 design and analysis of algorithms /shuai cheng li page 1 evaluation of the course...
TRANSCRIPT
112/04/18 CS4335 Design and Analysis of Algorithms /Shuai Cheng Li
Page 1
Evaluation of the Course (Modified)• Course work: 30%
– Four assignments (25%)• 7.5 5 points for each of the first two three assignments
• 10 points for the last assignment
– One term paper (5%) (week13 Friday)• Find an open problem from internet.
– State the problem definition in English.
– Write the definition mathematically.
– Summarize the current status
– No more than 1 page
• A final exam: 70%
23/4/18 chapter25 3
Shortest Paths: Dynamic Programming
Def. OPT(i, v)=length of shortest s-v path P using at most i edges. • Case 1: P uses at most i-1 edges.
– OPT(i, v) = OPT(i-1, v)• Case 2: P uses exactly i edges.
– If (w, v) is the last edge, then OPT use the best s-w path using at most i-1 edges and edge (w, v).
Remark: if no negative cycles, then OPT(n-1, v)=length of shortest s-v path.
s w v
Cwv
OPT(0, s)=0.
23/4/18 chapter25 4
Shortest Paths: implementationShortest-Path(G, t) { for each node v V M[0, v] = M[0, s] = 0 for i = 1 to n-1 for each node w V M[i, w] = M[i-1, w] for each edge (w, v) E M[i, v] = min { M[i, v], M[i-1, w] + cwv }}
Analysis. O(mn) time, O(n2) space. m--no. of edges, n—no. of nodes
Finding the shortest paths. Maintain a "successor" for each table entry.
23/4/18 chapter25 5
Shortest Paths: Practical implementations
Practical improvements.• Maintain only one array M[v] = shortest v-t path that we
have found so far.• No need to check edges of the form (w, v) unless M[w]
changed in previous iteration.Theorem. Throughout the algorithm, M[v] is the length of
some s-v path, and after i rounds of updates, the value M[v] the length of shortest s-v path using i edges.
Overall impact.• Memory: O(m + n).• Running time: O(mn) worst case, but substantially faster in
practice.
23/4/18 chapter25 6
Bellman-Ford: Efficient ImplementationPush-Based-Shortest-Path(G, s, t) { for each node v V { M[v] = successor[v] = empty } M[s] = 0 for i = 1 to n-1 { for each node w V { if (M[w] has been updated in previous iteration) { for each node v such that (w, v) E { if (M[v] > M[w] + cwv) { M[v] = M[w] + cwv successor[v] = w } } } If no M[w] value changed in iteration i, stop. }}
Time O(mn), space O(n).
Note: Dijkstra’s Algorithm select a
w with the smallest M[w] .
23/4/18 chapter25 11
0
67
92
5
-2
8 7
-3
-4
2 4
7 -2
s
u v
x y(e) vertex: s u v x y
d: 0 2 4 7 -2
successor: s v x s u
23/4/18 chapter25 12
Corollary: If negative-weight circuit exists in the given graph, in the n-th iteration, the cost of a shortest path from s to some node v will be further reduced.
Demonstrated by the following example.
23/4/18 chapter25 22
Dijkstra’s Algorithm: (Recall)
• Dijkstra’s algorithm assumes that w(e)0 for each e in the graph.
• maintain a set S of vertices such that– Every vertex v S, d[v]=(s, v), i.e., the shortest-path from s to v
has been found. (Intial values: S=empty, d[s]=0 and d[v]=)
• (a) select the vertex uV-S such that
d[u]=min {d[x]|x V-S}. Set S=S{u}
(b) for each node v adjacent to u do RELAX(u, v, w).
• Repeat step (a) and (b) until S=V.
23/4/18 chapter25 23
Continue:
• DIJKSTRA(G,w,s):
• INITIALIZE-SINGLE-SOURCE(G,s)
• S
• Q V[G]
• while Q
• do u EXTRACT -MIN(Q)
• S S {u}
• for each vertex v Adj[u]
• do RELAX(u,v,w)
23/4/18 chapter25 25
0
5/s
10/s
105
2
1
3 4
2
6
97
s
u v
x y8
8
(b)(s,x) is the shortest path using one edge. It is also the shortest path from s to x.