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

DEPQ ที่หลอมละลายได้


  • DEPQ ที่หลอมละลายได้ (MDEPQ) ถูกกำหนดให้เป็น DEPQ (Double Ended Priority Queue) ที่นอกเหนือจากการดำเนินการ DEPQ ที่ระบุไว้ข้างต้นแล้ว ยังรวมถึงการดำเนินการ meld(p, q) ... รวม DEPQs p และ q เข้าไว้ด้วยกัน DEPQ เดียว ผลลัพธ์ของการรวมคิวลำดับความสำคัญแบบสองปลาย p และ q เป็นคิวลำดับความสำคัญแบบดับเบิ้ลเอนด์เดี่ยวที่มีอิลิเมนต์ทั้งหมดของ p และ q การดำเนินการ Meld นั้นทำลายล้างเมื่อหลังจาก Meld p และ q ไม่ยังคงเป็น DEPQ ที่เป็นอิสระ
  • ในการรวม DEPQ สองรายการในเวลาน้อยกว่าเชิงเส้น จำเป็นที่ DEPQ จะต้องแสดงโดยใช้พอยน์เตอร์ที่ชัดเจน (แทนที่จะใช้ตัวชี้โดยปริยาย เช่น ในการแทนค่าอาร์เรย์ของฮีป) มิฉะนั้น จำนวนองค์ประกอบเชิงเส้นที่จำเป็นจะต้องย้ายจาก เริ่มต้นไปยังสถานที่สุดท้ายของพวกเขา
  • สามารถแสดงให้เห็นได้ว่าเมื่อแสดงฮีปคู่ต่ำสุด-สูงสุดในลักษณะดังกล่าว องค์ประกอบ (ขนาด n) DEPQ อาจรวมกับองค์ประกอบอื่น (ขนาด k) (โดยที่ k<=n) ใน O (log(n/k)*log k) เวลา
  • แสดงให้เห็นได้ว่าความซับซ้อนของการหลอมฮีปขนาด a และ b ต่ำสุด-สูงสุด 2 อันตามลำดับ คือ Ω(a + b)
  • การใช้งาน MDEPQ ที่อนุญาตให้ผู้ใช้คำนวณองค์ประกอบขั้นต่ำและสูงสุด แทรกองค์ประกอบ และรวมคิวลำดับความสำคัญสองรายการในเวลา O(1) เวลาที่ใช้ในการลบองค์ประกอบต่ำสุดหรือสูงสุดคือ O(log n)
  • สามารถแสดงให้เห็นได้ว่าทรีฝ่ายซ้ายอาจถูกดัดแปลงเพื่อให้ได้การแสดงแทน MDEPQ อย่างง่าย โดยที่ Meld กินเวลาลอการิทึม และการดำเนินการที่เหลือมีความซับซ้อนเชิง asymptotic เช่นเดียวกับเมื่อมีการนำการแสดง DEPQ ที่กล่าวมาข้างต้นไปใช้
  • เป็นเรื่องที่น่าสนใจที่จะทราบว่าหากเราใช้โครงสร้าง FMPQ (Fast Meldable Priority Queue) ที่เป็นโครงสร้าง MPQ พื้นฐาน เราก็จะได้รับโครงสร้าง MDEPQ การติดต่อสื่อสารทั้งหมดซึ่ง removeMax และ removeMin กินเวลาลอการิทึม และการดำเนินการที่เหลือจะใช้ค่าคงที่ เวลา. การปรับนี้ยอดเยี่ยมเมื่อเปรียบเทียบกับการปรับคิวที่มีลำดับความสำคัญคู่ เนื่องจากความต้องการพื้นที่เกือบครึ่งหนึ่ง นอกจากนี้ การปรับการโต้ตอบทั้งหมดจะเร็วกว่าการปรับคิวที่มีลำดับความสำคัญคู่