0% found this document useful (0 votes)
47 views35 pages

Priority Queues

This document contains notes from a CSE 373: Data Structures & Algorithms class taught by Riley Porter in winter 2017. It discusses pseudocode, abstract data types (ADTs), priority queues, and heaps. It provides examples of pseudocode, describes priority queues and how they differ from regular queues, and gives examples of implementing a priority queue.

Uploaded by

iamadhihere10
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views35 pages

Priority Queues

This document contains notes from a CSE 373: Data Structures & Algorithms class taught by Riley Porter in winter 2017. It discusses pseudocode, abstract data types (ADTs), priority queues, and heaps. It provides examples of pseudocode, describes priority queues and how they differ from regular queues, and gives examples of implementing a priority queue.

Uploaded by

iamadhihere10
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

CSE

 373:  Data  Structures  &  Algorithms  


 
Pseudocode;  ADTs;  Priority  Queues;  
Heaps  

Riley  Porter  
Winter  2017  

Winter  2017   CSE373:  Data  Structures  &  Algorithms   1  


Course  LogisGcs  
• HW  1  released  Monday.    Due  a  week  from  Tuesday.  
 
• Java  Review  Session  early  next  week,  room  and  Gme  
TBA  and  posted  on  the  course  website  

• Slides  posted  and  updated  from  last  Gme  with  links  


correctly  working  in  PDF  version  
 
 
 

Winter  2017   CSE373:  Data  Structures  and  Algorithms   2  


Pseudocode    
Describe  an  algorithm  in  the  steps  necessary,  write  the  
shape  of  the  code  but  ignore  specific  syntax.  
 
Algorithm:  Count  all  elements  in  a  list  greater  than  x  
 
Pseudocode:  
int counter // keeps track of number > x
while list has more elements {
increment counter if current element is > than x
move to next element of list
}
 
 
 
Winter  2017   CSE373:  Data  Structures  and  Algorithms   3  
More  Pseudocode  
Algorithm:  Given  a  list  of  names  in  the  format  "firstName  
lastName",  make  a  Map  of  all  first  names  as  keys  with  sets  of  last  
names  as  their  values  
 
Pseudocode:  
create the empty result map
while list has more names to process {
firstName is name split up until space
lastName is name split from space to the end
if firstName not in the map yet {
put firstName in map as a key with an empty
set as the value
}
add lastName to the set for the first name
move to the next name in the list
}  
  2017  
Winter   CSE373:  Data  Structures  and  Algorithms   4  

 
Pseudocode  PracGce  
 
 
Come  up  with  pseudocode  for  the  following  algorithm:  
 
Algorithm:  Given  a  list  of  integers,  find  the  index  of  the  
maximum  integer  in  the  list.  
 
 

Winter  2017   CSE373:  Data  Structures  and  Algorithms   5  


Pseudocode  PracGce  SoluGon  
Algorithm:  Given  a  list  of  integers,  find  the  index  of  the  
maximum  integer  in  the  list.  

if list is not empty:


int maxIndex starts at 0 for first index
for each index i in the list:
if the element at index i is greater than
the element at index maxIndex:
reset maxIndex to i
return maxIndex
else:
error case: return -1? throw exception?  
 

Winter  2017   CSE373:  Data  Structures  and  Algorithms   6  


Terminology  Review  
• Abstract  Data  Type  (ADT)  
– MathemaGcal  descripGon  of  a  "thing"  with  set  of  
operaGons  
• Algorithm  
– A  high  level,  language-­‐independent  descripGon  of  a  step-­‐
by-­‐step  process  
• Data  structure  
– A  specific  organizaGon  of  data  and  family  of  algorithms  for  
implemenGng  an  ADT  
• ImplementaGon  of  a  data  structure  
– A  specific  implementaGon  in  a  specific  language  

Winter  2017   CSE373:  Data  Structures  and  Algorithms   7  


Another  ADT:  Priority  Queue  
A  priority  queue  holds  comparable  data  
– Given  x  and  y,  is  x  less  than,  equal  to,  or  greater  
than  y  
– Meaning  of  the  ordering  can  depend  on  your  data  
– Many  data  structures  require  this:  dicGonaries,  
sorGng  
– Typically  elements  are  comparable  types,  or  have  
two  fields:  the  priority  and  the  data  

CSE373:  Data  Structures  &  


Winter  2017   8  
Algorithms  
Priority  Queue  vs  Queue  
Queue:  follows  First-­‐In-­‐First-­‐Out  ordering  
Example:  serving  customers  at  a  pharmacy,  based  on  
who  got  there  first.  
 
Priority  Queue:  compares  priority  of  elements  
to  determine  ordering  
Example:  emergency  room,  serves  paGents  with  
priority  based  on  severity  of  wounds  

CSE373:  Data  Structures  &  


Winter  2017   9  
Algorithms  
PrioriGes  
• Each  item  has  a  "priority"  
– The  lesser  item  is  the  one  with  the  greater  priority  
– So  "priority  1"  is  more  important  than  "priority  4"  
– Can  resolve  Ges  arbitrarily  

• OperaGons:                    6                2  
– insert      15                23  
– deleteMin   insert                      12      18   deleteMin  
– is_empty   45      3        7  

• deleteMin    returns  and  deletes  the  item  with  greatest  


priority  (lowest  priority  value)  
• insert  is  like  enqueue,  deleteMin  is  like  dequeue
– But  the  whole  point  is  to  use  prioriGes  instead  of  FIFO  

CSE373:  Data  Structures  &  


Winter  2017   10  
Algorithms  
Priority  Queue  Example  
Given  the  following,  what  values  are  a,  b,  c  and  d?  
         insert  element1  with  priority  5  
 insert  element2  with  priority  3  
 insert  element3  with  priority  4  
 a  =  deleteMin // a = ?
 b  =  deleteMin // b = ?
 insert  element4  with  priority  2  
 insert  element5  with  priority  6  
 c  =  deleteMin // c = ?
 d  =  deleteMin        // d = ?
CSE373:  Data  Structures  &  
Winter  2017   11  
Algorithms  
Priority  Queue  Example  SoluGons  
 insert  element1  with  priority  5  
 insert  element2  with  priority  3  
 insert  element3  with  priority  4  
 a  =  deleteMin // a = element2
 b  =  deleteMin // b = element3
 insert  element4  with  priority  2  
 insert  element5  with  priority  6  
 c  =  deleteMin // c = element4  
 d  =  deleteMin      // d = element1

CSE373:  Data  Structures  &  


Winter  2017   12  
Algorithms  
Some  ApplicaGons  
 
• Run  mulGple  programs  in  the  operaGng  system  
– "criGcal"  before  "interacGve"  before  "compute-­‐
intensive",  or  let  users  set  priority  level  
• Select  print  jobs  in  order  of  decreasing  length  
• "Greedy"  algorithms  (we’ll  revisit  this  idea)  
• Forward  network  packets  in  order  of  urgency  
• Select  most  frequent  symbols  for  data  
compression  (Huffman  CSE  143)  
• SorGng  (first  insert  all,  then  repeatedly  
deleteMin)  
CSE373:  Data  Structures  &  
Winter  2017   13  
Algorithms  
Possible  ImplementaGons  
 
• Unsorted  Array  
– insert  by  inserGng  at  the  end  
– deleteMin  by  linear  search  
 
• Sorted  Circular  Array  
– insert  by  binary  search,  shij  elements  over  
– deleteMin  by  moving  “front”  
 

CSE373:  Data  Structures  &  


Winter  2017   14  
Algorithms  
More  Possible  ImplementaGons  
• Unsorted  Linked  List  
– insert  by  inserGng  at  the  front  
– deleteMin by  linear  search  
 
• Sorted  Linked  List  
– insert by  linear  search  
– deleteMin  remove  at  front  
 
• Binary  Search  Tree  
– insert  by  search  traversal  
– deleteMin  by  find  min  traversal  

CSE373:  Data  Structures  &  


Winter  2017   15  
Algorithms  
One  ImplementaGon:  Heap  
Heaps  are  implemented  with  Trees  
 
A  binary  min-­‐heap  (or  just  binary  heap  or  
heap)  is  a  data  structure  with  the  properGes:  
• Structure  property:  A  complete  binary  tree    
• Heap  property:  The  priority  of  every  (non-­‐
root)  node  is  greater  than  the  priority  of  its  
parent  
– Not  a  binary  search  tree  
 
Winter  2017   16  
CSE373:  Data  Structures  &  
Algorithms  
Tree  Review  
• root  of  tree:   A  
• leaves  of  tree:   B   C  
• children  of  B:   D   E   F   G  
• parent  of  C:  
H  
• subtree  C:  
• height  of  tree:  
• perfect  tree:  
• height  of  E:  
• depth  of  E:  
• degree  of  B:   • complete  tree:  
CSE373:  Data  Structures  &  
Winter  2017   17  
Algorithms  
Tree  Review  
• root  of  tree:          A   A  
• leaves  of  tree:  H,E,F,G   B   C  
• children  of  B:    D,  E,  F   D   E   F   G  
• parent  of  C:  A   H  
• subtree  C:  in  blue  
• height  of  tree:  3   • perfect  tree:  
every  level  is  completely  full  
• height  of  E:  0   • complete  tree:  
• depth  of  E:  2   all  levels  full,  with  a  possible  
excepGon  being  the  bomom  level,  
• degree  of  B:  3   which  is  filled  lej  to  right  
CSE373:  Data  Structures  &  
Winter  2017   18  
Algorithms  
Structure  Property:  Completeness  
• A  Binary  Heap  is  a  complete  binary  tree:  
– A  binary  tree  with  all  levels  full,  with  a  possible  
excepGon  being  the  bomom  level,  which  is  filled  
lej  to  right  
Examples:   10   10  
  20   80   20   80  

  40   60   85   99   30   40   400  
  50   700  
are  these  trees  complete?  
  CSE373:  Data  Structures  &  
Winter  2017   19  

 
Algorithms  
Structure  Property:  Completeness  
• A  Binary  Heap  is  a  complete  binary  tree:  
– A  binary  tree  with  all  levels  full,  with  a  possible  
excepGon  being  the  bomom  level,  which  is  filled  
lej  to  right   incomplete  
Examples:   10   complete   10  
  20   80   20   80  

  40   60   85   99   30   40   400  
  50   700  
  CSE373:  Data  Structures  &  
Winter  2017   20  

 
Algorithms  
Heap  Order  Property  
• The  priority  of  every  (non-­‐root)  node  is  
greater  than  (or  equal  to)  that  of  it's  parent.  
AKA  the  children  are  always  greater  than  the  
parents.  
    10   1  

  20   80   30   33  

20   40   400   40   20   40   800  

which  of  these  follow  the  heap  order  property?  


CSE373:  Data  Structures  &  
Winter  2017   21  
Algorithms  
Heap  Order  Property  
• The  priority  of  every  (non-­‐root)  node  is  
greater  than  (or  equal  to)  that  of  it's  parent.  
AKA  the  children  are  always  greater  than  the  
parents.   heap  property   not  the  heap  property  
10   1  

  20   80   30   33  

  20   40   400   40   20   40   800  

CSE373:  Data  Structures  &  


Winter  2017   22  
Algorithms  
Heaps  
A  binary  min-­‐heap  (or  just  binary  heap  or  just  heap)  is:  
• Structure  property:  A  complete  binary  tree    
• Heap  property:  The  priority  of  every  (non-­‐root)  node  is  greater  
than  (or  equal  to)  the  priority  of  its  parent.  AKA  the  children  are  
always  greater  than  the  parents.  
– Not  a  binary  search  tree  
 
10  
10   1  
20   80  
20   80   50   3  
40   60   85   99  
30   15   450   75   60   8  
50   700  
10  

which  of  these  are  heaps?  


CSE373:  Data  Structures  &  
Winter  2017   23  
Algorithms  
Heaps  
A  binary  min-­‐heap  (or  just  binary  heap  or  just  heap)  is:  
• Structure  property:  A  complete  binary  tree    
• Heap  property:  The  priority  of  every  (non-­‐root)  node  is  greater  
than  (or  equal  to)  the  priority  of  its  parent.    AKA  the  children  
are  always  greater  than  the  parents.  
– Not  a  binary  search  tree  
10  
10   1  
20   80  
20   80   50   3  
40   60   85   99  
30   15   450   75   60   8  
50   700  
not  a  heap   10   a  heap  
not  a  heap  

CSE373:  Data  Structures  &  


Winter  2017   24  
Algorithms  
Heaps  
• Where  is  the  highest-­‐priority  item?  
     
 
• What  is  the  height  of  a  heap  with  n  items?  

• How  do  we  use  heaps  to  implement  the  


operaGons  in  a  Priority  Queue  ADT?  
 
CSE373:  Data  Structures  &  
Winter  2017   25  
Algorithms  
Heaps  
• Where  is  the  highest-­‐priority  item?  
   At  the  root  (at  the  top)  
 
• What  is  the  height  of  a  heap  with  n  items  
     log2n  (We’ll  look  at  compuGng  this  
     next  week)  
• How  do  we  use  heaps  to  implement  the  
operaGons  in  a  Priority  Queue  ADT?  
                   See  following  slides  
CSE373:  Data  Structures  &  
Winter  2017   26  
Algorithms  
OperaGons:  basic  idea  
• deleteMin:     10  
1. answer = root.data
2. Move  right-­‐most  node  in   20   80  
last  row  to  root  to  restore  
structure  property   40   60   85   99  
3. "Percolate  down"  to   50   700  
restore  heap  property  
• insert:
1. Put  new  node  in  next   Overall  strategy:  
posiGon  on  bomom  row  to   • Preserve  structure  property  
restore  structure  property   • Break  and  restore  heap  
2. "Percolate  up"  to  restore   property  
heap  property  
CSE373:  Data  Structures  &  
Winter  2017   27  
Algorithms  
deleteMin  

 
2  
 
1.  Delete  (and  later   4   3  
return)  value  at  root   7   5   8   9  
node  
11   9   6   10  

Winter  2017  
CSE373:  Data  Structures  &  Algorithms   28  
2.  Restore  the  Structure  Property  

• We  now  have  a  "hole"  at  


4   3  
the  root  
7   5   8   9  
– Need  to  fill  the  hole  with  
another  value   11   9   6   10  

• When  we  are  done,  the  tree   4   3  


will  have  one  less  node  and   7   5   8   9  
must  sGll  be  complete  
11   9   6   10  
Winter  2017  
CSE373:  Data  Structures  &  Algorithms   29  
3.  Restore  the  Heap  Property  
?   4  or  3  
8  or  9  
10   3   ?   3  

4   3   4   10   4   8  

7   5   8   9   7   5   8   9   7   5   10   9  

11   9   6   11   9   6   11   9   6  

Percolate down:
• Keep comparing with both children
• Swap with lesser child and go down one level
• What happens if we swap with the larger child?
• Done if both children are ≥ item or reached a leaf node
Winter  2017  
CSE373:  Data  Structures  &  Algorithms   3
Insert  

• Add  a  value  to  the  tree   2  

1  
• Ajerwards,  structure  and  
heap  properGes  must  sGll   4   8  

be  correct   7   5   10   9  

11   9   6  

• Where  do  we  insert  the  


new  value?  
  CSE373:  Data  Structures  &  Algorithms  
Winter  2017  
31
Insert:  Maintain  the  Structure  
Property  

• There  is  only  one  valid  tree  


shape  ajer  we  add  one   1  

more  node   4   8  

7   5   10   9  

• So  put  our  new  data  there   11   9   6   2  


and  then  focus  on  restoring  
the  heap  property  

Winter  2017  
CSE373:  Data  Structures  &  Algorithms  
Maintain  the  heap  property  
1  
1   1   ?   1  

4   8   4   8   2   8  

7   5   10   9   7   2   10   9   7   4   10   9  
?   ?  
11   9   6   2   11   9   6   5   11   9   6   5  
5   4  

Percolate up:
• Put new data in new location
• If parent larger, swap with parent, and continue
• Done if parent ≤ item or reached root

Winter  2017  
CSE373:  Data  Structures  &  Algorithms   3
Array  RepresentaGon  of  Binary  Trees  

1   A   From  node  i:  


 
2   3   lej  child:  i*2
B   C   right  child:  i*2+1
4   5   6   7   parent:  i/2
D   E   F   G  
8   9   10   11   12    
H   I   J   K   L   (wasGng  index  0  is  
convenient  for  the  
index  arithmeGc)  
implicit  (array)  implementaGon:  

A B C D E F G H I J K L
0 1 2 3 4 5 6 7 8 9 10 11 12 13

CSE373:  Data  Structures  &  


Winter  2017   34  
Algorithms  
Judging  the  array  implementaGon  
Plusses:  
• Less  "wasted"  space  
– Just  index  0  and  unused  space  on  right  
– In  convenGonal  tree  representaGon,  one  edge  per  node  (except  
for  root),  so  n-­‐1  wasted  space  (like  linked  lists)  
– Array  would  waste  more  space  if  tree  were  not  complete  
• MulGplying  and  dividing  by  2  is  very  fast  (shij  operaGons  in  
hardware)  
• Last  used  posiGon  is  just  index  size
Minuses:  
• Same  might-­‐be-­‐empty  or  might-­‐get-­‐full  problems  we  saw  with  
stacks  and  queues  (resize  by  doubling  as  necessary)  
 

Plusses  outweigh  minuses:  "this  is  how  people  do  it"  

CSE373:  Data  Structures  &  


Winter  2017   35  
Algorithms  

You might also like