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

การแฮชด้วยวิธีหาร (Hashing by Division) ในโครงสร้างข้อมูล


ฟังก์ชันแฮชแบบหาร

ใช้ฟังก์ชันแฮช:

h(x) = x mod m

การจัดเก็บด้วย Chaining

ดูแลรักษาอาร์เรย์ A[0, ..., m-1] โดยแต่ละองค์ประกอบเป็นตัวชี้ไปยังหัวของ Linked List ลิสต์ Li ที่ชี้โดย A[i] จะเก็บองค์ประกอบ x ทั้งหมดที่ h(x) = i เทคนิคนี้เรียกว่า "Hashing by Chaining"

การดำเนินการ

  • Insert: คำนวณ i = h(x) แล้วเพิ่ม x เข้าไปในลิสต์ Li (O(1))
  • Search/Delete: หา i = h(x) แล้วเดินทางในลิสต์ Li จนพบค่าที่ต้องการหรือลิสต์หมด ใช้เวลาสัมพันธ์กับขนาดลิสต์ Li

กรณีแย่ที่สุดและการหลีกเลี่ยง

ถ้าเซต S มีค่า 0, m, 2m, 3m... nm ทุกค่าจะเก็บใน L0 ใช้เวลา Linear ในการค้นหา/ลบ แต่กรณีนี้เกิดขึ้นน้อยมาก

ถ้า S แจกแจงแบบ Uniform และ Independent ใน Universal Set U และ u เป็นพหุคูณของ m ขนาดคาดหมายของแต่ละลิสต์ Li คือ n/m การค้นหาและลบใช้เวลา O(1 + α)

คำแนะนำ: หลีกเลี่ยง m เป็นกำลังของ 2 ควรเลือก m เป็นจำนวนเฉพาะ (Prime) ที่ไม่ใกล้เคียงกับกำลังของ 2