Download presentation

Presentation is loading. Please wait.

Published byKaitlynn McClure Modified over 2 years ago

1
Hash Tables Dr. Li Jiang School of Computer Science, The University of Adelaide

2
Overview Hash Table Table ADT Direct addressing and its problem Hash Table Concept Hash Function Example of using a hash function Benefit and problem of using a hash function Hash table ADT operations Collision and collision resolution Examples: ADT operations and Using chaining approach to resolve collision

3
Learning Objectives By the end of this lecture, you should be able to: Understand and interpret the concepts of hash table and hash function. Define hash table function and hash table operations for solving simple problem Understand the collision and one of the collision resolution approaches – chaining approach Use chaining approach to solve collision problem

4
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example of A Table BHMBirmingham International Airport LGBLong Beach LAXLos Angeles International Airport OAKOakland IADWashington, Dulles International Airport HNLHonolulu International Airport BOSBoston, Logan International Airport ACYAtlantic City International Airport CLECleveland PDXPortland International Airport (Key, Value)

5
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example of A Table BHMBirmingham International Airport LGBLong Beach LAXLos Angeles International Airport OAKOakland IADWashington, Dulles International Airport HNLHonolulu International Airport BOSBoston, Logan International Airport ACYAtlantic City International Airport CLECleveland PDXPortland International Airport Key Associated Information (Airports name, or related information ) (cont.)

6
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example of A Table BHMBirmingham International Airport LGBLong Beach LAXLos Angeles International Airport OAKOakland IADWashington, Dulles International Airport HNLHonolulu International Airport BOSBoston, Logan International Airport ACYAtlantic City International Airport CLECleveland PDXPortland International Airport KeyAssociated Information 1 2 3 4 5 6 7 8 9 10 (cont.)

7
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples 7 Direct Addressing Suppose there are n objects required to store in the table: The range of keys is 0..n-1, each number is (uniquely mapped to) the address of a bucket in the table Keys are distinct The idea of the direct addressing: Table is represented with an array, e.g. airportInfo[0..n-1] Efficiency of the algorithms implementing the operations of Table ADT with direct addressing approach: Insert an object to the airport information table 1)airportInfo[i] = xif x airportInfo and key[x] = i 2)airportInfo[i] = NULL otherwise Insert operation takes O(1) time (no order requirement) Search operation takes O(n) time Delete operation takes O(n) time

8
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples 8 Advantages of Direct Addressing If number of objects and size of table is reasonably small: Direct Addressing is an efficient way to access the data It takes less time for any operation on direct addressing table.

9
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples 9 Problems with Direct Addressing When the size of table is very large: Using a table T of size N and N is a large number (e.g. >10000), using direct addressing may be impractical, given the memory available on a typical computer. The number of the objects actually stored may be so small relative to large space created. Thus, most of the space allocated for T would be wasted.

10
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example of A Table (cont.) BHMBirmingham International Airport LGBLong Beach LAXLos Angeles International Airport OAKOakland IADWashington, Dulles International Airport HNLHonolulu International Airport BOSBoston, Logan International Airport ACYAtlantic City International Airport CLECleveland PDXPortland International Airport Key Associated Information (Airports name, or related information )

11
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples 11 An Example of Table Assume that Data items of 400 airports needs to be processed. The key: Airport code with three letters, used to identify each airport. If direct addressing approach is used, Number of different three letter combinations will be 26 × 26 × 26 =17576 (possible number of airports) The fraction of actual keys (Buckets) needed: 400/17576=2.2% Percent of the memory allocated for table wasted, 97.8% Again, the operations on the table will take: O(1) to O(n) time Buckets The data item of one airport (cont.)

12
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples 12 Another Example Assume that: The information about 50 students in a class is to be stored in a table. The key is defined as 9 digit Student Identification Number, used to identify each student. If direct addressing approach is used, we will find that Number of possible keys with 9 digit number will be 10 9 The fraction of actual keys needed. 50/10 9, 0.000005% Percent of the memory allocated for table wasted, 99.999995% A better way is necessaryHash Table

13
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Hash Table The hash table is a table of elements that have keys, usually represented as (Key, Element) pair A hash function is used for locating a position in the table 13 Dictionary Can be any type of object h( key )Location of the object containing the key A hash table maps a huge set of possible keys into index of N buckets by applying a hash function to each hash code Key S, where S is usually a huge set of possible keys Notice : N s = Card |S|, N s is much larger than N, n is the actual number of objects that are processed Ideally, n =N or n=a× N +b where a and b is small number

14
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Hash Functions The input into a hash function is a key value The output from a hash function is an index of an array (hash table) where the object containing the key is located The most commonly used hash function is: h( hashCode ) = hashCode mod N Where the hashCode is the key of an element, N is the number of buckets that is actually used Notice that the hashCode is not often obvious, building a model to compute it is required.

15
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Examples of Hash Functions (1)h( k ) = k % 101 if k is an integer and it is the key for the associated element (2)What the hash function of the Airport Code will be for processing data items of up to 400 airports? One of the answers will be: h(Ariport_code) =p(fitstChar) × p(secondChar) × p(thirdChar)%400 p is a position function which maps a character to its position value Divisor is usually the size of the table, it is set to a prime when the keys contains a lot of 0s A B C D E F G H I J K L …… 1 2 3 4 5 6 7 8 9 10 11 12 …… h(CLE) =3 × 12 × 5%400=180 h(CLE)=?

16
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Hash Table ADT Operations Insert: to insert an element into a table Retrieve: to retrieve an element from the table Remove: to remove an element from the table Update: to update an element in the table Empty: to empty out the hash table 16

17
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Inserting an Object in A HashTable The following pseudo-code for the insert operation: public: bool insert( key, object) { 1. Compute the key's hash code. 2. Compute the hash function to determine the index of bucket. 3. Insert the object into the bucket's chain with the index of the bucket obtained from 2. } Insertion is done in O( 1 ) time Notice that here is bucket’s chain, instead of bucket.

18
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Inserting an Object in A HashTable An example of insert operation An element ( Cleveland ) is inserted into a hash table. (suppose we only need to deal with 101 big airports) 18 1 …… 80 …… 2 79 …… Buckets Cleveland h(CLE)=h(180)=180%101=79 What the hash function will be? h( k ) = k % 101 – To find where an element is to be inserted, use the hash function on its key – If the key value is 180, the element is to be stored in index 79 of the array – Insertion is done in O( 1 ) time

19
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples The Benefit of Using a Hash Function Using a hash table, we simply have a function which provides us with the index of the array where the object containing the key is located Other alternative is expensive If we have millions of objects with (key, values) structure, it may take a long time to search a regular array or a linked list for a specific part number (on average, we might compare 500,000 key values) 19

20
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples The Problem of Using a Hash Function Consider the hash function h( k ) = k % 100 20 a key value of 114 is used for a second object; the result of the hash function is 14, but index 14 is already occupied, – This is called a collision How do we solve this problem? Collision is the circumstance where several keys hash to the same bucket. This happens when: h( hashCode1 ) == h( hashCode2 ) Suppose that a key value of 214 is used for an object, and the object is stored at index 14

21
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples How are Collisions Resolved? The most popular way to resolve collisions is by chaining Instead of having an array of objects, we have an array of linked lists, each node of which contains an object An element is inserted by using the hash function -- the hash function provides an index of a linked list, and the element is inserted at the front of that (usually short) linked list When searching for an element, the hash function is used to get the correct linked list, then the linked list is searched for the key (with the element) If we had 500,000 keys, this approach is still much faster than comparing 500,000 keys with other approaches) 21 9 20 46 42 36 2 31 01234560123456 Note: The whole object is stored but only the key value is shown Value

22
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example of Searching an Object in A HashTable Pseudo-code for the retrieve (search, find) operation 22 A search for an element can be done in O( 1 ) time. The following pseudo-code for the retrieve (find) operation: public: bool retrieve( DataType & key) { 1. Hash the key find the hash code and compute hash function with the given key to obtain the index of the bucket. 2. Search through the linked list specified by the bucket index number. 3. If you find the entry with the right key you return it; otherwise return null. }

23
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example of HashTable Class template class HashTable { public: HashTable( int (*hf)(const DataType &), int s ); bool insert( const DataType & newObject ); // returns true if successful; // returns false if invalid index was returned from hash function bool retrieve( DataType & retrieved ); // retrieve the item for the given key bool remove( DataType & removed ); // remove the item for the given key bool update( DataType & updateObject ); // update the item for the given key void makeEmpty( ); // empty out the hash table private: Array > table; int (*hashfunc)(const DataType &); // pointer to hash function };

24
An Example of Using Chaining 24 01234560123456 A hash table which is initially empty. Every element is a LinkedList object. Only the start pointer of the LinkedList object is shown, which is set to NULL at the beginning. The hash function is: h( k ) = k % 7

25
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example of Using Chaining (cont.) 25 01234560123456 INSERT object with key 31 The hash function is: h( k ) = k % 7

26
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples An Example Using Chaining (cont.) 26 01234560123456 INSERT object with key 31 The hash function is: h( k ) = k % 7 h(31)=31 % 7= 3

27
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 27 Assumed that the hash function is: h( k ) = k % 7 31 01234560123456 Note: The whole object is stored but only the key value is shown

28
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 28 01234560123456 The hash function is: h( k ) = k % 7 INSERT object with key 9 31

29
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 29 01234560123456 INSERT object with key 9 9 % 7 = 2 31 The hash function is: h( k ) = k % 7

30
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 30 01234560123456 9 INSERT object with key 9 9 % 7 is 2 31 The hash function is: h( k ) = k % 7

31
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 31 01234560123456 INSERT object with key 36 36 % 7 is 1 9 31

32
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 32 01234560123456 36 INSERT object with key 36 36 % 7 is 1 9 31

33
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 33 01234560123456 INSERT object with key 42 36 9 31

34
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 34 01234560123456 INSERT object with key 42 42 % 7 is 0 36 9 31

35
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 35 01234560123456 42 INSERT object with key 42 42 % 7 is 0 36 9 31

36
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 36 01234560123456 INSERT object with key 46 42 36 9 31

37
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 37 01234560123456 INSERT object with key 46 46 % 7 is 4 42 36 9 31

38
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 38 01234560123456 46 INSERT object with key 46 46 % 7 is 4 42 36 9 31

39
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 39 01234560123456 INSERT object with key 20 46 42 36 9 31

40
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 40 01234560123456 INSERT object with key 20 20 % 7 is 6 46 42 36 9 31

41
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 41 01234560123456 20 INSERT object with key 20 20 % 7 is 6 46 42 36 9 31

42
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 42 01234560123456 INSERT object with key 2 20 46 42 36 9 31

43
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 43 01234560123456 INSERT object with key 2 2 % 7 is 2 20 46 42 36 9 31

44
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 44 01234560123456 COLLISION occurs !! INSERT object with key 2 2 % 7 is 2 20 46 42 36 9 31 But an object has been inserted in the location with index 2 of the linked list before Inserts the new element at the BEGINNING of the list How to resolve this?

45
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 45 01234560123456 INSERT object with key 2 2 % 7 is 2 20 46 42 36 9 31

46
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 46 01234560123456 INSERT object with key 2 2 % 7 is 2 20 46 42 36 9 31

47
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 47 01234560123456 INSERT object with key 2 2 % 7 is 2 20 46 42 36 9 31

48
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 48 01234560123456 INSERT object with key 2 2 % 7 is 2 20 46 42 36 9 31

49
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 49 01234560123456 9 INSERT object with key 2 2 % 7 is 2 20 46 42 36 2 31

50
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 50 01234560123456 INSERT object with key 24 9 20 46 42 36 2 31

51
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 51 01234560123456 INSERT object with key 24 24 % 7 is 3 9 20 46 42 36 2 31

52
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 52 01234560123456 INSERT object with key 24 24 % 7 is 3 9 20 46 42 36 2 31

53
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 53 01234560123456 INSERT object with key 24 24 % 7 is 3 9 20 46 42 36 2 31

54
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 54 01234560123456 INSERT object with key 24 24 % 7 is 3 9 20 46 42 36 2 31

55
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 55 01234560123456 INSERT object with key 24 24 % 7 is 3 9 20 46 42 36 2 31

56
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 56 01234560123456 31 INSERT object with key 24 24 % 7 is 3 9 20 46 42 36 2 24

57
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 57 01234560123456 e.g. FIND the object with key 9 31 9 20 46 42 36 2 24 Supposed that all objects were stored in the linked list. How to Find an object?

58
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 58 01234560123456 FIND the object with key 9 9 % 7 is 2 31 9 20 46 42 36 2 24

59
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 59 01234560123456 We search this linked list for the object with key 9 FIND the object with key 9 9 % 7 is 2 31 9 20 46 42 36 2 24

60
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 60 01234560123456 Remember…the whole object is stored, only the key is shown 31 9 20 46 42 36 2 24

61
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 61 01234560123456 Does this object contain key 9? 31 9 20 46 42 36 2 24

62
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 62 01234560123456 FIND the object with key 9 Does this object contain key 9? No, so go on to the next object. 31 9 20 46 42 36 2 24

63
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 63 FIND the object with key 9 Does this object contain key 9? 31 9 20 46 42 36 2 24 01234560123456

64
Table ADT Hash table concepts and Hash Function Hash table ADT Collision Collision resolution Examples Example Using Chaining (cont.) 64 01234560123456 Does this object contain key 9? YES, found it! Return the object. 31 9 20 46 42 36 2 24 FIND the object with key 9

65
Summary Hash Table Table ADT Direct addressing and its problem Hash Table Concept Hash Function Example of using a hash function Benefit and problem of using a hash function Collision and collision resolution Hash table ADT operations Examples: ADT operations and Using chaining approach to resolve collision

66
END Thank You ! Look Forward To Seeing You Again !

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google