Upload
paul-hart
View
226
Download
0
Embed Size (px)
Citation preview
Priority Queues
황승원Fall 2010
CSE, POSTECH
2
Priority Queues
Two kinds of priority queues: Min priority queue. Max priority queue.
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
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
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
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)
7
Application I: Sorting
Sort five elements whose keys are 6, 8, 2, 4, 1 using a max priority queue. Do five put operations into a max priority queue. Do five remove max operations placing removed
elements into the sorted array from right to left.
8
After Putting Into Max Priority Queue
Sorted Array
68
2
41 Max Priority
Queue
9
After First Remove Max Operation
Sorted Array
6
2
41
8
Max Priority Queue
10
After Second Remove Max Operation
Sorted Array
2
41
86
Max Priority Queue
11
After Third Remove Max Operation
Sorted Array
21
864
Max Priority Queue
12
After Fourth Remove Max Operation
Sorted Array
1
8642
Max Priority Queue
13
After Fifth Remove Max Operation
Sorted Array
86421
Max Priority Queue
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(n2) for sort methods of Chapter 2.
LATER: how do we implement this queue?
15
Application II: 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
16
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
17
Machine Scheduling Example
Finish time = 21
Objective: Find schedules with minimum finish time.
A
B
Ctime ----------->
6
2
3
7
13
13
21
18
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.
19
LPT Schedule
[14, 10, 7, 6, 5, 3, 2]
A
B
C
14
10
7 13
15
16
16
Finish time is 16!
20
LPT Schedule
LPT rule does not guarantee minimum finish time schedules.
Minimum finish time scheduling is NP-hard. (LPT Finish Time)/(Minimum Finish Time) <= 4/3 - 1/(3m) where
m is number of machines. Usually LPT finish time is much closer to
minimum finish time.
21
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.
22
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.
23
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) finis
h times takes O(m) time using simple strategy so need O(mn) time to schedule all n jobs.
24
Using A Min Priority Queue
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.
25
Using A Min Priority Queue
1 remove min and 1 put to schedule each job each put and remove min (machine) operation t
akes 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))
26
Application III: Huffman Codes
Useful in lossless compression.
May be used in conjunction with LZW method.
See additional slides
2727
Implementation of Priority Queue
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.
29
Min Tree Example
2
4 9 3
4 8 7
9 9
Root has minimum element.
30
Max Tree Example
9
4 9 8
4 2 7
3 1
Root has maximum element.
31
Min Heap Definition
complete binary tree min tree
32
Min Heap With 9 Nodes
Complete binary tree with 9 nodes.
33
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
34
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
35
Heap Height
Since a heap is a complete binary tree, the height of an n node heap is log2 (n+1).
36
A Heap Is Efficiently Represented As An Array
9 8 7 6 7 2 6 5 1
1 2 3 4 5 6 7 8 9 100
9
8
6 7 2 6
5 1
7
37
Moving Up And Down A Heap
9
8
6 7 2 6
5 1
7
1
2 3
4 5 6 7
8 9
38
Putting An Element Into A Max Heap
Complete binary tree with 10 nodes.
9
8
6 7 2 6
5 1
7
7
39
Putting An Element Into A Max Heap
New element is 5.
9
8
6 7 2 6
5 1
7
75
40
Putting An Element Into A Max Heap
New element is 20.
9
8
6
7
2 6
5 1
7
7
7
41
Putting An Element Into A Max Heap
New element is 20.
9
8
6
7
2 6
5 1
7
77
42
Putting An Element Into A Max Heap
New element is 20.
9
86
7
2 6
5 1
7
77
43
Putting An Element Into A Max Heap
New element is 20.
9
86
7
2 6
5 1
7
77
20
44
Putting An Element Into A Max Heap
Complete binary tree with 11 nodes.
9
86
7
2 6
5 1
7
77
20
45
Putting An Element Into A Max Heap
New element is 15.
9
86
7
2 6
5 1
7
77
20
46
Putting An Element Into A Max Heap
New element is 15.
9
8
6
7
2 6
5 1
7
77
20
8
47
Putting An Element Into A Max Heap
New element is 15.
8
6
7
2 6
5 1
7
77
20
8
9
15
48
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
49
Removing The Max Element
Max element is in the root.
8
6
7
2 6
5 1
7
77
20
8
9
15
50
Removing The Max Element
After max element is removed.
8
6
7
2 6
5 1
7
77 8
9
15
51
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.
52
Removing The Max Element
Reinsert 8 into the heap.
6
7
2 6
5 1
7
77
9
15
53
Removing The Max Element
Reinsert 8 into the heap.
6
7
2 6
5 1
7
77
9
15
54
Removing The Max Element
Reinsert 8 into the heap.
6
7
2 6
5 1
7
77
9
15
8
55
Removing The Max Element
Max element is 15.
6
7
2 6
5 1
7
77
9
15
8
56
Removing The Max Element
After max element is removed.
6
7
2 6
5 1
7
77
9
8
57
Removing The Max Element
Heap with 9 nodes.
6
7
2 6
5 1
7
77
9
8
58
Removing The Max Element
Reinsert 7.
6 2 6
5 1
79
8
59
Removing The Max Element
Reinsert 7.
6 2 6
5 1
7
9
8
60
Removing The Max Element
Reinsert 7.
6 2 6
5 1
7
9
8
7
61
Complexity Of Remove Max Element
Complexity is O(log n).
6 2 6
5 1
7
9
8
7
6262
Coming Up Next
READING: Ch 13.1~3, 13.6 NEXT: More on Heaps (13.4, 13.5)