Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced Dynamic Programming II HKOI Training Team 2004.

Similar presentations


Presentation on theme: "Advanced Dynamic Programming II HKOI Training Team 2004."— Presentation transcript:

1 Advanced Dynamic Programming II HKOI Training Team 2004

2 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 3 In this lesson...  Dimension reduction  DP on trees, graphs, etc.  Game strategy - Minimax

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

5 5 Triangle revisited  Only a 2x5 array is needed 3 14 258 9561 52366 AF 3 47 91215 21172116 2623242722

6 6 47 91215 21172116 2623242722 Rolling array F 3 3 47 91215 21172116 2623242722 F’F’

7 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 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 9 Path Counting  A graph is a directed acyclic graph (DAG) if it is directed and has no cycles This is a DAG. This is not a DAG.

10 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 11 Path (example)  s = A, t = E  Paths: ABDE, ACBDE, ACDE  Answer = 3 A B C F E D

12 12 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?  2 4 = 16 s t

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

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

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

16 16 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) recurrence relation

17 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 18 Longest Path in Tree I  Given a weighted tree T, find the length of the longest path from a given node s s 7 5 6 5 3 4

19 19 Longest I (simple solution)  Make s the root s 7 5 6 5 34

20 20 Longest I (simple solution)  Calculate the nodes ’ distances from s (in pre-order/level-order) s 7 5 6 5 34 0 5 1211 10 1413

21 21 Longest I (another solution)  A longest path must end at one of the leaves s 7 5 6 5 34

22 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 7 5 6 5 34 x

23 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)} s 7 5 6 5 34 u  C(v) 0 0 00 4 9 14answer

24 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 25 Longest I (another solution)  Time complexity – O(V)  No overlapping subproblems  F[] is redundant!

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

27 27 Longest II (solution)  Take any node and make it root 75 6 5 3 4 7 5 6 5 34

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

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

30 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 31 Longest II (demonstration)  Computing G from F 75 6 5 3 4 00 00 7 12 0000 00 (0+7)+(0+6) = 13 (7+5)+(0+4) = 16

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

33 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 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 35 Gems (example)  N = 8, M = 4 2 3 1 1 1 1 1 1

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

37 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 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 39 Gems (demostration)  M = 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 7 5 6 7 1 2 3 4 1 2 3 4 12 11 12

40 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 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 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 – (M 2 N)  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(N 2 ) is too slow How to solve it??

43 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 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 45 Game tree  A (finite or infinite) rooted tree showing the movements of a game play O OOO … X O X O OXOX …… XOXO … … …… …

46 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 47 Card (example) 2 1 9 7 1 4 3 4 A B 17 14

48 48 Card (game tree)  N = 4  Only 5 different states 1 2 3 4 2 3 4 4 3 4 3 4 4 NULL 4 4 A ’ s move B ’ s move NULL

49 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 50 Minimax  Suppose A wants to maximize his final score (value), which move should he make? 143217-2 A ’ s moves B ’ s moves 1-2 1 min max

51 51 Minimax  Again! 1 398 28-42-27975 A ’ s move B ’ s move 1

52 52 Minimax  Answer: left move 2 211 2381981 23898 -29 28-42-27975 A ’ s move B ’ s move 1

53 53 Tic-tac-toe  O wants to maximize the value  Is this a winning state for O? OX OOO XX OX OO OXX OX OO XX OOX OO XX value: 1 XOX OO OXX OX XOO OXX OOX XOO XX OOX OO XXX value: -1 OOX XOO OXX XOX OOO OXX OOX XOO OXX value: 0 value: 1 value: 0 O X

54 54 Card Picking revisited  Let the F-value of a state be the maximum difference (preserve +/- sign) between your score and your opponent ’ s score if the game starts from this state (assume that your opponent plays perfectly)

55 55 Card Picking revisited  A transition may alter the F-value  Two states that appear the same may have different F-values! 9 NULL F-value: 0 F-value: 9 9 NULL F-value: 0 F-value: -9

56 56 Card Picking revisited  We can still apply the concept of Minimax 1 2 3 4 2 3 4 4 3 4 3 4 4 NULL 4 4 0 00 000 -4 4 7 NULL 0 4 +7+3+4 -4 -2 -5 -9 -3-7-4 -7 -4 +1 +3 +6 2

57 57 Card Picking revisited  A recurrence can be set up  Many overlapping sub-problems, so DP!  Find the optimal move by backtracking  Most game-type problems in OI competitions are similar to this game

58 58 Conclusion  Many DP problems discussed are now classics  More and more atypical DP problems in competitions (esp. on trees)  Still not enough for solving some difficult IOI/NOI/BOI/CEOI DP problems  We hope that those problems can be covered in the summer vacation  Practice, practice and practice

59 59 The end  Prepare for TFT (19 June)....as well as your exam  Have a nice holiday!


Download ppt "Advanced Dynamic Programming II HKOI Training Team 2004."

Similar presentations


Ads by Google