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

วิธีการของ Brent ในโครงสร้างข้อมูล


ในส่วนนี้เราจะมาดูกันว่าวิธีของ Brent เกี่ยวข้องกับการแฮชแบบเปิดที่กล่าวถึงคืออะไร วิธีนี้เป็นแบบฮิวริสติก การดำเนินการนี้จะพยายามลดเวลาเฉลี่ยสำหรับการค้นหาที่ประสบความสำเร็จในตารางแฮชให้น้อยที่สุด

แต่เดิมวิธีนี้ใช้กับเทคนิคการแฮชแบบคู่ แต่วิธีนี้ใช้ได้กับเทคนิคการระบุที่อยู่แบบเปิดใดๆ เช่น การตรวจสอบเชิงเส้นและแบบกำลังสอง อายุขององค์ประกอบ x ถูกเก็บไว้ในตารางแฮชการกำหนดที่อยู่แบบเปิด ซึ่งเป็นค่าต่ำสุดของ i ดังนั้น x จะถูกวางไว้ที่ A[xi ]

วิธีของ Brent พยายามลดอายุรวมขององค์ประกอบทั้งหมด หากเราแทรกองค์ประกอบ x มันจะทำตามขั้นตอนบางอย่าง – เราจะพบค่าที่น้อยที่สุดของ i เช่นว่า A[xi ] ว่างเปล่า นี่คือที่ที่การกำหนดที่อยู่เปิดมาตรฐานจะแทรก x ตอนนี้ให้พิจารณาองค์ประกอบ y หนึ่งตัว ซึ่งเก็บไว้ที่ A[xi-2 ]. องค์ประกอบนี้ถูกเก็บไว้ที่นั่นเพราะ yj =xi-2 สำหรับค่า j ≥ 0 เราตรวจสอบว่าตำแหน่งอาร์เรย์ A[yj+1 ] ว่างเปล่า จากนั้นเราจะย้าย y ไปยังตำแหน่ง A[yj+1 ] และเก็บ x ไว้ที่ตำแหน่ง A[xi-2 ].

เมื่อเปรียบเทียบกับการกำหนดแอดเดรสแบบเปิดปกติแล้ว ค่านี้จะลดอายุทั้งหมดลง 1 ค่า โดยทั่วไป Brent's Method จะตรวจสอบค่า 2 ≤ k ≤ i แต่ละรายการ รายการอาร์เรย์ A[xi-k ] เพื่อดูว่าถ้าเก็บองค์ประกอบ y ไว้ที่นั่น สามารถย้ายไปยัง A[yj+1 ใดก็ได้ ], A[yj+2 ], . . ., A[yj+k-1 ] เพื่อให้มีที่ว่างสำหรับ x.