Chapter 5 Dynamic Programming 2001 년 5 월 24 일 충북대학교 알고리즘연구실
Dynamic Programming Used when the solution of a problem is a result of a sequence of decisions Example –Knapsack –Shortest path –Optimal merge patterns
5.3 All pairs shortest paths G(V,E) : A directed graph with n vertices A k (i,j) : Length of shortest path from i to j going through no vertex of index greater than k A(i,j) = min{min{A k-1 (i,k) + A k-1 (k,j)},cost(i,j)} A k (i,j) = A k-1 (i,k) + A k-1 (k,j) A k (i,j) = min{A k-1 (i,j),A k-1 (i,k) + A k-1 (k,j)},k>=1 C(i,j) = 0, 1<=i<=n C(i,j) Cost of edge if (i,j) E if i j and (i,j) E
5.3 All pairs shortest paths Figure 5.5 Graph with negative cycle
5.3 All pairs shortest paths Program 5.3 Function to compute lengths of shortest paths
5.3 All pairs shortest paths Figure 5.6 Directed Graph and associated matrices
5.4 Single-source shortest paths: General weights dist[u] = cost[v][u] dist l [u] = length of a shortest path from the source vertex V to vertex U under the constraint that the shortest path contains at most L edges 순환관계 –dist k [u] = min(dist k-1 [u],min(dist k-1 [i] + cost[i][u])),2<=k<=n-1
5.4 Single-source shortest paths: General weights Figure 5.10 Shortest paths with negative edge lengths
5.4 Single-source shortest paths: General weights Program 5.4 Bellman and Ford algorithm to compute shortest paths
5.5 Optimal binary search trees Definition –A binary search tree T All identifies in the T left < T root All identifies in the T right < T root The left and right subtres of T are also BST 가정 –a 1 < a 2 < … < a n –T i,j : OBST for a i+1, …,a j –C i,j : cost for T i,j –R i,j : root of T i,j –Weight of T i,j : W i,j = Q i +
5.5 Optimal binary search trees P(i) : probability Search(a(i)) Q(i) : probability search (a(i) < x < a(i+1)) : Probability of an unsuccessful search Internal node External node (5.9)
Optimal Binary Search Tree Cost of the search Tree p(k)+cost(l)+cost(r)+w(0,k-1)+w(k,n) c(0, n) = min{c(0, k-1) + c(k, n) +p(k) +w(0, k-1)+w(k, n)} c(i, j) = min{c(i, k-1), c(k, j)+p(k) + w(i,k-1)+w(k,j)} C(i,j) = min{c(i,k-1)+c(k,j)} + w(i,j)
5.5 Optimal binary search trees Figure 5.12 Two possible binary search trees
5.5 Optimal binary search trees Figure 5.13 Binary search trees of Figure 5.12 with external nodes added
5.5 Optimal binary search trees
Figure 5.16 Computation of c(0,4), w(0,4), and r(0,4)
5.8 Reliability design Solve a problem with a multiplicative optimization function Several devices are connected in series r i be the reliability of device D i Reliability of the entire system Duplicate : multiple copies of the same device type are connected in parallel use switching circuits
5.8 Reliability design Figure 5.19 n devices D i, 1<=i<=n, connected in series Figure 5.20 Multiple devices connected in parallel in each stage
Multiple copies stage in contain m i copies of D i P(all m i malfunction) = (1-r i ) mi Reliability of stage i =1-(1-r i ) mi
5.8 Reliability design Maximum allowable cost of the system Maximize Subject to M i >=1 and integer, 1<=i<=n Assume c i >0 u i =
5.9 The traveling salesperson problem 우체부 : n 개의 틀린 장소에서 mail pickup –n+1 vertex graph –Edge distance from i to j –Tour of minimum cost Permutation problem –n! different permutation of n object while there are 2 n different subset of n object n! > O(2 n )
5.9 The traveling salesperson problem Tour : simple path that starts and ends at vertex 1 Every tour : edge for some k v-{1} each Optimal tour : path(k,1) –Shortest k to 1 path all the vertices in V-{1,k} Let g(i,s) be the length of a shortest path starting at vertex i, going through all vertices in S and terminating at vertex 1
5.9 The traveling salesperson problem Figure 5.21 Directed graph and edge length matrix c
5.9 The traveling salesperson problem Thus g(2, ) = c 21 = 5, g(3, ) = c 31 = 6, and g(4, ) = c 41 = 8. We obtain g(2,{3}) = c 23 + g(3, ) = 15 g(2,{4}) = 18 g(3,{2}) = 18 g(3,{4}) = 20 g(4,{2}) = 13 g(4,{3}) = 15 g(2,{3,4}) = min{c 23 +g(3,{4}),c 24 +g(4,{3})} = 25 g(3,{2,4}) = min{c 32 +g(2,{4}),c 34 +g(4,{2})} = 25 g(4,{2,3}) = min{c 42 +g(2,{3}),c 43 +g(3,{2})} = 23 g(1,{2,3,4}) = min{c 12 +g(2,{3,4}),c 13 +g(3,{2,4}),c 14 +g(4,{2,3})} = min(35,40,43} = 35
5.9 The traveling salesperson problem Let N be the number of g(i,s), that have to be computed before g(1,V-{1}) i, computed for each value of |s| n-1 choices of i The number of distinct sets of S of size k not including 1 and i