You are on page 1of 11

Prepared by : Ramzi Alqrainy

Designing hash functions Analysis of Hashing Method

3 7

Implementation of Alqrainy`s Function 8


A Hash function is any well-defined procedure or mathematical function which converts a large, possibly variable-sized amount of data into a small datum, usually a single integer that may serve as an index into an array. The values returned by a hash function are called hash values, hash codes, hash sums, or simply hashes.

Hash functions are mostly used to speed up table lookup or data comparison tasks — such as finding items in a database, detecting duplicated or similar records in a large file, finding similar stretches in DNA sequences, and so on.

The basic idea in hashing is to take a field in a record, known as the key, and convert it through some fixed process (Hashing Function) to a numeric value (Hash Value) in the range of 0…m-1 , where m is the table size.


* Designing hash functions
A good has function satisfies the assumption of simple uniform hashing: each key is equally likely to hash to any of the m slots, independently of where any other key has hashed to. * Hashing By Division * Hashing By Multiplication * Hashing By Mid-Square

* The division method The division method involves mapping k into the ith slot where i is the remainder when k is divided by the number of slots, m. That is, the hash function is: h(k) = k mod m With these conventions, let us write a method in C++ to hash the key and returning a

hash value by division method. * This code is a part from "Ramzi Code" in page 7



* The multiplication method
The multiplication method for creating hash functions operates in two steps. 1.Multiply the key k by a constant A in the range 0 < A < 1 and extract the fractional part of kA. 2. Multiply this value by m and take the floor of the result. In short the hash function is:

* The Mid-Square Method The key K is squared, then the hash function h is defined by: h(k)=L Where L is obtained by deleting digits from both ends of k2


** Alqrainy`s function
In this assignment, I have developed my own function (called "Alqrainy's function") to minimize the collision when using Hashing table. Fig-1 describes Alqrainy's function.

Alqrainy(k)=[k+(hash_size*3)/7] mod hash_size

Fig-1 Where k = key, hash_size = hash table size.


In order to give a picture of number of collision , five experiments have been done using four methods. These methods are (Division, Multiplication,Mid-Sqaure , Alqrainy), the results of the experiments are shown in figure-2

This code to generate the distinct random number.


* Analysis of Hashing Method

exp5 exp4 exp3 exp2 exp1 0
exp1 Alqrainy Mid-Square Multiplication Division 52 68 57 63

Alqrainy Mid-Square Multiplication Division

exp2 55 71 62 56

exp3 62 65 67 64

exp4 65 72 71 65

exp5 59 68 58 57

ff Fig-2

As shown in figure 2 the relationship between the Alqrainy's function and the number of the collision has achieved good result a mong other methods
The code of the Alqrainy's function is described below.


Implementation of Alqrainy`s Function in C++



10 | P a g e HASHING

11 | P a g e HASHING