Download presentation
Presentation is loading. Please wait.
Published byRonald David Chandler Modified over 9 years ago
2
Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue. Nov 4, 20091
3
Min Priority Queue Collection of elements. Each element has a priority or key. Supports following operations: isEmpty size add/put an element into the priority queue get element with min priority remove element with min priority Nov 4, 20092
4
Max Priority Queue Collection of elements. Each element has a priority or key. Supports following operations: isEmpty size add/put an element into the priority queue get element with max priority remove element with max priority Nov 4, 20093
5
Complexity Of Operations Two good implementations are heaps and leftist trees. isEmpty, size, and get => O(1) time put and remove => O(log n) time where n is the size of the priority queue Nov 4, 20094
6
Applications Sorting use element key as priority put elements to be sorted into a priority queue extract elements in priority order if a min priority queue is used, elements are extracted in ascending order of priority (or key) if a max priority queue is used, elements are extracted in descending order of priority (or key) Nov 4, 20095
7
Sorting Example Sort five elements whose keys are 6, 8, 2, 4, 1 using a max priority queue. Put the five elements into a max priority queue. Do five remove max operations placing removed elements into the sorted array from right to left. Nov 4, 20096
8
After Putting Into Max Priority Queue Sorted Array 68 2 4 1 Max Priority Queue Nov 4, 20097
9
After First Remove Max Operation Sorted Array 6 2 4 1 8 Max Priority Queue Nov 4, 20098
10
After Second Remove Max Operation Sorted Array 2 4 1 86 Max Priority Queue Nov 4, 20099
11
After Third Remove Max Operation Sorted Array 2 1 864 Max Priority Queue Nov 4, 200910
12
After Fourth Remove Max Operation Sorted Array 1 8642 Max Priority Queue Nov 4, 200911
13
After Fifth Remove Max Operation Sorted Array 86421 Max Priority Queue Nov 4, 200912
14
Complexity Of Sorting Sort n elements. n put operations => O(n log n) time. n remove max operations => O(n log n) time. total time is O(n log n). compare with O(n 2 ) for sort methods Nov 4, 200913
15
Heap Sort Uses a max priority queue that is implemented as a heap. Initial put operations are replaced by a heap initialization step that takes O(n) time. Nov 4, 200914
16
Machine Scheduling m identical machines (drill press, cutter, sander, etc.) n jobs/tasks to be performed assign jobs to machines so that the time at which the last job completes is minimum Nov 4, 200915
17
Machine Scheduling Example 3 machines and 7 jobs job times are [6, 2, 3, 5, 10, 7, 14] possible schedule A B C time -----------> 6 2 3 7 13 21 Nov 4, 200916
18
Machine Scheduling Example Finish time = 21 Objective: Find schedules with minimum finish time. A B C time -----------> 6 2 3 7 13 21 Nov 4, 200917
19
LPT Schedules Longest Processing Time first. Jobs are scheduled in the order 14, 10, 7, 6, 5, 3, 2 Each job is scheduled on the machine on which it finishes earliest. Nov 4, 200918
20
LPT Schedule [14, 10, 7, 6, 5, 3, 2] A B C 14 10 713 15 16 Finish time is 16! Nov 4, 200919
21
LPT Schedule LPT rule does not guarantee minimum finish time schedules. Usually LPT finish time is much closer to minimum finish time. Minimum finish time scheduling is NP-hard. Nov 4, 200920
22
NP-hard Problems Infamous class of problems for which no one has developed a polynomial time algorithm. That is, no algorithm whose complexity is O(n k ) for any constant k is known for any NP- hard problem. The class includes thousands of real-world problems. Highly unlikely that any NP-hard problem can be solved by a polynomial time algorithm. Nov 4, 200921
23
NP-hard Problems Since even polynomial time algorithms with degree k > 3 (say) are not practical for large n, we must change our expectations of the algorithm that is used. Usually develop fast heuristics for NP-hard problems. Algorithm that gives a solution close to best. Runs in acceptable amount of time. LPT rule is good heuristic for minimum finish time scheduling. Nov 4, 200922
24
Complexity Of LPT Scheduling Sort jobs into decreasing order of task time. O(n log n) time (n is number of jobs) Schedule jobs in this order. assign job to machine that becomes available first must find minimum of m (m is number of machines) finish times takes O(m) time using simple strategy so need O(mn) time to schedule all n jobs. Nov 4, 200923
25
Using A Min Priority Queue Min priority queue has the finish times of the m machines. Initial finish times are all 0. To schedule a job remove machine with minimum finish time from the priority queue. Update the finish time of the selected machine and put the machine back into the priority queue. Nov 4, 200924
26
Using A Min Priority Queue m put operations to initialize priority queue 1 remove min and 1 put to schedule each job each put and remove min operation takes O(log m) time time to schedule is O(n log m) overall time is O(n log n + n log m) = O(n log (mn)) Nov 4, 200925
27
Huffman Codes Useful in lossless compression. Nov 4, 200926
28
Min Tree Definition Each tree node has a value. Value in any node is the minimum value in the subtree for which that node is the root. Equivalently, no descendent has a smaller value. Nov 4, 200927
29
Min Tree Example 2 493 4 87 99 Root has minimum element. Nov 4, 200928
30
Max Tree Example 9 498 4 27 31 Root has maximum element. Nov 4, 200929
31
Min Heap Definition complete binary tree min tree Nov 4, 200930
32
Min Heap With 9 Nodes Complete binary tree with 9 nodes. Nov 4, 200931
33
Min Heap With 9 Nodes Complete binary tree with 9 nodes that is also a min tree. 2 4 6793 86 3 Nov 4, 200932
34
Max Heap With 9 Nodes Complete binary tree with 9 nodes that is also a max tree. 9 8 6726 51 7 Nov 4, 200933
35
Heap Height Since a heap is a complete binary tree, the height of an n node heap is log 2 (n+1). Nov 4, 200934
36
987672651 123456789100 A Heap Is Efficiently Represented As An Array 9 8 6726 51 7 Nov 4, 200935
37
Moving Up And Down A Heap 9 8 6726 51 7 1 23 4 56 7 89 Nov 4, 200936
38
Putting An Element Into A Max Heap Complete binary tree with 10 nodes. 9 8 6726 51 7 7 Nov 4, 200937
39
Putting An Element Into A Max Heap New element is 5. 9 8 6726 51 7 75 Nov 4, 200938
40
Putting An Element Into A Max Heap New element is 20. 9 8 6 7 26 51 7 7 7 Nov 4, 200939
41
Putting An Element Into A Max Heap New element is 20. 9 8 6 7 26 51 7 7 7 Nov 4, 200940
42
Putting An Element Into A Max Heap New element is 20. 9 86 7 26 51 7 7 7 Nov 4, 200941
43
Putting An Element Into A Max Heap New element is 20. 9 86 7 26 51 7 7 7 20 Nov 4, 200942
44
Putting An Element Into A Max Heap Complete binary tree with 11 nodes. 9 86 7 26 51 7 7 7 20 Nov 4, 200943
45
Putting An Element Into A Max Heap New element is 15. 9 86 7 26 51 7 7 7 20 Nov 4, 200944
46
Putting An Element Into A Max Heap New element is 15. 9 8 6 7 26 51 7 7 7 20 8 Nov 4, 200945
47
Putting An Element Into A Max Heap New element is 15. 8 6 7 26 51 7 7 7 20 8 9 15 Nov 4, 200946
48
Complexity Of Put Complexity is O(log n), where n is heap size. 8 6 7 26 51 7 7 7 20 8 9 15 Nov 4, 200947
49
Removing The Max Element Max element is in the root. 8 6 7 26 51 7 7 7 20 8 9 15 Nov 4, 200948
50
Removing The Max Element After max element is removed. 8 6 7 26 51 7 7 7 8 9 15 Nov 4, 200949
51
Removing The Max Element Heap with 10 nodes. 8 6 7 26 51 7 7 7 8 9 15 Reinsert 8 into the heap. Nov 4, 200950
52
Removing The Max Element Reinsert 8 into the heap. 6 7 26 51 7 7 7 9 15 Nov 4, 200951
53
Removing The Max Element Reinsert 8 into the heap. 6 7 26 51 7 7 7 9 15 Nov 4, 200952
54
Removing The Max Element Reinsert 8 into the heap. 6 7 26 51 7 7 7 9 15 8 Nov 4, 200953
55
Removing The Max Element Max element is 15. 6 7 26 51 7 7 7 9 15 8 Nov 4, 200954
56
Removing The Max Element After max element is removed. 6 7 26 51 7 7 7 9 8 Nov 4, 200955
57
Removing The Max Element Heap with 9 nodes. 6 7 26 51 7 7 7 9 8 Nov 4, 200956
58
Removing The Max Element Reinsert 7. 626 51 79 8 Nov 4, 200957
59
Removing The Max Element Reinsert 7. 626 51 7 9 8 Nov 4, 200958
60
Removing The Max Element Reinsert 7. 626 51 7 9 8 7 Nov 4, 200959
61
Complexity Of Remove Max Element Complexity is O(log n). 626 51 7 9 8 7 Nov 4, 200960
62
Initializing A Max Heap input array = [-, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 8 4 7 67 89 3 7 10 1 11 5 2 Nov 4, 200961
63
Initializing A Max Heap Start at rightmost array position that has a child. 8 4 7 67 89 3 7 10 1 11 5 2 Index is n/2. Nov 4, 200962
64
Initializing A Max Heap Move to next lower array position. 8 4 7 67 89 3 7 10 1 5 11 2 Nov 4, 200963
65
Initializing A Max Heap 8 4 7 67 89 3 7 10 1 5 11 2 Nov 4, 200964
66
Initializing A Max Heap 8 9 7 67 84 3 7 10 1 5 11 2 Nov 4, 200965
67
Initializing A Max Heap 8 9 7 67 84 3 7 10 1 5 11 2 Nov 4, 200966
68
Initializing A Max Heap 8 9 7 63 84 7 7 10 1 5 11 2 Nov 4, 200967
69
Initializing A Max Heap 8 9 7 63 84 7 7 10 1 5 11 2 Nov 4, 200968
70
Initializing A Max Heap 8 9 7 63 84 7 7 10 1 5 11 Find a home for 2. Nov 4, 200969
71
Initializing A Max Heap 8 9 7 63 84 7 7 5 1 11 Find a home for 2. 10 Nov 4, 200970
72
Initializing A Max Heap 8 9 7 63 84 7 7 2 1 11 Done, move to next lower array position. 10 5 Nov 4, 200971
73
Initializing A Max Heap 8 9 7 63 84 7 7 2 1 11 10 5 Find home for 1. Nov 4, 200972
74
11 Initializing A Max Heap 8 9 7 63 84 7 7 2 10 5 Find home for 1. Nov 4, 200973
75
Initializing A Max Heap 8 9 7 63 84 7 7 2 11 10 5 Find home for 1. Nov 4, 200974
76
Initializing A Max Heap 8 9 7 63 84 7 7 2 11 10 5 Find home for 1. Nov 4, 200975
77
Initializing A Max Heap 8 9 7 63 84 7 7 2 11 10 5 Done. 1 Nov 4, 200976
78
Time Complexity 87 63 4 7 7 10 11 5 2 9 8 1 Height of heap = h. Number of subtrees with root at level j is <= 2 j-1. Time for each subtree is O(h-j+1). Nov 4, 200977
79
Complexity Time for level j subtrees is <= 2 j-1 (h-j+1) = t(j). Total time is t(1) + t(2) + … + t(h-1) = O(n). Nov 4, 200978
80
Leftist Trees Linked binary tree. Can do everything a heap can do and in the same asymptotic complexity. Can meld two leftist tree priority queues in O(log n) time. Nov 4, 200979
81
Extended Binary Trees Start with any binary tree and add an external node wherever there is an empty subtree. Result is an extended binary tree. Nov 4, 200980
82
A Binary Tree Nov 4, 200981
83
An Extended Binary Tree number of external nodes is n+1 Nov 4, 200982
84
The Function s() For any node x in an extended binary tree, let s(x) be the length of a shortest path from x to an external node in the subtree rooted at x. Nov 4, 200983
85
s() Values Example Nov 4, 200984
86
s() Values Example 0000 00 00 0 0 11 1 211 21 2 Nov 4, 200985
87
Properties Of s() If x is an external node, then s(x) = 0. Otherwise, s(x) = min {s(leftChild(x)), s(rightChild(x))} + 1 Nov 4, 200986
88
Height Biased Leftist Trees A binary tree is a (height biased) leftist tree iff for every internal node x, s(leftChild(x)) >= s(rightChild(x)) Nov 4, 200987
89
A Leftist Tree 0000 00 00 0 0 11 1 211 21 2 Nov 4, 200988
90
Leftist Trees--Property 1 In a leftist tree, the rightmost path is a shortest root to external node path and the length of this path is s(root). Nov 4, 200989
91
A Leftist Tree 0000 00 00 0 0 11 1 211 21 2 Length of rightmost path is 2. Nov 4, 200990
92
Leftist Trees—Property 2 The number of internal nodes is at least 2 s(root) - 1 Because levels 1 through s(root) have no external nodes. So, s(root) <= log(n+1) Nov 4, 200991
93
A Leftist Tree 0000 00 00 0 0 11 1 211 21 2 Levels 1 and 2 have no external nodes. Nov 4, 200992
94
Leftist Trees—Property 3 Length of rightmost path is O(log n), where n is the number of nodes in a leftist tree. Follows from Properties 1 and 2. Nov 4, 200993
95
Leftist Trees As Priority Queues Min leftist tree … leftist tree that is a min tree. Used as a min priority queue. Max leftist tree … leftist tree that is a max tree. Used as a max priority queue. Nov 4, 200994
96
A Min Leftist Tree 86 9 685 43 2 Nov 4, 200995
97
Some Min Leftist Tree Operations put() remove() meld() initialize() put() and remove() use meld(). Nov 4, 200996
98
Put Operation put(7) 86 9 685 43 2 Nov 4, 200997
99
Put Operation put(7) 86 9 685 43 2 Create a single node min leftist tree. 7 Nov 4, 200998
100
Put Operation put(7) 86 9 685 43 2 Create a single node min leftist tree. Meld the two min leftist trees. 7 Nov 4, 200999
101
Remove Min 86 9 685 43 2 Nov 4, 2009100
102
Remove Min 86 9 685 43 2 Remove the root. Nov 4, 2009101
103
Remove Min 86 9 685 43 2 Remove the root. Meld the two subtrees. Nov 4, 2009102
104
Meld Two Min Leftist Trees 86 9 685 43 6 Traverse only the rightmost paths so as to get logarithmic performance. Nov 4, 2009103
105
Meld Two Min Leftist Trees 86 9 685 43 6 Meld right subtree of tree with smaller root and all of other tree. Nov 4, 2009104
106
Meld Two Min Leftist Trees 86 9 685 43 6 Meld right subtree of tree with smaller root and all of other tree. Nov 4, 2009105
107
Meld Two Min Leftist Trees 86 68 4 6 Meld right subtree of tree with smaller root and all of other tree. Nov 4, 2009106
108
Meld Two Min Leftist Trees 8 6 Meld right subtree of tree with smaller root and all of other tree. Right subtree of 6 is empty. So, result of melding right subtree of tree with smaller root and other tree is the other tree. Nov 4, 2009107
109
Meld Two Min Leftist Trees Swap left and right subtree if s(left) < s(right). Make melded subtree right subtree of smaller root. 8 66 8 6 8 Nov 4, 2009108
110
Meld Two Min Leftist Trees 86 66 4 886 6 4 6 8 Make melded subtree right subtree of smaller root. Swap left and right subtree if s(left) < s(right). Nov 4, 2009109
111
Meld Two Min Leftist Trees 9 5 3 Swap left and right subtree if s(left) < s(right). Make melded subtree right subtree of smaller root. 86 66 4 8 Nov 4, 2009110
112
Meld Two Min Leftist Trees 9 5 3 86 66 4 8 Nov 4, 2009111
113
Initializing In O(n) Time create n single node min leftist trees and place them in a FIFO queue repeatedly remove two min leftist trees from the FIFO queue, meld them, and put the resulting min leftist tree into the FIFO queue the process terminates when only 1 min leftist tree remains in the FIFO queue analysis is the same as for heap initialization Nov 4, 2009112
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.