Download presentation
Presentation is loading. Please wait.
Published byJuliette Cranfield Modified over 9 years ago
1
SNU IDB Lab. Ch.14 Tournament Trees © copyright 2006 SNU IDB Lab.
2
SNU IDB Lab. Data Structures 2 BIRD’S-EYE VIEW (0) Chapter 12: Binary Tree Chapter 13: Priority Queue Heap and Leftiest Tree Chapter 14: Tournament Trees Winner Tree and Loser Tree
3
SNU IDB Lab. Data Structures 3 BIRD’S-EYE VIEW A tournament tree is a complete binary tree that is most efficiently stored by using the array-based binary tree Study two varieties of tournament trees Winner tree Loser tree Tournament Tree Application Bin packing
4
SNU IDB Lab. Data Structures 4 Table of Contents Winner Tree Loser Trees Tournament Tree Applications Bin Packing Using First Fit (BPFF) Bin Packing Using Next Fit (BPNF)
5
SNU IDB Lab. Data Structures 5 Winner Tree Definition: A winner tree for n players is a complete binary tree with n external and n-1 internal nodes Each internal node records the winner of the match played there.
6
SNU IDB Lab. Data Structures 6 Max Winner tree The player with the larger value wins
7
SNU IDB Lab. Data Structures 7 Min Winner tree The player with the smaller value wins
8
SNU IDB Lab. Data Structures 8 Complexity of Winner Tree O(log(n)) time to restructure n player winner tree O(1) time to play match at each match node n - 1 match nodes O(n) time to initialize n player winner tree
9
SNU IDB Lab. Data Structures 9 WT Applications – Sorting (1) 2 4 2 45 23 46598237 Min Winner Tree
10
SNU IDB Lab. Data Structures 10 WT Applications – Sorting (2) 2 4 2 45 23 46598237 2 Sorted array
11
SNU IDB Lab. Data Structures 11 WT Applications – Sorting (3) 2 4 2 45 83 46598237 2 Sorted array Restructuring starts at the place where “2” is removed
12
SNU IDB Lab. Data Structures 12 WT Applications – Sorting (4) 2 4 3 45 83 46598237 2 Sorted array
13
SNU IDB Lab. Data Structures 13 WT Applications – Sorting (5) 3 4 3 45 83 46598237 2 Sorted array
14
SNU IDB Lab. Data Structures 14 WT Applications – Sorting (6) 3 4 3 45 83 46598237 23 Sorted array Restructuring starts at the place where “3” is removed
15
SNU IDB Lab. Data Structures 15 WT Applications – Sorting (7) 3 4 3 45 87 46598237 23 Sorted array
16
SNU IDB Lab. Data Structures 16 WT Applications – Sorting (8) 3 4 7 45 87 46598237 23 Sorted array
17
SNU IDB Lab. Data Structures 17 WT Applications – Sorting (9) 4 4 7 45 87 46598237 23 Sorted array
18
SNU IDB Lab. Data Structures 18 WT Applications – Sorting (10) 4 4 7 45 87 46598237 234 Sorted array Restructuring starts at the place where “4” is removed
19
SNU IDB Lab. Data Structures 19 WT Applications – Sorting (11) 4 4 7 65 87 46598237 234 Sorted array
20
SNU IDB Lab. Data Structures 20 WT Applications – Sorting (12) 4 5 7 65 87 46598237 234 Sorted array
21
SNU IDB Lab. Data Structures 21 WT Applications – Sorting (13) 5 5 7 65 87 46598237 234 Sorted array
22
SNU IDB Lab. Data Structures 22 WT Applications – Sorting (14) 5 5 7 65 87 46598237 2345 Sorted array
23
SNU IDB Lab. Data Structures 23 WT Applications – Sorting (15) 5 5 7 69 87 46598237 2345 Sorted array
24
SNU IDB Lab. Data Structures 24 WT Applications – Sorting (16) 5 6 7 69 87 46598237 2345 Sorted array
25
SNU IDB Lab. Data Structures 25 WT Applications – Sorting (17) 6 6 7 69 87 46598237 2345 Sorted array
26
SNU IDB Lab. Data Structures 26 WT Applications – Sorting (18) 6 6 7 69 87 46598237 23456 Sorted array
27
SNU IDB Lab. Data Structures 27 WT Applications – Sorting (19) 6 9 7 69 87 46598237 23456 Sorted array
28
SNU IDB Lab. Data Structures 28 WT Applications – Sorting (20) 7 9 7 69 87 46598237 23456 Sorted array
29
SNU IDB Lab. Data Structures 29 WT Applications – Sorting (21) 7 9 7 69 87 46598237 234567 Sorted array
30
SNU IDB Lab. Data Structures 30 WT Applications – Sorting (22) 7 9 8 69 87 46598237 234567 Sorted array
31
SNU IDB Lab. Data Structures 31 WT Applications – Sorting (23) 8 9 8 69 87 46598237 234567 Sorted array
32
SNU IDB Lab. Data Structures 32 WT Applications – Sorting (24) 8 9 8 69 87 46598237 2345678 Sorted array
33
SNU IDB Lab. Data Structures 33 WT Applications – Sorting (25) 9 9 8 69 87 46598237 2345678 Sorted array
34
SNU IDB Lab. Data Structures 34 WT Applications – Sorting (26) 9 9 8 69 87 46598237 23456789 Sorted array
35
SNU IDB Lab. Data Structures 35 Complexity of Winner-Tree Sorting Initialize winner tree: O(n) time Remove winner and replay: O(logn) time Remove winner and replay n times: O(n*logn) time Total sort time is O(n*logn) Actually Ɵ (n*logn)
36
SNU IDB Lab. Data Structures 36 The ADT WinnerTree AbstractDataType WinnerTree { instances complete binary trees with each node pointing to the winner of the match played there: the external nodes represent the players operations initialize(a) : initialize a winner tree for the players in array a getWinner() : return the tournament winner rePlay(i) : replay matches following a change in player i }
37
SNU IDB Lab. Data Structures 37 Replace Winner and Replay (1) 2 4 2 45 23 46598237 Suppose replace winner “ 2 ” with the new value “ 6 ” Changing the the value of the winner requires a replay of all matches on the path from the winner’s external node to the root Tree Height O(log n) time more precisely Ɵ (log n)
38
SNU IDB Lab. Data Structures 38 Replace Winner and Replay (2) 2 4 2 45 23 46598637 rePlay(6) : start rematch on player 6 whose value is now “6”
39
SNU IDB Lab. Data Structures 39 Replace Winner and Replay (3) 2 4 2 45 63 46598637 1 st match Player 6 is a[12] in the array: the first match result between a[11] and a[12] is stored in a[5]
40
SNU IDB Lab. Data Structures 40 Replace Winner and Replay (4) 2 4 3 45 63 46598637 2 nd match Change in a[5] causes a rematch between a[5] and a[6]. The match result is stored in a[2].
41
SNU IDB Lab. Data Structures 41 Replace Winner and Replay (5) 3 4 3 45 63 46598637 3 rd match = Log 2 8 Change in a[2] causes a rematch between a[1] and a[2]. The match result is stored in a[0].
42
SNU IDB Lab. Data Structures 42 Table of Contents Winner Trees Loser Trees Tournament Tree Applications Bin Packing Using First Fit (BPFF) Bin Packing Using Next Fit (BPNF)
43
SNU IDB Lab. Data Structures 43 Loser Trees Each match node stores the match loser rather than the match winner The loser of final match a< c< a< f< g< f< Min Loser Tree The winner of final match f< Can reduce the work when the winner value is changed Show the better performance than the winner tree
44
SNU IDB Lab. Data Structures 44 Replay in 8-Player Min Winner Tree (1) Suppose we change f (key 2) with a new key 5 f a f ac fg abcdefgh 46598237 5
45
SNU IDB Lab. Data Structures 45 Replay in 8-Player Min Winner Tree (2) We should compare f' with e (=another child of parent of f') Need referencing twice (self parent sibling) f a f ac f'g abcde gh 4659837 5
46
SNU IDB Lab. Data Structures 46 Replay in 8-Player Min Winner Tree (3) We should compare f' with g (=another child of parent of f') Need referencing twice (self parent sibling) f a g ac g abcdgh 4659837 f' e 5
47
SNU IDB Lab. Data Structures 47 Replay in 8-Player Min Winner Tree (4) We should compare g with a (=another child of parent of g) Need referencing twice (self parent sibling) f a g ac g abcdgh 4659837 f' e 5
48
SNU IDB Lab. Data Structures 48 Replay in 8-Player Min Loser Tree (1) Suppose we change winner f (key 2) with a new key 5 a c g bd eh abcdefgh f 46598237 Special case: The key of winner is changed 5
49
SNU IDB Lab. Data Structures 49 Replay in 8-Player Min Loser Tree (2) We simply compare f' with its parent because previous loser is stored at parent node Need referencing only once (self parent) a c g bd e h abcde f' gh 4659837 5 f
50
SNU IDB Lab. Data Structures 50 Replay in 8-Player Min Loser Tree (3) We simply compare f' with its parent because previous loser is stored at parent node Need referencing only once (self parent) a c g bd e h abcdef'gh 4659837 5 f
51
SNU IDB Lab. Data Structures 51 Replay in 8-Player Min Loser Tree (4) We simply compare g with its parent because previous loser is stored at parent node Need referencing only once (self parent) a c f' bd eh abcde gh 4659837 5 f
52
SNU IDB Lab. Data Structures 52 Replay in 8-Player Min Loser Tree (5) Winner changes to g a c f' bd eh abcde gh 4659837 5 f g
53
SNU IDB Lab. Data Structures 53 Replay in 8-Player Min Loser Tree (6) Suppose we change d (key 9) with a new key 3 We should compare d with its sibling(c), NOT parent(d) a c g bd eh abcdefgh f 46598237 The loser tree is not effective if the changed node is not the previous winner 3
54
SNU IDB Lab. Data Structures 54 Table of Contents Winner Trees Loser Trees Tournament Tree Applications Bin Packing Using First Fit (BPFF) Bin Packing Using Next Fit (BPNF)
55
SNU IDB Lab. Data Structures 55 Bin Packing Problem Object i requires objectSize[i] units of capacity 0 < objectSize[i] ≤ binCapacity A feasible packing is an assignment of objects to bins so that no bin’s capacity is exceeded Optimal packing: A feasible packing using the fewest number of bins First-Fit: find the first available bin using the winner tree Next-Fit: A variant of First-Fit searching the next bins
56
SNU IDB Lab. Data Structures 56 First-Fit and Winner Trees (1) Initialize: Winner tree of 8 bins and binCapacity = 10 If the players have the same value, the player with the small index is winner Suppose objects to be allocated are [ 8, 6, 5, 3] We want a feasible packing with a fewest number of bins 1 1 5 13 57 10 Tree[1] Tree[2] Tree[3] Tree[4]Tree[5]Tree[6]Tree[7]
57
SNU IDB Lab. Data Structures 57 First-Fit and Winner Trees (2) Suppose objects to be allocated are [ 8, 6, 5, 3] objectSize[1] is 8 Bin[tree[1]].unusedCapacity >= objectSize[1] go to left 10 > 8 1 1 5 13 57 10 Tree[1] Tree[2] Tree[4]
58
SNU IDB Lab. Data Structures 58 First-Fit and Winner Trees (3) Bin[tree[2]].unusedCapacity >= objectSize[1] go to left 10 > 8 1 1 5 13 57 10
59
SNU IDB Lab. Data Structures 59 First-Fit and Winner Trees (4) Bin[tree[4]].unusedCapacity >= objectSize[1] go to left 10 > 8 1 1 5 13 57 10 Tree[4]
60
SNU IDB Lab. Data Structures 60 First-Fit and Winner Trees (5) Object with size “8” is now in Bin[1] Need to update the winner tree 1 1 5 13 57 210 8
61
SNU IDB Lab. Data Structures 61 First-Fit and Winner Trees (6) 1 1 5 23 57 210 Replay: start rematch at Tree[4] Tree[4] 8
62
SNU IDB Lab. Data Structures 62 First-Fit and Winner Trees (7) 1 2 5 23 57 210 Rematch at Tree[3] Tree[3] 8
63
SNU IDB Lab. Data Structures 63 First-Fit and Winner Trees (8) 2 2 5 23 57 210 Tree[1] Tree[2] Tree[4] Rematch at Tree[1] 8
64
SNU IDB Lab. Data Structures 64 First-Fit and Winner Trees (9) Suppose objects to be allocated are [ 8, 6, 5, 3] objectSize[2] = 6 2 2 5 23 57 210 8 Tree[1]
65
SNU IDB Lab. Data Structures 65 First-Fit and Winner Trees (10) Bin[tree[1]].unusedCapacity >= objectSize[2] 10 > 6 2 2 5 23 57 210 8 Tree[1]
66
SNU IDB Lab. Data Structures 66 First-Fit and Winner Trees (11) Bin[tree[2]].unusedCapacity >= objectSize[2] 10 > 6 2 2 5 23 57 210 Tree[1] Tree[2] Tree[4] 8
67
SNU IDB Lab. Data Structures 67 First-Fit and Winner Trees (12) Bin[tree[4]].unusedCapacity >= objectSize[2] 10 > 6 2 2 5 23 57 210 8
68
SNU IDB Lab. Data Structures 68 First-Fit and Winner Trees (13) Object with size “6” is now in Bin[2] 2 2 5 23 57 2 410 86
69
SNU IDB Lab. Data Structures 69 First-Fit and Winner Trees (14) 2 2 5 23 57 2 410 Update the winner tree 86
70
SNU IDB Lab. Data Structures 70 First-Fit and Winner Trees (15) 2 3 5 23 57 2 410 Update the winner tree 86
71
SNU IDB Lab. Data Structures 71 First-Fit and Winner Trees (16) 3 3 5 23 57 2 410 Update the winner tree 86
72
SNU IDB Lab. Data Structures 72 First-Fit and Winner Trees (17) Suppose objects to be allocated are [ 8, 6, 5, 3] objectSize[3] = 5 3 3 5 23 57 2 410 86
73
SNU IDB Lab. Data Structures 73 First-Fit and Winner Trees (18) Bin[tree[1]].unusedCapacity >= objectSize[3] 10 > 5 3 3 5 23 57 2 410 86
74
SNU IDB Lab. Data Structures 74 First-Fit and Winner Trees (19) Bin[tree[2]].unusedCapacity >= objectSize[3] 10 > 5 3 3 5 23 57 2 410 86
75
SNU IDB Lab. Data Structures 75 First-Fit and Winner Trees (20) Bin[tree[4]].unusedCapacity < objectSize[3] 4 < 5 3 3 5 23 57 2 410 86
76
SNU IDB Lab. Data Structures 76 First-Fit and Winner Trees (21) Go to sibling: Bin[tree[5]].unusedCapacity >= objectSize[3] 10 > 5 3 3 5 23 57 2 410 86
77
SNU IDB Lab. Data Structures 77 First-Fit and Winner Trees (22) Object with size “5” is now in Bin[3] 3 3 5 23 57 2 4 510 86 5
78
SNU IDB Lab. Data Structures 78 First-Fit and Winner Trees (23) 3 3 5 24 57 2 4 510 Update the winner tree 86 5
79
SNU IDB Lab. Data Structures 79 First-Fit and Winner Trees (24) 3 4 5 24 57 2 4 510 Update the winner tree 86 5
80
SNU IDB Lab. Data Structures 80 First-Fit and Winner Trees (25) 4 4 5 24 57 2 4 510 Update the winner tree 86 5
81
SNU IDB Lab. Data Structures 81 First-Fit and Winner Trees (26) Suppose objects to be allocated are [ 8, 6, 5, 3] objectSize[4] = 3 4 4 5 24 57 2 4 510 86 5
82
SNU IDB Lab. Data Structures 82 First-Fit and Winner Trees (27) Bin[tree[1]].unusedCapacity >= objectSize[4] 10 > 3 4 4 5 24 57 2 4 510 Tree[1] Tree[2] 86 5
83
SNU IDB Lab. Data Structures 83 First-Fit and Winner Trees (28) Bin[tree[2]].unusedCapacity >= objectSize[4] 10 > 3 4 4 5 24 57 2 4 510 Tree[1] Tree[2] 86 5
84
SNU IDB Lab. Data Structures 84 First-Fit and Winner Trees (29) Bin[tree[4]].unusedCapacity >= objectSize[4] 4 > 3 4 4 5 24 57 2 4 510 Tree[1] Tree[2] Tree[4] 86 5
85
SNU IDB Lab. Data Structures 85 First-Fit and Winner Trees (30) Object with size “3” is now in bin[2] 4 4 5 24 57 2 1 510 86, 3 5
86
SNU IDB Lab. Data Structures 86 First-Fit and Winner Trees (31) 4 4 5 14 57 2 1 510 Update the winner tree 86, 3 5
87
SNU IDB Lab. Data Structures 87 First Fit and Winner Trees (32) 4 4 5 14 57 2 1 510 Update the winner tree 86, 3 5
88
SNU IDB Lab. Data Structures 88 First-Fit and Winner Trees (33) 4 4 5 14 57 2 1 510 Update the winner tree 86, 3 5
89
SNU IDB Lab. Data Structures 89 The method firstFitPack() (1) public static void firstFitPack(int [] objectSize, int binCapacity) { int n = objectSize.length - 1; // number of objects Bin [] bin = new Bin [n + 1]; // bins ExtendedCWTree winTree = new ExtendedCWTree(); for (int i = 1; i <= n; i++) // initialize n bins and winner tree bin[i] = new Bin(binCapacity); // initial unused capacity winTree.initialize(bin); // put objects in bins for (int i = 1; i <= n; i++) { // put object i into a bin // find first bin with enough capacity int child = 2; // start search at left child of root while (child < n) { int winner = winTree.getWinner(child); if (bin[winner].unusedCapacity < objectSize[i]) child++ ; // first bin is in right subtree child *= 2; // move to left child }
90
SNU IDB Lab. Data Structures 90 The method firstFitPack() (2) int binToUse; // will be set to bin to use child /= 2; // undo last left-child move if (child < n) { // at a tree node binToUse = winTree.getWinner(child); // if binToUse is right child, need to check bin binToUse-1. // No harm done by checking bin binToUse-1 even if binToUse is left child. if (binToUse > 1 && bin[binToUse - 1].unusedCapacity >= objectSize[i]) binToUse--; } else binToUse = winTree.getWinner(child / 2); // arises when n is odd System.out.println("Pack object " + i + " in bin " + binToUse); bin[binToUse].unusedCapacity -= objectSize[i]; winTree.rePlay(binToUse); } ** O(nlogn) time using a winner tree
91
SNU IDB Lab. Data Structures 91 Table of Contents Winner Trees Loser Trees Tournament Tree Applications Bin Packing Using First Fit (BPFF) Bin Packing Using Next Fit (BPNF)
92
SNU IDB Lab. Data Structures 92 Next-Fit For the new object, we determine the next nonempty bin that can accommodate the object by polling the bins in a round robin fashion We want a feasible packing with a fewest number of bins 3 bins of size 7 and six objects [3,5,3,4,2,1] 3 goes to bin[1] 5 goes to bin[2] // the candidate is bin[2] & check the left side; bin[2] is OK. 3 goes to bin[1] // the candidate is bin[3] & check the left side; bin[1] is better 4 goes to bin[3] // the candidate is bin[3] & check the left side; bin[3] is OK 2 goes to bin[2] // first check bin[1], but not qualified; bin[2] is qualified 1 goes to bin[3] // frist check bin[3], but not qualified; bin[3] is qualified Idea (O(n) for one assignment) Search for the next bin of the last used bin which can accommodate the new object If the candidate bin is not empty, use it Otherwise search for the left-most bin which can accommodate the new object
93
SNU IDB Lab. Data Structures 93 Next-Fit with Winner Tree Step 1 (Figure 14.8 in textbook) Search the suitable bin with help of winner tree If the found bin is empty, go to step 2 O(log(n)) Step 2 (actually First-Fit) Search the left-most suitable bin with help of winner tree O(log(n))
94
SNU IDB Lab. Data Structures 94
95
SNU IDB Lab. Data Structures 95 Next-Fit with Winner Tree (1) Suppose the size of a new object to be allocated is 7 &LastUsedBin is bin[1] Start from bin[2] & bin[3]; go to parent of bin[2] (which is tree[4]) go to tree[2] & try tree[3]; The unusedCapacity of tree[3] is 10, try to find the first bin of tree[3] which can accommodate “7” 7 1 7 14 57 74568310 Tree[1] Tree[2] Tree[3] Tree[4]Tree[5]Tree[6]Tree[7]
96
SNU IDB Lab. Data Structures 96 Next-Fit and Winner Tree (2) Suppose the size of a new object to be allocated is 9 &LastUsedBin is bin[3] Start from bin[4] & bin[5]; go to the parent of bin[4] (which is tree[5]) Go to tree[2] and try tree[3] The unusedCapacity of tree[3] is 10, try to find the first bin of tree[3] which can accommodate “9” bin[7] is the candidate, but empty We check the left-most bin which can accommodate “9” No such bin bin[7] is the bin to use 7 1 7 14 5 7 745683 10 Tree[1] Tree[2]Tree[3] Tree[4] Tree[5] Tree[6] Tree[7]
97
SNU IDB Lab. Data Structures 97 Summary A tournament tree is a complete binary tree that is most efficiently stored by using the array-based binary tree Study two varieties of tournament trees Winner tree Loser tree Tournament Tree Application Bin Packing Using First Fit (BPFF) Bin Packing Using Next Fit (BPNF)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.