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

คุณสมบัติการปรับตัวของเพียริงฮีป (Pairing Heaps)


เพียริงฮีปและคิวอันดับ (Priority Queue)

เพียริงฮีป (Pairing Heaps) ถูกนำมาใช้เพื่อการทำงานที่สมบูรณ์แบบของ คิวอันดับ (Priority Queue) คิวอันดับติดตามค่าต่ำสุดของชุดวัตถุ ทุกครั้งที่นำสิ่งของออกจากคิว จะได้ค่าต่ำสุดเสมอ คิวอันดับมักถูกใช้เมื่อนำ อัลกอริทึมของดิกสตรา (Dijkstra's Algorithm) ไปคำนวณเส้นทางสั้นที่สุดในกราฟ

ทำไมเพียริงฮีปจึง "สมบูรณ์แบบ"

  • เขียนโค้ดง่าย – โครงสร้างและการดำเนินการเข้าใจง่าย
  • ทำงานดีในแอปพลิเคชันจริง – มีประสิทธิภาพสูงในการใช้งานจริง
  • เวลาแบบแอมอร์ไทซ์ (Amortized Time) ดีเยี่ยม – แม้การดำเนินการแต่ละครั้งอาจใช้เวลานาน แต่ผลรวมตลอดวงจรชีวิตของคิวจะรวดเร็ว
  • ดีกว่าฟีโบนัชชีฮีปในหลายกรณี – เขียนง่ายกว่าและมักทำงานได้ดีกว่า

คุณสมบัติพื้นฐานของเพียริงฮีป

แต่ละฮีปเชื่อมโยงกับวัตถุหรือค่า และมีชุดของ ฮีปย่อย (child heaps) ค่าของวัตถุจะมากกว่า (หรือน้อยกว่า) ค่าของฮีปย่อยเสมอ (ขึ้นอยู่กับ min-heap หรือ max-heap)

การดำเนินการพื้นฐาน

min(heap) – หาค่าต่ำสุด

ฟังก์ชันนี้ง่ายมาก เพียงดูค่าที่อยู่บนสุด (root) ของฮีป

merge(heap1, heap2) – รวมฮีปสองตัว

นำฮีปที่มีค่ามากกว่าไปเป็นลูกของฮีปอีกตัว ฟังก์ชันนี้ทำงานได้รวดเร็ว