This action might not be possible to undo. Are you sure you want to continue?

BooksAudiobooksComicsSheet Music### Categories

### Categories

Scribd Selects Books

Hand-picked favorites from

our editors

our editors

Scribd Selects Audiobooks

Hand-picked favorites from

our editors

our editors

Scribd Selects Comics

Hand-picked favorites from

our editors

our editors

Scribd Selects Sheet Music

Hand-picked favorites from

our editors

our editors

Top Books

What's trending, bestsellers,

award-winners & more

award-winners & more

Top Audiobooks

What's trending, bestsellers,

award-winners & more

award-winners & more

Top Comics

What's trending, bestsellers,

award-winners & more

award-winners & more

Top Sheet Music

What's trending, bestsellers,

award-winners & more

award-winners & more

P. 1

Chapter 8- Hashing|Views: 11|Likes: 0

Publicado porSanjay Jain

See more

See less

https://pt.scribd.com/doc/61417386/Chapter-8-Hashing

08/02/2011

text

original

Concept of Hashing

a hash table, or a hash map, is a data structure that associates keys (names) with values (attributes).

Example A small phone book as a hash table. .

Dictionaries Collection of pairs. (key. . value) Each pair has a unique key.

Just An Idea Hash table : Collection of pairs. Lookup function (Hash function) .

Each bucket has many slots. Each slot holds one record. A hash function f(x) transforms the identifier (key) into an address in the hash table . A hash table is partitioned into many buckets.Hashing Key-value pairs are stored in a fixed size table called a hash table.

b-1 . . .Hash table s slots 0 0 1 1 s-1 . . . . . . . b buckets . . . . . .

A bucket can normally hold only one dictionary pair. . element) is stored in its home bucket table[f[key]]. Each position of this array is a bucket.Ideal Hashing Uses an array table[0:b-1]. Uses a hash function f that converts each key k into an index in the range [0. Every dictionary pair (key. b-1].

c) (85.(33.e) (33.d) [4] [5] [6] [7] (72. b = 8 (where b is the number of positions in the hash table) Hash function f is key % b = key % 8 Where are the pairs stored? [0] [1] [2] [3] (3.(72.f) (22.(85.Ideal Hashing Example Pairs are: (22.f) Hash table is ht[0:7].(3.c).a).a) [0] [1] [2] [3] [4] [5] [6] [7] 9 .e).d).

What Can Go Wrong? .g) is already occupied by (33.e) (33.d) (85.c) (3.c) This situation is called collision Keys that have the same home bucket are called synonyms 25 and 33 are synonyms with respect to the hash function that is in use 10 .a) [0] [1] [2] [3] [4] [5] [6] [7] Where does (25.f) (22.g) go? The home bucket for (25.Collision (72.

f) (22.d) (85.e) (33. collisions and overflows occur together Need a method to handle overflows 11 .What Can Go Wrong? Overflow (72.a) [0] [1] [2] [3] [4] [5] [6] [7] A collision occurs when the home bucket for a new pair is occupied by a pair with different key An overflow occurs when there is no space in the home bucket for the new pair When a bucket can hold only one pair.c) (3.

Overflow: there is no space in the bucket for the new pair. . Overflow handling method.) Size (number of buckets) of hash table. To avoid collision (two different pairs are in the same the same bucket.Some Issues Choice of hash function.

.Choice of Hash Function Requirements easy to compute minimal number of collisions A good hashing function distributes the key values uniformly throughout the range.

Of Address = 100( 0 -99) Let m =97 H(3205) = 3205 mod 97 .Some hash functions Division: Choose a number m(PRIME number) larger than the number n of keys in K.g. 2345 & No. The Hash function H is defined by H(k) = K(mod m) E. K=3205. 7148.

. +kr e. x=12320324111220.203..Some hash functions Folding: Partition the key k into several parts.241.112. and add the parts together to obtain the hash address H(k) = k1+k2+ .20.. then return the address H(k)=123+203+241+112+20=699 . partition k into 123.g.

Then the Hsh function H is defined byH(k) = l Where l is obtained by deleting digits from both ends of k2 e.Some hash functions Mid Square: The key k is squared.g. K= 3205. k2 = 10 272 025 H(k) = 72 7148. E. 2345 .g.

Quadratic probing. element) is full. . Array linear list. Chain. We may handle overflows by: Search the hash table in some systematic fashion for a bucket that is not full.Overflow Handling An overflow occurs when the home bucket for a new pair (key. Rehashing Eliminate overflows by permitting each bucket to keep a list of all pairs for which it is the home bucket. Linear probing (linear open addressing).

.Linear probing (linear open addressing) Open addressing ensures that all elements are stored directly into the hash table. thus it attempts to resolve collisions using various methods. Linear Probing resolves collisions by placing the data into the next open slot in the table.

Home bucket = key % 17. 7. 23. 33. 0. 29. 11. 45 . 4 6 8 23 7 12 16 28 12 29 11 30 33 0 34 0 45 • Insert pairs whose keys are 6. 12. 28.Linear Probing – Get And Insert divisor = b (number of buckets) = 17. 34. 30.

while(strlen(ht[i]. i = hash_value = hash(item. element ht[]){ int i. } } ht[i] = item. } . exit(1).3) void linear_insert(element item. item. if (i == hash_value) { fprintf(stderr. hash_value.key.key). exit(1).key)) { if (!strcmp(ht[i]. “The table is full\n”). “Duplicate entry\n”).key)) { fprintf(stderr. } i = (i+1)%TABLE_SIZE.Linear Probing (program 8.

Problem of Linear Probing Identifiers tend to cluster together Increase the search time .

1. h..e. h+1..Quadratic Probing Quadratic probing uses a quadratic function of i as the increment (H(x)+i2)%b for H(K) = h For i = 0. 2 -----i.... h+ i2 .. h+4 ....

Rehashing Rehashing: Try H1. then a second hash function is calculated and combined with the first hash function. H(k. Hm in sequence if collision occurs. Here Hi is a hash function. i) = (H1(k) + i H2(k) ) % m . …. Double hashing is one of the best methods for dealing with collisions. H2. If the slot is full.

Data Structure for Chaining The idea of Chaining is to combine the linked list and hash table to solve the overflow problem. .

The chain may or may not be sorted by key 25 .Hashing with Chains Hash table can handle overflows using chaining Each bucket keeps a chain of all pairs for which it is the home bucket.

7.30.34.23.12.29. 33. 26 .0.45 Home bucket = key % 17. 28.11.Hash Table with Sorted Chains Put in pairs whose keys are 6.

- Leia e imprima sem anúncios
- Download to keep your version
- Edit, email or read offline

Are you sure?

This action might not be possible to undo. Are you sure you want to continue?

CANCEL

OK

You've been reading!

NO, THANKS

OK

scribd