මෙහිදී අප collide වන elements
store කිරීම සඳහා වෙනම list
එකක් හෝ table එකක් සූදානම්
කරගෙන තබා ගනියි . එය bucket එක ලෙස
හඳුන්වයි. Collide වන elements
link එකක් තබාගෙන bucket එකට add
කිරීම සිදු කරයි.
Hash Table Organization
Perfect Hashing
Worste case එකද O(1)
ට සමාන වන පරිදි hash table එකක්
ගොඩනැගිය හැකිනම් එයට perfect hashing යැයි කියනු
ලැබේ. මෙහිදී hash table එකේ collisions
වැලැක්වීම සඳහා හැම slot එකකටම තවත් hash
table එක බැගින් සම්බන්ධ කිරීම කරනු ලැබේ. මෙහිදී
ප්රධාන hash table එක primary
hash table ලෙසද අනිත් hash table එක secondary hash
table (Sj) ලෙසද
හඳුන්වනු ලබයි.
මෙහිදී collision විසදාගනු
ලබන hash function එක outer
hash function ලෙස හදුන්වනු ලබයි. එය පහත ලෙස නිර්මාණය
කරයි.
h(k) = ( ( ak + b ) mod p )
මෙහි p යනු key values වලට වඩා
විශාල වන ඕනෑම ප්රථමක (prime ) සංඛ්යාවකි.
Sj hash table එකේ j වන slot
එකට ලැබෙන සියලුම keys ගබඩා කරගනියි. එම
hash table එකෙහි size ඒක mj ලෙස
ගනිමු.
එවිට secondary hash function එක ,
hj(k) = ( ( aj k + bj
) mod p ) mod mj
ලෙස වෙයි.
මෙහිදී secondary level එකේදී collisions
ඇති නොවන පරිදි hash function එක
තෝරාගැනීම වැදගත් වෙයි.
Deletion
· Chaining method එකේදී link
list එකේ ඇති element එක delete
කිරීම මගින් අදාළ element එක delete
කළ හැක.හේතුව chaining වලදී නිතරම collision
එක ඇතිවූ slot එකේ සිට element
එක ඇත්තටම store කළ ඇති slot
එකට link එකක්
තබාගැනීමයි.
·Table එකක ඇති element
එකක් delete කළ පසු එය empty
බවට mark එකක් තැබිය
හැක.එවිට නැවත item එකක් insert
කිරීමට search කරගෙන යනවිට
අදාළ slot එක empty
slot එකක් ලෙස පෙන්වයි. නමුත් මෙහිදී කලින් store
කර තිබූ item එක delete
වීමක් සිදු නොවන අතර සිදු වන්නේ එම item
එක උඩින් අලුත් item එක store
වීමක් (overwrite) පමණි.
· විශාල items
ප්රමාණයක් delete කිරීම search
time එක වැඩි කරන අතර delete
කරන ලද items test කිරීමට
සිදුවීම එයට හේතුවයි.
·එම නිසා
එලෙස items විශාල ප්රමාණයක්
delete කර පසු table එක නැවතත්
හිස්කිරීමක් පිරිසිදු කිරීමක් සිදු කලයුතුවෙයි.
No comments:
Post a Comment