หลักการทำงาน ของ แฮชชิงคู่

1. กำหนดความกว้างของตารางแฮช และ ค่าที่ใช้เพื่อเลื่อนค่าจากตำแหน่งเดิม

2. กำหนดข้อมูลที่เราต้องการ อย่างตัวอย่างจะกำหนดให้คือ 26, 54, 94, 17, 31, 77, 44 และ 51 ความกว้างของตาราง คือ 13 ค่าที่ใช้เพื่อเลื่อนค่าจากตำแหน่งเดิม คือ 5

0123456789101112
NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNone

3. นำข้อมูลที่กำหนดให้มาคำนวณ โดย ข้อมูล ณ ตำแหน่งที่ Mod ความกว้างของตาราง ( k mod l e n g t h {\displaystyle k{\bmod {l}}ength} ) จะได้ 26 mod 3 = 0 {\displaystyle 26\mod 3=0} ซึ่งเป็นค่าในตำแหน่งของตารางแฮช แล้วทำต่อให้ครบทุกค่า

2654941731774451
0234512512

4. หาค่าการแฮชสองชั้นโดยใช้ ค่าที่ใช้เพื่อเลื่อนค่าจากตำแหน่งเดิม ลบกับ ข้อมูล ณ ตำแหน่งที่ Mod ค่าที่ใช้เพื่อเลื่อนค่าจากตำแหน่งเดิม  ( N − k mod N {\displaystyle N-k\mod N} ) จะได้ 5 − k mod 5 {\displaystyle 5-k\mod 5}

2654941731774451
41134314

5. นำค่าที่ได้ในข้อที่ 3 ไปใส่ยังตารางในข้อที่ 2

5.1 ค่า 26 ตำแหน่งที่ 0

0123456789101112
26NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNone

5.2 ค่า 54 ตำแหน่งที่ 2

0123456789101112
26None54NoneNoneNoneNoneNoneNoneNoneNoneNoneNone

5.3 ค่า 94 ตำแหน่งที่ 3

0123456789101112
26None5494NoneNoneNoneNoneNoneNoneNoneNoneNone

5.4 ค่า 17 ตำแหน่งที่ 4

0123456789101112
26None549417NoneNoneNoneNoneNoneNoneNoneNone

5.5 ค่า 31 ตำแหน่งที่ 5

0123456789101112
26None54941731NoneNoneNoneNoneNoneNoneNone

5.6 ค่า 77 ตำแหน่งที่ 12

0123456789101112
26None54941731NoneNoneNoneNoneNoneNone77

5.7 ค่า 44 ตำแหน่งที่ 5 (กรณีค่าที่ตำแหน่งทับกัน จะนำค่าจากตารางในข้อที่ 4 มา บวกกับ ค่าตารางที่ 1 จะได้ 5 + 1 แล้ว Mod ด้วยความกว้างของตารางแฮช จะเท่ากับ 6)

0123456789101112
26None54941731

44

NoneNoneNoneNoneNoneNone77

เมื่อได้ค่าเท่ากับ 6 แล้ว จะเป็นค่าตำแหน่งใหม่ที่ใส่ลงในตาราง

0123456789101112
26None54941731NoneNoneNoneNoneNoneNone77

ค่า 51 ตำแหน่งที่ 12 (กรณีค่าที่ตำแหน่งทับกัน จะนำค่าจากตารางในข้อที่ 4 มา บวกกับ ค่าตารางที่ 1 จะได้ 12 + 4 แล้ว Mod ด้วยความกว้างของตารางแฮช จะเท่ากับ 3)

0123456789101112
26None5494173144NoneNoneNoneNoneNone77

51

เมื่อได้ค่าเท่ากับ 3 แล้ว จะเป็นค่าตำแหน่งใหม่ที่ใส่ลงในตาราง แต่เมื่อกรณียังมีค่าในตารางให้นับเพิ่มอีก 3

0123456789101112
26None54

51

94173144NoneNoneNoneNoneNone77

กรณียังมีค่าในตารางให้นับเพิ่มอีก 3

0123456789101112
26None54941731

51

44NoneNoneNoneNoneNone77

กรณียังมีค่าในตารางให้นับเพิ่มอีก 3 แต่เมื่อเจอช่องที่ว่างเปล่า สามารถนำค่านั้นลงในตารางได้ทันที

0123456789101112
26None5494173144NoneNoneNoneNoneNone77