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

Robin-Hood Hashing ในโครงสร้างข้อมูล


ในส่วนนี้เราจะมาดูกันว่าโครงการ Robin-Hood Hashing คืออะไร การแฮชนี้เป็นหนึ่งในเทคนิคของการกำหนดที่อยู่แบบเปิด วิธีนี้จะพยายามทำให้เวลาในการค้นหาขององค์ประกอบเท่ากันโดยใช้กลยุทธ์การแก้ปัญหาการชนที่ยุติธรรมยิ่งขึ้น ในขณะที่เรากำลังพยายามแทรก หากเราต้องการแทรกองค์ประกอบ x ที่ตำแหน่ง xi และมีองค์ประกอบ y อยู่ที่ yj แล้ว =xผม แล้วน้องของสององค์ประกอบต้องเดินหน้าต่อไป ดังนั้นหาก i ≤ j เราจะพยายามแทรก x ที่ตำแหน่ง xi+1 , xi+2 และอื่นๆ มิฉะนั้นเราจะเก็บ x ไว้ที่ตำแหน่ง xi และลองแทรก y ที่ตำแหน่ง yj+1 , yj+2 เป็นต้น

ตามที่ Devroye และคณะ แสดงว่าหลังจากทำการแทรก n รายการบนตารางว่างในตอนแรกซึ่งมีขนาด 𝑚 =Α𝑛 โดยใช้อัลกอริธึมการแทรก Robin-Hood ค่าที่คาดหวังของเวลาในการค้นหากรณีที่เลวร้ายที่สุดคือ −

$$E[W]=\Theta(log\:log\:n)$$

และขอบก็แน่น ดังนั้นอัลกอริธึมนี้จึงเป็นรูปแบบของการกำหนดที่อยู่แบบเปิดซึ่งมีเวลาในการค้นหากรณีที่เลวร้ายที่สุดแบบลอการิทึมสองเท่า