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

การลบ Min Element ออกจาก Interval Heaps


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

ขั้นตอนนี้สามารถอธิบายได้ด้วยวิธีการดังต่อไปนี้ -

การกำจัดองค์ประกอบขั้นต่ำนั้นทำได้หลายวิธี -

  • เมื่อช่วงเวลาฮีปว่าง การดำเนินการ removeMin จะล้มเหลว
  • เมื่อช่วงฮีปมีองค์ประกอบเพียงองค์ประกอบเดียว ควรส่งคืนองค์ประกอบนี้ เราทิ้งช่วงฮีปไว้โดยไม่มีองค์ประกอบใดๆ
  • เมื่อมีองค์ประกอบมากกว่าหนึ่งรายการ ควรส่งคืนจุดสิ้นสุดด้านซ้ายของรูท จุดนี้ถูกกำจัดออกจากราก
  • หากรูทระบุโหนดสุดท้ายของช่วงฮีป ไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม
  • เมื่อโหนดสุดท้ายไม่ใช่โหนดรูท เราจะกำจัดจุดซ้าย p ออกจากโหนดสุดท้าย หากสิ่งนี้ทำให้โหนดสุดท้ายว่าง โหนดสุดท้ายจะไม่เป็นส่วนหนึ่งของฮีปอีกต่อไป
  • จุด p ที่ถูกกำจัดออกจากโหนดสุดท้ายจะถูกแทรกกลับเข้าไปในฮีปขั้นต่ำที่ฝังไว้โดยเริ่มต้นที่รูท
  • เมื่อเราเลื่อนลงมา อาจจำเป็นต้องแลกเปลี่ยน p ปัจจุบันกับจุดปลายด้านขวา r ของโหนดที่กำลังตรวจสอบเพื่อให้แน่ใจว่า p ≤r การแทรกซ้ำจะดำเนินการโดยใช้กลยุทธ์เดียวกับที่ใช้ในการแทรกลงในฮีปปกติอีกครั้ง