Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Double Hashing ในโครงสร้างข้อมูล


เทคนิค Double Hashing

ใน Open Addressing ใช้ Ordinary Hash Function h'(x): U → {0,1,...,m-1} เมื่อชนกัน ใช้ Hash Function อีกตัวเพื่อหาที่ว่าง

$$h_{1}(x) = x \bmod m$$

$$h_{2}(x) = x \bmod m'$$

$$h(x,i) = (h_{1}(x) + i \cdot h_{2}(x)) \bmod m$$

i = 0, 1, ..., m-1 เริ่มจาก i=0 เพิ่มทีละ 1 จนกว่าจะว่าง ตอน i=0 แล้ว h(x,i) = h'(x)

ตัวอย่าง

ขนาดตาราง 20 (m=20) ข้อมูล: {96, 48, 63, 29, 87, 77, 48, 65, 69, 94, 61}

h₁(x) = x mod 20, h₂(x) = x mod 13

Double Hashing ในโครงสร้างข้อมูล

Hash Table

Double Hashing ในโครงสร้างข้อมูล