06 b: hashing and priority queues - nus computingcs1102s/slides/slides_06_b...hash table...

93
Hashing Priority Queues Puzzlers 06 B: Hashing and Priority Queues CS1102S: Data Structures and Algorithms Martin Henz February 26, 2010 Generated on Friday 26 th February, 2010, 09:22 CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 1

Upload: others

Post on 24-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

  • HashingPriority Queues

    Puzzlers

    06 B: Hashing and Priority Queues

    CS1102S: Data Structures and Algorithms

    Martin Henz

    February 26, 2010

    Generated on Friday 26th February, 2010, 09:22

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 1

  • HashingPriority Queues

    Puzzlers

    1 Hashing

    2 Priority Queues

    3 Puzzlers

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 2

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    1 HashingCollision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    2 Priority Queues

    3 Puzzlers

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 3

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Recap: Main Ideas

    Implement set as array

    Store values in array; compute index using a hash function.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 4

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Recap: Main Ideas

    Implement set as array

    Store values in array; compute index using a hash function.

    Spread

    The hash function should “spread” the hash keys evenly overthe available hash values

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 5

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Recap: Main Ideas

    Implement set as array

    Store values in array; compute index using a hash function.

    Spread

    The hash function should “spread” the hash keys evenly overthe available hash values

    Collision

    Hash table implementations differ in their strategies of collisionresolution: Two hash keys mapping to the same hash value

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 6

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Separate Chaining

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 7

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Hash Tables without Linked Lists

    Idea

    Store items directly into array; use alternative cells if a collisionoccurs

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 8

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Hash Tables without Linked Lists

    Idea

    Store items directly into array; use alternative cells if a collisionoccurs

    More formally

    Try cells h0(x), h1(x), h2(x), . . . until an empty cell is found.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 9

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Hash Tables without Linked Lists

    Idea

    Store items directly into array; use alternative cells if a collisionoccurs

    More formally

    Try cells h0(x), h1(x), h2(x), . . . until an empty cell is found.

    How to define hi?

    hi(x) = (hash(x) + f (i)) mod TableSize

    where f (0) = 0.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 10

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Hash Tables without Linked Lists

    Idea

    Store items directly into array; use alternative cells if a collisionoccurs

    More formally

    Try cells h0(x), h1(x), h2(x), . . . until an empty cell is found.

    How to define hi?

    hi(x) = (hash(x) + f (i)) mod TableSize

    where f (0) = 0.

    Load factor, λ

    Ratio of number of elements in hash table to table size.CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 11

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Linear Probing

    Conflict resolution

    f (i) = i

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 12

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Linear Probing

    Conflict resolution

    f (i) = i

    Clustering

    As the load factor λ increases, occupied areas in the array tendto occur in clusters, leading to frequent unsuccessful insertiontries.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 13

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Quadratic Probing

    Conflict resolution

    f (i) = i2

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 14

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Quadratic Probing

    Conflict resolution

    f (i) = i2

    Theorem

    If quadratic probing is used, and the table size is prime, then anew element can always be inserted if the table is at least halfempty.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 15

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Double Hashing

    Idea

    Use a second hash function to find the jump distance

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 16

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Double Hashing

    Idea

    Use a second hash function to find the jump distance

    Formally

    f (i) = i · hash2(x)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 17

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Double Hashing

    Idea

    Use a second hash function to find the jump distance

    Formally

    f (i) = i · hash2(x)

    Attention

    The function hash2 must never return 0. Why?

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 18

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Double Hashing: Example

    hash1(x) = x mod 10

    hash2(x) = 7 − (x mod 7)

    hi(x) = hashi(x) + i · hash2(x)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 19

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    A Detail: Removal from Hash Table

    Removal from separate chaining hash table

    Straightforward: remove item from respective linked list (if it isthere)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 20

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    A Detail: Removal from Hash Table

    Removal from separate chaining hash table

    Straightforward: remove item from respective linked list (if it isthere)

    Removal from Probing Hash Table: First idea

    Set the respective table entry back to null

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 21

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    A Detail: Removal from Hash Table

    Removal from separate chaining hash table

    Straightforward: remove item from respective linked list (if it isthere)

    Removal from Probing Hash Table: First idea

    Set the respective table entry back to null

    Problem

    This operation interrupts probing chains; elements can be “lost”

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 22

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Solution

    pr iva te s t a t i c class HashEntry {publ ic AnyType element ;publ ic boolean i s A c t i v e ;publ ic HashEntry ( AnyType e ) {

    th i s ( e , t rue ) ; }publ ic HashEntry ( AnyType e , boolean i ) {

    element = e ; i s A c t i v e = i ; }}publ ic void remove ( AnyType x ) {

    i n t currentPos = f indPos ( x ) ;i f ( i s A c t i v e ( currentPos ) )

    a r ray [ currentPos ] . i s A c t i v e = fa lse ;}

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 23

  • HashingPriority Queues

    Puzzlers

    Collision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Remember Sets?

    Idea

    A Set (interface) is a Collection (interface) that does not allowduplicate entries.

    HashSet

    A HashSet is a hash table implementation of Set.

    class HashSet implements Set

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 24

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    1 Hashing

    2 Priority QueuesMotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    3 Puzzlers

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 25

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Motivation

    Operations on queues

    add(e): enter new element into queue

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 26

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Motivation

    Operations on queues

    add(e): enter new element into queueremove(): remove the element that has been entered first

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 27

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Motivation

    Operations on queues

    add(e): enter new element into queueremove(): remove the element that has been entered first

    A slight variation

    Priority should not be implicit, using the time of entry, butexplicit, using an ordering

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 28

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Motivation

    Operations on queues

    add(e): enter new element into queueremove(): remove the element that has been entered first

    A slight variation

    Priority should not be implicit, using the time of entry, butexplicit, using an ordering

    Operations on priority queues

    insert(e): enter new element into queue

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 29

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Motivation

    Operations on queues

    add(e): enter new element into queueremove(): remove the element that has been entered first

    A slight variation

    Priority should not be implicit, using the time of entry, butexplicit, using an ordering

    Operations on priority queues

    insert(e): enter new element into queuedeleteMin(): remove the smallest element

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 30

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Application Examples

    Printer queue: use number of pages as “priority”

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 31

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Application Examples

    Printer queue: use number of pages as “priority”

    Discrete event simulation: use simulation time as “priority”

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 32

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Application Examples

    Printer queue: use number of pages as “priority”

    Discrete event simulation: use simulation time as “priority”

    Network routing: give priority to packets with strictestquality-of-service requirements

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 33

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list:

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 34

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1),

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 35

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1), deleteMin(): O(N)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 36

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1), deleteMin(): O(N)

    Ordered list:

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 37

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1), deleteMin(): O(N)

    Ordered list: insert(e): O(N),

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 38

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1), deleteMin(): O(N)

    Ordered list: insert(e): O(N), deleteMin(): O(1)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 39

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1), deleteMin(): O(N)

    Ordered list: insert(e): O(N), deleteMin(): O(1)

    Search tree:

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 40

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1), deleteMin(): O(N)

    Ordered list: insert(e): O(N), deleteMin(): O(1)

    Search tree: insert(e): O(log N),

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 41

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Simple Implementations

    Unordered list: insert(e): O(1), deleteMin(): O(N)

    Ordered list: insert(e): O(N), deleteMin(): O(1)

    Search tree: insert(e): O(log N), deleteMin(): O(log N)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 42

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Binary Heaps

    Rough Idea

    Keep a binary tree whose root contains the smallest element

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 43

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Binary Heaps

    Rough Idea

    Keep a binary tree whose root contains the smallest elementinsert(e) and deleteMin() need to restore this property

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 44

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Binary Heaps

    Rough Idea

    Keep a binary tree whose root contains the smallest elementinsert(e) and deleteMin() need to restore this property

    Completeness

    Keep binary tree complete, which means completely filled, withthe possible exception of the bottom level, which is filled fromleft to right.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 45

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Binary Heaps

    Rough Idea

    Keep a binary tree whose root contains the smallest elementinsert(e) and deleteMin() need to restore this property

    Completeness

    Keep binary tree complete, which means completely filled, withthe possible exception of the bottom level, which is filled fromleft to right.

    Heap-order

    For every node X , the key in the parent of X is smaller than orequal to the key in X , with the exception of the root

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 46

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Order in Binary Heap

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 47

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Order in Binary Heap

    Tree on the left is a binary heap; tree on the right is not!

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 48

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Representation as Array

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 49

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Representation as Array

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 50

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    insert

    Idea

    Add “hole” at bottom and “percolate” the hole up to the rightplace for insertion

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 51

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: insert(14)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 52

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: insert(14), continued

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 53

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Worst case

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 54

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Worst case

    O(log N)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 55

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Worst case

    O(log N)

    Average

    2.607 comparisons

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 56

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    deleteMin

    Idea

    Remove root, leaving “hole” at top. “Percolate” the hole down toa correct place for insertion of bottom element

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 57

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: deleteMin()

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 58

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: deleteMin(), continued

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 59

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: deleteMin(), continued

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 60

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Worst case

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 61

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Worst case

    O(log N)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 62

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Worst case

    O(log N)

    Average

    log N

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 63

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    buildHeap

    Initial setup

    Build a heap from a given (unordered) collection of elements

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 64

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    buildHeap

    Initial setup

    Build a heap from a given (unordered) collection of elements

    Idea

    “Percolate” every inner node down the tree

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 65

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: buildHeap, percolateDown(7)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 66

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: buildHeap, percolateDown(6), ..(5)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 67

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: buildHeap, percolateDown(4), ..(3)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 68

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Example: buildHeap, percolateDown(2), ..(1)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 69

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Bound

    The runtime is bounded by the sum of all heights of all nodes

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 70

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Bound

    The runtime is bounded by the sum of all heights of all nodes

    Theorem

    For perfect binary tree of height h, containing 2h+1 − 1 nodes,sum of heights of nodes is 2h+1 − 1 − (h + 1).

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 71

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Analysis

    Bound

    The runtime is bounded by the sum of all heights of all nodes

    Theorem

    For perfect binary tree of height h, containing 2h+1 − 1 nodes,sum of heights of nodes is 2h+1 − 1 − (h + 1).

    Worst case

    O(N)

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 72

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Other Heap Operations

    decreaseKey(p,∆)

    Lowers the value of item at position p by a positive amount ∆.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 73

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Other Heap Operations

    decreaseKey(p,∆)

    Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 74

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Other Heap Operations

    decreaseKey(p,∆)

    Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up

    increaseKey(p,∆)

    Increases the value of item at position p by a positiveamount ∆.

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 75

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Other Heap Operations

    decreaseKey(p,∆)

    Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up

    increaseKey(p,∆)

    Increases the value of item at position p by a positiveamount ∆.Implementation: Percolate down

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 76

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Other Heap Operations

    decreaseKey(p,∆)

    Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up

    increaseKey(p,∆)

    Increases the value of item at position p by a positiveamount ∆.Implementation: Percolate down

    delete(p)

    Remove value at position p

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 77

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Other Heap Operations

    decreaseKey(p,∆)

    Lowers the value of item at position p by a positive amount ∆.Implementation: Percolate up

    increaseKey(p,∆)

    Increases the value of item at position p by a positiveamount ∆.Implementation: Percolate down

    delete(p)

    Remove value at position pImplementation: decreaseKey(p,∞), then deleteMin()

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 78

  • HashingPriority Queues

    Puzzlers

    MotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    Priority Queues in Standard Library

    class Pr ior i tyQueue {boolean add (E e ) { . . . } / / add elementE p o l l ( ) { . . . } / / remove sma l les t

    }

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 79

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    1 Hashing

    2 Priority Queues

    3 PuzzlersLast Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 80

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Last Puzzler: It’s Elementary

    What does the following program print?

    publ ic class Elementary {publ ic s t a t i c void main ( S t r i n g [ ] args ) {

    System . out . p r i n t l n (12345 + 5432 l ) ;}

    }

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 81

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Scary...

    I’m so scared when try running these codes onEclipse. When I run the file downloaded fromthe module homepage, the result is 17777.

    But when I type it myself , the result is 66666.Maybe the number in teacher’s file is not thenormal number, right ?

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 82

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    The “Fine” Print

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 83

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Constant Numbers in Java

    (see Java Language Specification)

    12345: int constant in decimal notation

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 84

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Constant Numbers in Java

    (see Java Language Specification)

    12345: int constant in decimal notation

    0xff: int constant in hexadecimal notation

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 85

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Constant Numbers in Java

    (see Java Language Specification)

    12345: int constant in decimal notation

    0xff: int constant in hexadecimal notation

    077: int constant in octal notation

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 86

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Constant Numbers in Java

    (see Java Language Specification)

    12345: int constant in decimal notation

    0xff: int constant in hexadecimal notation

    077: int constant in octal notation

    45.23: double constant

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 87

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Constant Numbers in Java

    (see Java Language Specification)

    12345: int constant in decimal notation

    0xff: int constant in hexadecimal notation

    077: int constant in octal notation

    45.23: double constant

    5432l: long constant in decimal notation

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 88

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Constant Numbers in Java

    (see Java Language Specification)

    12345: int constant in decimal notation

    0xff: int constant in hexadecimal notation

    077: int constant in octal notation

    45.23: double constant

    5432l: long constant in decimal notation

    0xffL: long constant in hexadecimal notation

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 89

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Constant Numbers in Java

    (see Java Language Specification)

    12345: int constant in decimal notation

    0xff: int constant in hexadecimal notation

    077: int constant in octal notation

    45.23: double constant

    5432l: long constant in decimal notation

    0xffL: long constant in hexadecimal notation

    077L: long constant in octal notation

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 90

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Useful Habit

    Use “L” (and not “l”) to indicate long literals:

    publ ic class Elementary {publ ic s t a t i c void main ( S t r i n g [ ] args ) {

    System . out . p r i n t l n (12345 + 5432L ) ;}

    }

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 91

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    New Puzzler: The Last Laugh

    What does the following program print?

    publ ic class LastLaugh {publ ic s t a t i c void main ( S t r i n g [ ] args ) {

    System . out . p r i n t l n ( ”H” + ” a ” ) ;System . out . p r i n t l n ( ’H ’ + ’ a ’ ) ;

    }}

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 92

  • HashingPriority Queues

    Puzzlers

    Last Puzzler: “It’s Elementary”New Puzzler: The Last Laugh

    Next Week

    Sorting, sorting, and more sorting!

    CS1102S: Data Structures and Algorithms 06 B: Hashing and Priority Queues 93

    HashingCollision Resolution StrategiesDouble HashingA Detail: Removal from Hash TableHash Tables in the Java API

    Priority QueuesMotivationBinary HeapsBasic Heap OperationsPriority Queues in Standard Library

    PuzzlersLast Puzzler: ``It's Elementary''New Puzzler: The Last Laugh