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

ฟังก์ชันแฮชและตารางแฮช


การแฮชเป็นกระบวนการสร้างค่าจากข้อความหรือรายการตัวเลขโดยใช้ฟังก์ชันทางคณิตศาสตร์ที่เรียกว่าฟังก์ชันแฮช มีฟังก์ชันแฮชจำนวนมากที่ใช้แป้นตัวเลขหรือตัวอักษรและตัวเลข ฟังก์ชันแฮชต่างๆ แสดงไว้ด้านล่าง:

ฟังก์ชันแฮช

ต่อไปนี้คือฟังก์ชันแฮชบางส่วน -

วิธีการหาร

นี่เป็นวิธีที่ง่ายที่สุดในการสร้างฟังก์ชันแฮช ฟังก์ชันแฮชสามารถอธิบายได้ว่า −

h(k) = k mod n

ในที่นี้ h(k) คือค่าแฮชที่ได้จากการหารค่าคีย์ k ด้วยขนาดของตารางแฮช n โดยใช้เศษที่เหลือ ดีที่สุดคือ n เป็นจำนวนเฉพาะเนื่องจากทำให้แน่ใจว่ามีการกระจายคีย์ที่มีความสม่ำเสมอมากขึ้น

ตัวอย่างของวิธีการหารมีดังนี้ −

k=1276
n=10
h(1276) = 1276 mod 10
= 6

ค่าแฮชที่ได้รับคือ 6

ข้อเสียของ id วิธีการหารที่คีย์ที่ต่อเนื่องกันจะจับคู่กับค่าแฮชที่ต่อเนื่องกันในตารางแฮช ส่งผลให้ผลงานไม่ดี

วิธีการคูณ

ฟังก์ชันแฮชที่ใช้สำหรับวิธีการคูณคือ −

h(k) = floor( n( kA mod 1 ) )

ในที่นี้ k คือคีย์ และ A สามารถเป็นค่าคงที่ใดๆ ระหว่าง 0 ถึง 1 ทั้ง k และ A ถูกคูณและแยกส่วนของเศษส่วน จากนั้นคูณด้วย n เพื่อให้ได้ค่าแฮช

ตัวอย่างของวิธีการคูณมีดังนี้ −

k=123
n=100
A=0.618033
h(123) = 100 (123 * 0.618033 mod 1)
= 100 (76.018059 mod 1)
= 100 (0.018059)
= 1

ค่าแฮชที่ได้รับคือ 1

ข้อดีของวิธีการคูณคือสามารถใช้ได้กับค่า A ใดๆ แม้ว่าค่าบางค่าจะถือว่าดีกว่าค่าอื่นๆ

วิธีมิดสแควร์

วิธีกำลังสองกลางเป็นฟังก์ชันแฮชที่ดีมาก มันเกี่ยวข้องกับการยกกำลังค่าของคีย์แล้วแยกตัวเลข r ตรงกลางเป็นค่าแฮช ค่าของ r สามารถตัดสินใจได้ตามขนาดของตารางแฮช

ตัวอย่างของวิธี Mid Square มีดังนี้ −

สมมติว่าตารางแฮชมีตำแหน่งหน่วยความจำ 100 ตำแหน่ง ดังนั้น r=2 เพราะต้องใช้ตัวเลขสองหลักในการแมปคีย์กับตำแหน่งหน่วยความจำ

k = 50
k*k = 2500
h(50) = 50

The hash value obtained is 50

ตารางแฮช

ตารางแฮชเป็นโครงสร้างข้อมูลที่จับคู่คีย์กับค่าต่างๆ ใช้ฟังก์ชันแฮชในการคำนวณดัชนีสำหรับคีย์ข้อมูล และคีย์ถูกจัดเก็บไว้ในดัชนี

ตัวอย่างของตารางแฮชมีดังนี้ −

ลำดับคีย์ที่ต้องเก็บไว้ในตารางแฮชคือ −

35 50 11 79 76 85

ฟังก์ชันแฮช h(k) ที่ใช้คือ:

h(k) = k mod 10

การใช้โพรบเชิงเส้น ค่าจะถูกเก็บไว้ในตารางแฮชเป็น -

ฟังก์ชันแฮชและตารางแฮช