1 / 59

Advanced Dynamic Programming II

Advanced Dynamic Programming II. HKOI Training Team 2004. In the previous lesson. What is DP? Some examples of DP Probably NOT enough for you to solve DP problems in IOI/NOI Except those classic ones To identify a DP problem, the keys are Recurrence Optimal substructure

alda
Download Presentation

Advanced Dynamic Programming II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Advanced Dynamic Programming II HKOI Training Team 2004

  2. In the previous lesson... • What is DP? • Some examples of DP • Probably NOT enough for you to solve DP problems in IOI/NOI • Except those classic ones • To identify a DP problem, the keys are • Recurrence • Optimal substructure • Experience (Chinglish(?) - “DP feel”)

  3. In this lesson... • Dimension reduction • DP on trees, graphs, etc. • Game strategy - Minimax

  4. Dimension Reduction • Reduce the memory complexity by one (or more) dimension • Usually a “rolling” array is employed

  5. Triangle revisited • Only a 2x5 array is needed A F

  6. Rolling array F’ F

  7. LCS revisited • Recall the recurrence • F[i,j] = F[i-1,j-1]+1 if A[i]=B[j] • F[i,j] = max{F[i-1,j],F[i,j-1]} if A[i]B[j] • Note that F[i,?] only depends on F[i,?] and F[i-1,?] • Thus we can just keep 2 rows

  8. Non-rectangular structures • DP can also be applied on graphs, trees, etc. • Usually structures with no cycles • Recurrence should not contain cycles! • Rooted tree is a recursive structure • Notation • C(v): the set of children of v (in a rooted tree)

  9. Path Counting • A graph is a directed acyclic graph (DAG) if it is directed and has no cycles This is not a DAG. This is a DAG.

  10. Path Counting • Given a DAG G, and two vertices of G, s and t, count the number of distinct paths from s to t • What if I give you a graph with directed cycles? • How is the graph given to you? • Adjacency matrix • Adjacency list • Other ways

  11. B A D C E F Path (example) • s = A, t = E • Paths: • ABDE, ACBDE, ACDE • Answer = 3

  12. s t Path (an attempt) • Use DFS to find out all paths from s to t • Simple enough, but consider this graph • How many paths from s to t? • 24= 16

  13. Path (solution) • Obviously the three paths shown below must be distinct • Even if they meet at some intermediate vertices! s C B A ... ... ... t

  14. Path (solution) • Topological order 7 s 6 5 t 2 3 4 1

  15. Path (solution) • Number of paths from vertex to t 3 7 s 6 2 1 5 t 1 2 3 4 1 0 1 0

  16. recurrence relation Path (solution) • Algorithm • Tsort the vertices Set F[v] = 0 for every vertex v Set F[t] = 1 Following topological order, for each vertex v For each outgoing edge (v, u) F[v] = F[v] + F[u] • Time complexity • Tsort – O(V+E) • DP – O(V+E) • Total – O(V+E)

  17. Path (extensions) • Longest path in DAG • Given a weighted DAG G, find the length of a longest path from s to t • Shortest path counting • Given a weighted graph G, find the number of shortest paths from s to t

  18. Longest Path in Tree I • Given a weighted tree T, find the length of the longest path from a given node s s 5 7 4 5 6 3

  19. Longest I (simple solution) • Make s the root s 5 7 5 6 4 3

  20. Longest I (simple solution) • Calculate the nodes’ distances from s (in pre-order/level-order) 0 s 5 5 7 5 6 10 12 11 4 3 14 13

  21. Longest I (another solution) • A longest path must end at one of the leaves s 5 7 5 6 4 3

  22. Longest I (another solution) • Let F[v] be the longest distance between v to one of its descendant leaves • For example, F[x] = 9 s x 5 7 5 6 4 3

  23. Longest I (another solution) • Compute F in post-order • F[x] = 0 for every leaf x • F[v] = max {F[u]+length(v,u)} u C(v) s 14 answer 5 9 7 5 6 4 0 0 4 3 0 0

  24. Longest I (another solution) • Algorithm • Longest_One(vertex v) { if (v is a leaf) F[v]  0 else F[v]  0 for each child u of v do Longest_One(u) if (F[u]+length(v,u) F[v]  F[u]+length(v,u) }

  25. Longest I (another solution) • Time complexity – O(V) • No overlapping subproblems • F[] is redundant!

  26. Longest Path in Tree II • Given a weighted tree T (all weights positive), find the length of the longest path in T 5 7 4 5 6 3

  27. 7 4 5 5 5 3 6 5 7 6 4 3 Longest II (solution) • Take any node and make it root

  28. 7 4 5 5 5 3 6 5 7 6 4 3 Longest II (solution) • A longest path must be a leaf-to-leaf or a root-to-leaf path • Must it pass the root?

  29. z z Longest II (solution) • Let z be the uppermost node in the longest path • Only two cases the only common node is z

  30. Longest II (solution) • As in Longest I, let F[v] be the longest distance between v to one of its descendant leaves • Define G as follows • G[v] = F[v] if v has less than 2 children • G[v] = max{F[u]+length(v,u)} + second_max {F[w]+length(v,w)} • Note that max may equal second_max u C(v) w C(v)

  31. 4 5 3 5 7 6 Longest II (demonstration) • Computing G from F 12 (7+5)+(0+4) = 16 7 (0+7)+(0+6) = 13 0 0 0 0 0 0 0 0 0 0

  32. 5 7 5 6 4 3 Longest II (demonstration) • Computing G from F (again) 14 14 9 (4+5)+(0+7) = 16 4 (0+4)+(0+3) = 7 0 0 0 0 0 0 0 0

  33. Longest II (solution) • Time complexity • Computing F – O(V) • Computing G – O(V) • Total – O(V) • F and G can be computed together • Not quite a DP problem

  34. Simplified Gems • Given a tree T with N nodes • Each node is to be covered by a gemstone • Costs of gemstones: 1, 2, 3, …, M • There is an unlimited supply of gemstones • Two adjacent nodes must contain gemstones of different costs • What is the minimum total cost?

  35. 2 1 1 1 3 1 1 1 Gems (example) • N = 8, M = 4

  36. Gems (attempt) • Make the tree a rooted one first

  37. Gems (attempt) • Let G[v] be the minimum cost to cover all nodes in the subtree rooted at v • How to set up the recurrence?

  38. Gems (solution) • Let F[v,c] be the minimum cost to cover all nodes in the subtree rooted at v and the cost of the gemstone covering v is c • Base cases • F[x,c] = c for every leaf x and 1  c  M • Progress • F[v,c] =  min {F[u,d]} + c • Post-order traversal u  C(v) 1dM,dc

  39. Gems (demostration) • M = 4

  40. Gems (solution) • Algorithm (recursive, non-DP) • Gems(vertex v,integer c) { if (v is leaf) return c valuec for each child u of v do temp ∞ for d 1 to M do if (d  c) temp  min{temp, Gems(u,d)} value value + temp return value }

  41. Gems (solution) • Algorithm (DP) • Gems_DP(vertex v) { if (v is a leaf) set base case and exit for each child u of v do Gems_DP(u) for c 1 to M do F[v,c]  c for each child u of v do temp ∞ for d 1 to M do if (d  c) temp  min{temp, F[u,d]} F[v,c]  temp + c }

  42. Gems (solution) • Time complexity • Computing F[v,c] – O(M × #children of v) • Computing F[v,c] for all vertices – O(MN) • Computing all entries – (M2N) • The time complexity can be reduced to O(MN) with a “trick” • The original problem allows N to be as large as 10000 and M arbitrarily large • Even O(N2) is too slow • How to solve it??

  43. Game strategies • Not closely related to DP • Almost all game-type problems in IOI/BOI/CEOI requires the concept of Minimax • DP is needed in most of these problems

  44. Game-type problems • Usually interactive problems • Write a program to play a simple two-player game with a judging program • e.g. play tic-tac-toe with the judging program • Often the judging program uses an optimal strategy

  45. Game tree • A (finite or infinite) rooted tree showing the movements of a game play … … … … … … … …

  46. Card Picking • A stack of N cards with numbers on them • Two players take turns to take cards from the top of the stack • 1, 2, or 3 cards can be taken in each turn • Game ends when all cards have been taken • The player with a higher total score (sum of numbers) wins

  47. Card (example) B A 2 1 9 7 1 4 3 17 14 4

  48. Card (game tree) • N = 4 • Only 5 different states A’s move B’s move NULL NULL NULL NULL NULL NULL NULL

  49. Minimax • A recursive algorithm for choosing the next move in a two-player game • A value is associated with each state • e.g. in tic-tac-toe, all winning states may have value 1 • We assume that the other player always chooses his best move

  50. A’s moves B’s moves 1 -1 4 3 2 1 7 -2 Minimax • Suppose A wants to maximize his final score (value), which move should he make? 1 max -1 1 -2 min min min

More Related