Top Banner
HEAPS Problem Solving with Computers-II oh
23

HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Oct 02, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

HEAPSProblem Solving with Computers-II

oh

Page 2: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

How is PA02 going?A. Done B. On track to finish C. Having some difficulties D. Just started E. Haven’t started

Page 3: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Heaps • Clarification

• heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running times?

There are two variants ofthe Heap datastructure

minHeap MaxHea

Each supports the followingoperations

pushC 11 insert akey returns the min key

top C 11 Fora minkeepToph

11 For a mantrap tophreturns the man key

pop C 11 delete the keyon topc either minor mail

empty 11 check if the heap is empty

Page 4: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

as a black boxmen Heap

FEET iiitopc 11

returns 5

push12

push 3topC It returns

3

popdeletes3

Running time for heap popreturns

with N keys

log Nsame as insert in a

push I O balanced BST but in

practice heappush isfaster

topC OG better than a balanced

BST

pop C 040GW is same as delete min

Ina BST

I 17

Page 5: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Heaps Min-Heaps Max-Heap BST

• Insert : • Min: • Delete Min: • Max • Delete Max

Applications: • Efficient sort • Finding the median of a sequence of numbers • Compression codes

Choose heap if you are doing repeated insert/delete/(min OR max) operations

I 17N keys in each data structure

balanced BST01105N 0110GW OCN OclogNOCD OCN oclogNOcwgn OCN OcloswOCD OCN OclosN

OCwyw Cw Clog N

Page 6: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

std::priority_queue (STL’s version of heap)A C++ priority_queue is a generic container, and can store any data type on which an ordering can be defined: for example ints, structs (Card), pointers etc.

#include <queue> priority_queue<int> pq;

Methods: * push() //insert* pop() //delete max priority item* top() //get max priority item* empty() //returns true if the priority queue is empty

• You can extract object of highest priority in O(log N) • To determine priority: objects in a priority queue must be comparable to each other

!5

f heap keys

II reams20

keyvalues areusedas

priorityabsydefraud

key with max priorityison top

Page 7: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

STL Heap implementation: Priority Queues in C++

!6

priority_queue<int> pq;pq.push(10);pq.push(2);pq.push(80);cout<<pq.top();pq.pop();cout<<pq.top();pq.pop();cout<<pq.top();pq.pop();

A.10 2 80 B.2 10 80 C.80 10 2 D.80 2 10 E. None of the above

What is the output of this code?

0

Page 8: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Heaps as binary trees• Rooted binary tree that is as complete as possible • In a min-Heap, each node satisfies the following heap property:

key(x)<= key(children of x)

6

10

40

12

32 4743

Min Heap with 9 nodes

45 41

Where is the minimum element?

e a

e

e e

Page 9: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Heaps as binary trees• Rooted binary tree that is as complete as possible • In a max-Heap, each node satisfies the following heap property:

key(x)>= key(children of x)

47

41

12

45

32 4043

Max Heap with 9 nodes

6 10 Where is the maximum element?

Page 10: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Structure: Complete binary treeA heap is a complete binary tree: Each level is as full as possible. Nodes on the bottom level are placed as far left as possible

6

10

40

12

32 4743

45 41

a

Page 11: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Identifying heapsStarting with the following min-Heap which of the following operations will result in something that is NOT a min Heap

6

10

40

12

32 4743

45 41

A. Swap the nodes 40 and 32 B. Swap the nodes 32 and 43 C. Swap the nodes 43 and 40 D. Insert 50 as the left child of 45 E. C&DO

games'wstragteffuiremeet

Page 12: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Insert 50 into a heap• Insert key(x) in the first open slot at the last level of tree (going from left to right) • If the heap property is not violated - Done • Else: while(key(parent(x))>key(x)) swap the key(x) with key(parent(x))

12

41

45

47

32

Y2

To at

12 41 47 4550

Page 13: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Insert 50, then 35, then 86

10

40

12

32 4743

45 41

I 8

284

35 8

i

Page 14: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Delete min• Replace the root with the rightmost node at the last level • “Bubble down”- swap node with one of the children until the heap

property is restored

6

10

40

8

32 4712

45 41 50 35 43

That hastheminimum

1438 my

149 perform Pope143 on this tree

swap 6 with 43Bubble down43

Page 15: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Under the hood of heaps• An efficient way of implementing heaps is using vectors • Although we think of heaps as trees, the entire tree can be efficiently

represented as a vector!!

Page 16: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Implementing heaps using an array or vector

6

10

40

12

32 4743

45 41

Value

Index 0 1 2 3 4 5 6 7 8

Using vector as the internal data structure of the heap has some advantages:

• More space efficient than trees • Easier to insert nodes into the heap

Read out the keys inthe tree levelby level left torightStart with the root

6 10 12 40 32 43 47 45 41 50g

The entire heap tree shownon

I 23 the left can beroresentedasa vector The parent child

3 relationships in the vector areimplicit wedon'tstore pointer

7 8 91

Page 17: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

6

10

40

12

32 4743

45 41

For a node at index i, index of the parent is int(i-1/2)

Value 6 10 12 40 32 43 47 45 41

Index 0 1 2 3 4 5 6 7 8

Finding the “parent” of a “node” in the vector representation

gey

In general for a key at index

of thevector the index ofits

parent is int Li4

hey ipudetof O O I 1 2 2 3 3 incitzparent

Page 18: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Insert into a heap• Insert key(x) in the first open slot at the last level of tree (going from left to right) • If the heap property is not violated - Done • Else….

Insert the elements {12, 41, 47, 45, 32} in a min-Heap using the vector representation of the heap

p

In practice we never implement the binary tree in

the usual way with nodes pointers

o we revert convert heap tree to a vectorinstead work directly with the vector represata

32isatindex4 Hypotheticaltree2 parental 32 U itsparentis atteeming 12 41 47 45 3 2 singe's Eitherup 0 I 2 3 4 bubbleUP

Page 19: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

6

10

40

12

32 4743

45 41

Value 6 10 12 40 32 43 47 45 41

Index 0 1 2 3 4 5 6 7 8

Insert 50, then 35For a node at index i, index of the parent is int(i-1/2)

O

5035J9 CO

Page 20: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Insert 8 into a heap

Value 6 10 12 40 32 43 47 45 41 50 35

Index 0 1 2 3 4 5 6 7 8 9 10

After inserting 8, which node is the parent of 8 ? A. Node 6 B. Node 12 C. None 43 D. None - Node 8 will be the root

128 18 43

OInsert 8 at index 11 8 is now the last node in the last levelof

the

tree 2Find 8s parent at index Iif 5 key 438443 so swap 8 I 43Find 8 s new parent at index 51 2 key 12

swap 8812Find 8s newparentalindex 2E O keys

876 stop

Page 21: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Delete min• Replace the root with the rightmost node at the last level • “Bubble down”- swap node with one of the children until the heap

property is restored

6

10

40

8

32 4712

45 41 50 35 43

Page 22: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Traversing down the tree

6

10

40

12

32 4743

45 41

For a node at index i, what is the index of the left and right children?

A. (2*i, 2*i+1) B. (2*i+1, 2*i+2) C. (log(i), log(i)+1) D. None of the above

Value 6 10 12 40 32 43 47 45 41

Index 0 1 2 3 4 5 6 7 8

When doing a pop replace theminkeyCD withe last key in the vector Ui i

Delete 6 by reducing the sizeof thevectorby41 Bubble down 41I to do this

need tofindIndexofleftchildIndexgrightchild

To I I I I I the children in thevectoro

LI

b u s s

7 z

Page 23: HEAPS - GitHub Pages · Heaps • Clarification • heap, the data structure is not related to heap, the region of memory • What are the operations supported? • What are the running

Next lecture• More on STL implementation of heaps (priority queues) • Queues