lec23

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

Upload: nikhil-chilwant

Post on 05-Jul-2015

40 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lec23

Priority Queues

Two kinds of priority queues:

• Min priority queue.

• Max priority queue.

Page 2: Lec23

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

Page 3: Lec23

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

Page 4: Lec23

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

Page 5: Lec23

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)

Page 6: Lec23

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.

Page 7: Lec23

After Putting Into Max Priority Queue

Sorted Array

68

2

41 Max Priority

Queue

Page 8: Lec23

After First Remove Max Operation

Sorted Array

6

2

41

8

Max Priority Queue

Page 9: Lec23

After Second Remove Max Operation

Sorted Array

2

41

86

Max Priority Queue

Page 10: Lec23

After Third Remove Max Operation

Sorted Array

21

864

Max Priority Queue

Page 11: Lec23

After Fourth Remove Max Operation

Sorted Array

1

8642

Max Priority Queue

Page 12: Lec23

After Fifth Remove Max Operation

Sorted Array

86421

Max Priority Queue

Page 13: Lec23

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.

Page 14: Lec23

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.

Page 15: Lec23

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: Lec23

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: Lec23

Machine Scheduling Example

Finish time = 21

Objective: Find schedules with minimum finish time.

A

B

C

time ----------->

6

2

3

7

13

13

21

Page 18: Lec23

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: Lec23

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: Lec23

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: Lec23

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: Lec23

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: Lec23

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: Lec23

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.

Page 25: Lec23

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))

Page 26: Lec23

Huffman Codes

Useful in lossless compression.

May be used in conjunction with LZW method.

Read from text.

Page 27: Lec23

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: Lec23

Min Tree Example

2

4 9 3

4 8 7

9 9

Root has minimum element.

Page 29: Lec23

Max Tree Example

9

4 9 8

4 2 7

3 1

Root has maximum element.

Page 30: Lec23

Min Heap Definition

• complete binary tree

• min tree

Page 31: Lec23

Min Heap With 9 Nodes

Complete binary tree with 9 nodes.

Page 32: Lec23

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: Lec23

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: Lec23

Heap Height

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

Page 35: Lec23

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: Lec23

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: Lec23

Putting An Element Into A Max Heap

Complete binary tree with 10 nodes.

9

8

6 7 2 6

5 1

7

7

Page 38: Lec23

Putting An Element Into A Max Heap

New element is 5.

9

8

6 7 2 6

5 1

7

75

Page 39: Lec23

Putting An Element Into A Max Heap

New element is 20.

9

8

6

7

2 6

5 1

7

7

7

Page 40: Lec23

Putting An Element Into A Max Heap

New element is 20.

9

8

6

7

2 6

5 1

7

77

Page 41: Lec23

Putting An Element Into A Max Heap

New element is 20.

9

86

7

2 6

5 1

7

77

Page 42: Lec23

Putting An Element Into A Max Heap

New element is 20.

9

86

7

2 6

5 1

7

77

20

Page 43: Lec23

Putting An Element Into A Max Heap

Complete binary tree with 11 nodes.

9

86

7

2 6

5 1

7

77

20

Page 44: Lec23

Putting An Element Into A Max Heap

New element is 15.

9

86

7

2 6

5 1

7

77

20

Page 45: Lec23

Putting An Element Into A Max Heap

New element is 15.

9

8

6

7

2 6

5 1

7

77

20

8

Page 46: Lec23

Putting 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: Lec23

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

Page 48: Lec23

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: Lec23

Removing The Max Element

After max element is removed.

8

6

7

2 6

5 1

7

77 8

9

15

Page 50: Lec23

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: Lec23

Removing The Max Element

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

Page 52: Lec23

Removing The Max Element

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

Page 53: Lec23

Removing The Max Element

Reinsert 8 into the heap.

6

7

2 6

5 1

7

77

9

15

8

Page 54: Lec23

Removing The Max Element

Max element is 15.

6

7

2 6

5 1

7

77

9

15

8

Page 55: Lec23

Removing The Max Element

After max element is removed.

6

7

2 6

5 1

7

77

9

8

Page 56: Lec23

Removing The Max Element

Heap with 9 nodes.

6

7

2 6

5 1

7

77

9

8

Page 57: Lec23

Removing The Max Element

Reinsert 7.

6 2 6

5 1

79

8

Page 58: Lec23

Removing The Max Element

Reinsert 7.

6 2 6

5 1

7

9

8

Page 59: Lec23

Removing The Max Element

Reinsert 7.

6 2 6

5 1

7

9

8

7

Page 60: Lec23

Complexity Of Remove Max Element

Complexity is O(log n).

6 2 6

5 1

7

9

8

7