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

ตารางแฮชสำหรับกุญแจจำนวนเต็ม (Hash Tables for Integer Keys) ในโครงสร้างข้อมูล


นิยาม

ค่ากุญแจ x มาจาก Universe U โดยที่ U = {0, 1, ..., u-2, u-1} ฟังก์ชันแฮชคือ h โดเมนคือ U เรนจ์อยู่ในเซต {0, 1, ..., m-1} โดยที่ m ≤ u

Perfect Hash Function

ฟังก์ชันแฮช h ถูกเรียกว่า "Perfect Hash Function" สำหรับเซต S ⊆ U ถ้าสำหรับทุก x ∈ S ค่า h(x) เป็นเอกลักษณ์ (Unique) Perfect Hash Function h สำหรับ S จะเป็น "Minimal" ถ้า m = |S| ดังนั้น h จะเป็น bijection ระหว่าง S และ {0, 1, ..., m-1} Minimal perfect hash function นี้เหมาะสมที่สุด เพราะช่วยให้จัดเก็บองค์ประกอบทั้งหมดของ S ในอาร์เรย์เดียวขนาด n ได้

ข้อจำกัด

Perfect hash functions หายากมาก แม้ m จะใหญ่กว่า n มากก็ตาม หากแต่ละองค์ประกอบใน S ถูกแมปไปยังองค์ประกอบสุ่มใน {0, 1, ..., m-1} ตาม Birthday Paradox หาก m น้อยกว่า n² อย่างมาก จะเกือบแน่นอนว่ามีองค์ประกอบ 2 ตัวใน S ที่มีค่าแฮชเหมือนกัน