priority queues two kinds of priority queues: min priority queue. max priority queue

60
Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue.

Upload: gunner-garnsey

Post on 31-Mar-2015

279 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Priority Queues

Two kinds of priority queues:

• Min priority queue.

• Max priority queue.

Page 2: 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: empty size insert an element into the priority queue (push) get element with min priority (top) remove element with min priority (pop)

Page 3: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Max Priority Queue

• Collection of elements.

• Each element has a priority or key.

• Supports following operations: empty size insert an element into the priority queue (push) get element with max priority (top) remove element with max priority (pop)

Page 4: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Complexity Of Operations

Use a heap or a leftist tree (both are defined later).

empty, size, and top => O(1) time

insert (push) and remove (pop) => O(log n) time where n is the size of the priority queue

Page 5: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Applications

Sorting

• use element key as priority

• insert elements to be sorted into a priority queue

• remove/pop 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)

Page 6: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Sorting Example

Sort five elements whose keys are 6, 8, 2, 4, 1 using a max priority queue. Insert the five elements into a max priority queue. Do five remove max operations placing removed

elements into the sorted array from right to left.

Page 7: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

After Inserting Into Max Priority Queue

Sorted Array

68

2

41 Max Priority

Queue

Page 8: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

After First Remove Max Operation

Sorted Array

6

2

41

8

Max Priority Queue

Page 9: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

After Second Remove Max Operation

Sorted Array

2

41

86

Max Priority Queue

Page 10: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

After Third Remove Max Operation

Sorted Array

21

864

Max Priority Queue

Page 11: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

After Fourth Remove Max Operation

Sorted Array

1

8642

Max Priority Queue

Page 12: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

After Fifth Remove Max Operation

Sorted Array

86421

Max Priority Queue

Page 13: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Complexity Of Sorting

Sort n elements. n insert 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 insertion sort of

Lecture 1.

Page 14: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Heap Sort

Uses a max priority queue that is implemented as a heap.

Initial insert operations are replaced by a heap initialization step that takes O(n) time.

Page 15: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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

Page 16: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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

Page 17: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Machine Scheduling Example

Finish time = 21

Objective: Find schedules with minimum finish time.

A

B

Ctime ----------->

6

2

3

7

13

13

21

Page 18: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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.

Page 19: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

LPT Schedule

[14, 10, 7, 6, 5, 3, 2]

A

B

C

14

10

7 13

15

16

16

Finish time is 16!

Page 20: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

LPT Schedule

• LPT rule does not guarantee minimum finish time schedules.

• (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.

• Minimum finish time scheduling is NP-hard.

Page 21: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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.

Page 22: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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.

Page 23: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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.

Page 24: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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 insert the machine back into the priority queue.

Page 25: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Using A Min Priority Queue

• m put operations to initialize priority queue

• 1 remove min and 1 insert to schedule each job

• each insert 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))

Page 26: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Huffman Codes

Discussed in Chapter 7 of text.

Page 27: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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.

Page 28: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Min Tree Example

2

4 9 3

4 8 7

9 9

Root has minimum element.

Page 29: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Max Tree Example

9

4 9 8

4 2 7

3 1

Root has maximum element.

Page 30: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Min Heap Definition

• complete binary tree

• min tree

Page 31: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Min Heap With 9 Nodes

Complete binary tree with 9 nodes.

Page 32: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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

Page 33: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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

Page 34: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Heap Height

Since a heap is a complete binary tree, the height of an n node heap is log2 (n+1).

Page 35: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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

Page 36: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Moving Up And Down A Heap9

8

6 7 2 6

5 1

7

1

2 3

4 5 6 7

8 9

Page 37: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

Complete binary tree with 10 nodes.

9

8

6 7 2 6

5 1

7

7

Page 38: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 5.

9

8

6 7 2 6

5 1

7

75

Page 39: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 20.

9

8

6

7

2 6

5 1

7

7

7

Page 40: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 20.

9

8

6

7

2 6

5 1

7

77

Page 41: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 20.

9

86

7

2 6

5 1

7

77

Page 42: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 20.

9

86

7

2 6

5 1

7

77

20

Page 43: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

Complete binary tree with 11 nodes.

9

86

7

2 6

5 1

7

77

20

Page 44: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 15.

9

86

7

2 6

5 1

7

77

20

Page 45: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 15.

9

8

6

7

2 6

5 1

7

77

20

8

Page 46: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Inserting An Element Into A Max Heap

New element is 15.

8

6

7

2 6

5 1

7

77

20

8

9

15

Page 47: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Complexity Of Insert

Complexity is O(log n), where n is heap size.

8

6

7

2 6

5 1

7

77

20

8

9

15

Page 48: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Max element is in the root.

8

6

7

2 6

5 1

7

77

20

8

9

15

Page 49: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

After max element is removed.

8

6

7

2 6

5 1

7

77 8

9

15

Page 50: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

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.

Page 51: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

Page 52: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

Page 53: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

8

Page 54: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Max element is 15.

6

7

2 6

5 1

7

77

9

15

8

Page 55: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

After max element is removed.

6

7

2 6

5 1

7

77

9

8

Page 56: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Heap with 9 nodes.

6

7

2 6

5 1

7

77

9

8

Page 57: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Reinsert 7.

6 2 6

5 1

79

8

Page 58: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Reinsert 7.

6 2 6

5 1

7

9

8

Page 59: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Removing The Max Element

Reinsert 7.

6 2 6

5 1

7

9

8

7

Page 60: Priority Queues Two kinds of priority queues: Min priority queue. Max priority queue

Complexity Of Remove Max Element

Complexity is O(log n).

6 2 6

5 1

7

9

8

7