Upload
wilma-cortez
View
35
Download
6
Tags:
Embed Size (px)
DESCRIPTION
Priority Queues. Two kinds of priority queues: Min priority queue. Max priority queue. 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 - PowerPoint PPT Presentation
Citation preview
Priority Queues
Two kinds of priority queues:
• Min priority queue.
• Max priority queue.
Nov 4, 2009 1
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, 2009 2
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, 2009 3
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, 2009 4
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, 2009 5
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, 2009 6
After Putting Into Max Priority Queue
Sorted Array
68
2
41 Max Priority
Queue
Nov 4, 2009 7
After First Remove Max Operation
Sorted Array
6
2
41
8
Max Priority Queue
Nov 4, 2009 8
After Second Remove Max Operation
Sorted Array
2
41
86
Max Priority Queue
Nov 4, 2009 9
After Third Remove Max Operation
Sorted Array
21
864
Max Priority Queue
Nov 4, 2009 10
After Fourth Remove Max Operation
Sorted Array
1
8642
Max Priority Queue
Nov 4, 2009 11
After Fifth Remove Max Operation
Sorted Array
86421
Max Priority Queue
Nov 4, 2009 12
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(n2) for sort methods
Nov 4, 2009 13
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, 2009 14
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, 2009 15
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
13
21
Nov 4, 2009 16
Machine Scheduling Example
Finish time = 21
Objective: Find schedules with minimum finish time.
A
B
Ctime ----------->
6
2
3
7
13
13
21
Nov 4, 2009 17
LPT Schedules
Longest Processing Time first.
Jobs are scheduled in the order14, 10, 7, 6, 5, 3, 2
Each job is scheduled on the machine on which it finishes earliest.
Nov 4, 2009 18
LPT Schedule
[14, 10, 7, 6, 5, 3, 2]
A
B
C
14
10
7 13
15
16
16
Finish time is 16!Nov 4, 2009 19
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, 2009 20
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(nk) 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, 2009 21
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, 2009 22
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, 2009 23
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, 2009 24
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, 2009 25
Huffman Codes
Useful in lossless compression.
Nov 4, 2009 26
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, 2009 27
Min Tree Example
2
4 9 3
4 8 7
9 9
Root has minimum element.Nov 4, 2009 28
Max Tree Example
9
4 9 8
4 2 7
3 1
Root has maximum element.Nov 4, 2009 29
Min Heap Definition
• complete binary tree
• min tree
Nov 4, 2009 30
Min Heap With 9 Nodes
Complete binary tree with 9 nodes.
Nov 4, 2009 31
Min Heap With 9 Nodes
Complete binary tree with 9 nodes that is also a min tree.
2
4
6 7 9 3
8 6
3
Nov 4, 2009 32
Max Heap With 9 Nodes
Complete binary tree with 9 nodes that is also a max tree.
9
8
6 7 2 6
5 1
7
Nov 4, 2009 33
Heap Height
Since a heap is a complete binary tree, the height of an n node heap is log2 (n+1).
Nov 4, 2009 34
9 8 7 6 7 2 6 5 1
1 2 3 4 5 6 7 8 9 100
A Heap Is Efficiently Represented As An Array
9
8
6 7 2 6
5 1
7
Nov 4, 2009 35
Moving Up And Down A Heap9
8
6 7 2 6
5 1
7
1
2 3
4 5 6 7
8 9
Nov 4, 2009 36
Putting An Element Into A Max Heap
Complete binary tree with 10 nodes.
9
8
6 7 2 6
5 1
7
7
Nov 4, 2009 37
Putting An Element Into A Max Heap
New element is 5.
9
8
6 7 2 6
5 1
7
75
Nov 4, 2009 38
Putting An Element Into A Max Heap
New element is 20.
9
8
6
7
2 6
5 1
7
7
7
Nov 4, 2009 39
Putting An Element Into A Max Heap
New element is 20.
9
8
6
7
2 6
5 1
7
77
Nov 4, 2009 40
Putting An Element Into A Max Heap
New element is 20.
9
86
7
2 6
5 1
7
77
Nov 4, 2009 41
Putting An Element Into A Max Heap
New element is 20.
9
86
7
2 6
5 1
7
77
20
Nov 4, 2009 42
Putting An Element Into A Max Heap
Complete binary tree with 11 nodes.
9
86
7
2 6
5 1
7
77
20
Nov 4, 2009 43
Putting An Element Into A Max Heap
New element is 15.
9
86
7
2 6
5 1
7
77
20
Nov 4, 2009 44
Putting An Element Into A Max Heap
New element is 15.
9
8
6
7
2 6
5 1
7
77
20
8
Nov 4, 2009 45
Putting An Element Into A Max Heap
New element is 15.
8
6
7
2 6
5 1
7
77
20
8
9
15
Nov 4, 2009 46
Complexity Of Put
Complexity is O(log n), where n is heap size.
8
6
7
2 6
5 1
7
77
20
8
9
15
Nov 4, 2009 47
Removing The Max Element
Max element is in the root.
8
6
7
2 6
5 1
7
77
20
8
9
15
Nov 4, 2009 48
Removing The Max Element
After max element is removed.
8
6
7
2 6
5 1
7
77 8
9
15
Nov 4, 2009 49
Removing The Max Element
Heap with 10 nodes.
8
6
7
2 6
5 1
7
77 8
9
15
Reinsert 8 into the heap.Nov 4, 2009 50
Removing The Max Element
Reinsert 8 into the heap.
6
7
2 6
5 1
7
77
9
15
Nov 4, 2009 51
Removing The Max Element
Reinsert 8 into the heap.
6
7
2 6
5 1
7
77
9
15
Nov 4, 2009 52
Removing The Max Element
Reinsert 8 into the heap.
6
7
2 6
5 1
7
77
9
15
8
Nov 4, 2009 53
Removing The Max Element
Max element is 15.
6
7
2 6
5 1
7
77
9
15
8
Nov 4, 2009 54
Removing The Max Element
After max element is removed.
6
7
2 6
5 1
7
77
9
8
Nov 4, 2009 55
Removing The Max Element
Heap with 9 nodes.
6
7
2 6
5 1
7
77
9
8
Nov 4, 2009 56
Removing The Max Element
Reinsert 7.
6 2 6
5 1
79
8
Nov 4, 2009 57
Removing The Max Element
Reinsert 7.
6 2 6
5 1
7
9
8
Nov 4, 2009 58
Removing The Max Element
Reinsert 7.
6 2 6
5 1
7
9
8
7
Nov 4, 2009 59
Complexity Of Remove Max Element
Complexity is O(log n).
6 2 6
5 1
7
9
8
7
Nov 4, 2009 60
Initializing A Max Heap
input array = [-, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
8
4
7
6 7
8 9
3
710
1
11
5
2
Nov 4, 2009 61
Initializing A Max Heap
Start at rightmost array position that has a child.
8
4
7
6 7
8 9
3
710
1
11
5
2
Index is n/2.Nov 4, 2009 62
Initializing A Max Heap
Move to next lower array position.
8
4
7
6 7
8 9
3
710
1
5
11
2
Nov 4, 2009 63
Initializing A Max Heap
8
4
7
6 7
8 9
3
710
1
5
11
2
Nov 4, 2009 64
Initializing A Max Heap
8
9
7
6 7
8 4
3
710
1
5
11
2
Nov 4, 2009 65
Initializing A Max Heap
8
9
7
6 7
8 4
3
710
1
5
11
2
Nov 4, 2009 66
Initializing A Max Heap
8
9
7
6 3
8 4
7
710
1
5
11
2
Nov 4, 2009 67
Initializing A Max Heap
8
9
7
6 3
8 4
7
710
1
5
11
2
Nov 4, 2009 68
Initializing A Max Heap
8
9
7
6 3
8 4
7
710
1
5
11
Find a home for 2.Nov 4, 2009 69
Initializing A Max Heap
8
9
7
6 3
8 4
7
75
1
11
Find a home for 2.
10
Nov 4, 2009 70
Initializing A Max Heap
8
9
7
6 3
8 4
7
72
1
11
Done, move to next lower array position.
10
5
Nov 4, 2009 71
Initializing A Max Heap
8
9
7
6 3
8 4
7
72
1
11
10
5
Find home for 1.Nov 4, 2009 72
11
Initializing A Max Heap
8
9
7
6 3
8 4
7
72
10
5
Find home for 1.Nov 4, 2009 73
Initializing A Max Heap
8
9
7
6 3
8 4
7
72
11
10
5
Find home for 1.Nov 4, 2009 74
Initializing A Max Heap
8
9
7
6 3
8 4
7
72
11
10
5
Find home for 1.Nov 4, 2009 75
Initializing A Max Heap
8
9
7
6 3
8 4
7
72
11
10
5
Done.
1
Nov 4, 2009 76
Time Complexity
87
6 3
4
7
710
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, 2009 77
Complexity
Time for level j subtrees is <= 2j-1(h-j+1) = t(j).
Total time is t(1) + t(2) + … + t(h-1) = O(n).
Nov 4, 2009 78
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, 2009 79
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, 2009 80
A Binary Tree
Nov 4, 2009 81
An Extended Binary Tree
number of external nodes is n+1Nov 4, 2009 82
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, 2009 83
s() Values Example
Nov 4, 2009 84
s() Values Example
0 0 0 0
0 0
0 0
0
0
1 1 1
2 1 1
2 1
2
Nov 4, 2009 85
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, 2009 86
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, 2009 87
A Leftist Tree
0 0 0 0
0 0
0 0
0
0
1 1 1
2 1 1
2 1
2
Nov 4, 2009 88
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, 2009 89
A Leftist Tree
0 0 0 0
0 0
0 0
0
0
1 1 1
2 1 1
2 1
2
Length of rightmost path is 2.Nov 4, 2009 90
Leftist Trees—Property 2
The number of internal nodes is at least2s(root) - 1
Because levels 1 through s(root) have no external nodes.
So, s(root) <= log(n+1)
Nov 4, 2009 91
A Leftist Tree
0 0 0 0
0 0
0 0
0
0
1 1 1
2 1 1
2 1
2
Levels 1 and 2 have no external nodes.Nov 4, 2009 92
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, 2009 93
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, 2009 94
A Min Leftist Tree
8 6 9
6 8 5
4 3
2
Nov 4, 2009 95
Some Min Leftist Tree Operations
put()
remove()
meld()
initialize()
put() and remove() use meld().
Nov 4, 2009 96
Put Operation
put(7)
8 6 9
6 8 5
4 3
2
Nov 4, 2009 97
Put Operation
put(7)
8 6 9
6 8 5
4 3
2
Create a single node min leftist tree. 7
Nov 4, 2009 98
Put Operation
put(7)
8 6 9
6 8 5
4 3
2
Create a single node min leftist tree.
Meld the two min leftist trees.
7
Nov 4, 2009 99
Remove Min
8 6 9
6 8 5
4 3
2
Nov 4, 2009 100
Remove Min
8 6 9
6 8 5
4 3
2
Remove the root.
Nov 4, 2009 101
Remove Min
8 6 9
6 8 5
4 3
2
Remove the root.
Meld the two subtrees.Nov 4, 2009 102
Meld Two Min Leftist Trees
8 6 9
6 8 5
4 3
6
Traverse only the rightmost paths so as to get logarithmic performance.
Nov 4, 2009 103
Meld Two Min Leftist Trees
8 6 9
6 8 5
4 3
6
Meld right subtree of tree with smaller root and all of other tree.
Nov 4, 2009 104
Meld Two Min Leftist Trees
8 6 9
6 8 5
4 3
6
Meld right subtree of tree with smaller root and all of other tree.
Nov 4, 2009 105
Meld Two Min Leftist Trees
8 6
6 8
4 6
Meld right subtree of tree with smaller root and all of other tree.
Nov 4, 2009 106
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, 2009 107
Meld Two Min Leftist Trees
Swap left and right subtree if s(left) < s(right).
Make melded subtree right subtree of smaller root.
8 6
6
8
6
8Nov 4, 2009 108
Meld Two Min Leftist Trees
8 6
6 6
4
88 6
6
46
8
Make melded subtree right subtree of smaller root.
Swap left and right subtree if s(left) < s(right).Nov 4, 2009 109
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.
8 6
6 6
4
8
Nov 4, 2009 110
Meld Two Min Leftist Trees
9
5
3
8 6
6 6
4
8
Nov 4, 2009 111
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, 2009 112