Presentation is loading. Please wait.

Presentation is loading. Please wait.

Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue. Nov 4, 20091.

Similar presentations


Presentation on theme: "Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue. Nov 4, 20091."— Presentation transcript:

1

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


Download ppt "Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue. Nov 4, 20091."

Similar presentations


Ads by Google