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

ตารางแฮชสำหรับคีย์จำนวนเต็มในโครงสร้างข้อมูล


ในที่นี้เราจะพูดถึงตารางแฮชที่มีคีย์จำนวนเต็ม ในที่นี้ค่าสำคัญ 𝑥 มาจากจักรวาล 𝑈 โดยที่ 𝑈 ={0, 1, … , 𝑢 – 2, 𝑢 – 1} ฟังก์ชันแฮชคือ ℎ โดเมนของฟังก์ชันแฮชนี้คือ 𝑈 ช่วงอยู่ในชุด {0, 1, … , 𝑚 – 1} และ 𝑚 ≤ 𝑢.

ฟังก์ชันแฮช h ได้รับการกล่าวขานว่าเป็นฟังก์ชันแฮชที่สมบูรณ์แบบสำหรับชุด 𝑆 ⊆ 𝑈 หากสำหรับทุก 𝑥 ∈ 𝑆 ℎ(𝑥) จะไม่ซ้ำกัน ฟังก์ชันแฮชที่สมบูรณ์แบบ ℎ สำหรับ 𝑆 มีค่าน้อยที่สุดถ้า 𝑚 =|𝑆| ดังนั้น ℎ จึงเป็นการแบ่งแยกระหว่าง S กับ {0, 1, … , 𝑚 – 1} เห็นได้ชัดว่าต้องมีฟังก์ชันแฮชที่สมบูรณ์แบบน้อยที่สุด เนื่องจากช่วยให้เราเก็บองค์ประกอบทั้งหมดของ S ไว้ในอาร์เรย์ความยาว n เดียวได้

น่าเสียดายที่ฟังก์ชันแฮชที่สมบูรณ์แบบนั้นหายากมาก แม้ว่า m จะมากกว่า n มากก็ตาม หากแต่ละองค์ประกอบใน S ถูกจับคู่อย่างสม่ำเสมอและเป็นอิสระกับองค์ประกอบสุ่มใน {0, 1, … , 𝑚 – 1} ดังนั้นตามความขัดแย้งของวันเกิดถ้า m น้อยกว่า n 2 มาก จากนั้นจะมีองค์ประกอบของ S อยู่ 2 อย่างซึ่งมีค่าแฮชเท่ากันเกือบแน่นอน