The Algorithm Design Manual Second Edition



Download 5,51 Mb.
Pdf ko'rish
bet89/488
Sana31.12.2021
Hajmi5,51 Mb.
#273936
1   ...   85   86   87   88   89   90   91   92   ...   488
Bog'liq
2008 Book TheAlgorithmDesignManual

3.7.1

Collision Resolution

No matter how good our hash function is, we had better be prepared for collisions,

because two distinct keys will occasionally hash to the same value. Chaining is the

easiest approach to collision resolution. Represent the hash table as an array of m

linked lists, as shown in Figure

3.9.


The ith list will contain all the items that hash

to the value of i. Thus search, insertion, and deletion reduce to the corresponding

problem in linked lists. If the keys are distributed uniformly in a table, each list

will contain roughly n/m elements, making them a constant size when m



≈ n.

Chaining is very natural, but devotes a considerable amount of memory to

pointers. This is space that could be used to make the table larger, and hence the

“lists” smaller.

The alternative is something called open addressing. The hash table is main-

tained as an array of elements (not buckets), each initialized to null, as shown in

Figure

3.10.


On an insertion, we check to see if the desired position is empty. If so,


90

3 .


D A T A S T R U C T U R E S

Figure 3.9: Collision resolution by chaining

1        2      3       4       5      6       7        8      9      10     11   

X

X



X

X

X



Figure 3.10: Collision resolution by open addressing

we insert it. If not, we must find some other place to insert it instead. The simplest

possibility (called sequential probing) inserts the item in the next open spot in the

table. If the table is not too full, the contiguous runs of items should be fairly

small, hence this location should be only a few slots from its intended position.

Searching for a given key now involves going to the appropriate hash value and

checking to see if the item there is the one we want. If so, return it. Otherwise we

must keep checking through the length of the run.

Deletion in an open addressing scheme can get ugly, since removing one element

might break a chain of insertions, making some elements inaccessible. We have no

alternative but to reinsert all the items in the run following the new hole.

Chaining and open addressing both require O(m) to initialize an m-element

hash table to null elements prior to the first insertion. Traversing all the elements

in the table takes O(m) time for chaining, because we have to scan all m

buckets looking for elements, even if the actual number of inserted items is small.

This reduces to O(m) time for open addressing, since must be at most m.

When using chaining with doubly-linked lists to resolve collisions in an m-

element hash table, the dictionary operations for items can be implemented in

the following expected and worst case times:

Hash table

Hash table

(expected)

(worst case)

Search(Lk)



O(n/m)

O(n)

Insert(Lx)



O(1)

O(1)

Delete(Lx)



O(1)

O(1)

Successor(Lx)



O(m)

O(m)

Predecessor(Lx)



O(m)

O(m)

Minimum(L)



O(m)

O(m)

Maximum(L)



O(m)

O(m)


3 . 7

H A S H I N G A N D S T R I N G S



91

Pragmatically, a hash table is often the best data structure to maintain a dic-

tionary. The applications of hashing go far beyond dictionaries, however, as we will

see below.




Download 5,51 Mb.

Do'stlaringiz bilan baham:
1   ...   85   86   87   88   89   90   91   92   ...   488




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish