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

Fibonacci Heaps ในโครงสร้างข้อมูล


เช่นเดียวกับ Binomial heaps Fibonacci heaps คือกลุ่มของต้นไม้ พวกมันขึ้นอยู่กับกองทวินามอย่างหลวม ๆ ต้นไม้ในกอง Fibonacci ต่างจากต้นไม้ที่มีทวินามฮีป แต่ไม่ถูกจัดลำดับ

แต่ละโหนด x ใน Fibonacci heaps มีตัวชี้ p[x] ไปยังพาเรนต์ และตัวชี้ชายด์[x] ไปยังโหนดย่อยตัวใดตัวหนึ่ง ลูกของ x ถูกเชื่อมโยงเข้าด้วยกันในรายการเชื่อมโยงแบบทวีคูณแบบวงกลมที่เรียกว่ารายการย่อยของ x เด็ก y แต่ละคนในรายการย่อยมีตัวชี้ left[y] และ right[y] เพื่อชี้พี่น้องซ้ายและขวาของ y ตามลำดับ หากโหนด y เป็นเพียงลูกแล้ว left[y] =right[y] =y ลำดับที่พี่น้องปรากฏในรายการย่อยเป็นไปตามอำเภอใจ

ตัวอย่างของ Fibonacci Heap

Fibonacci Heaps ในโครงสร้างข้อมูล

Fibonacci Heap H นี้ประกอบด้วย Fibonacci Heaps ห้าตัวและโหนด 16 ตัว เส้นที่มีหัวลูกศรแสดงถึงรายการรูท โหนดขั้นต่ำในรายการแสดงด้วย min[H] ซึ่งถือ 4

อัลกอริธึมที่เร็วแบบไม่มีซีมโทติคสำหรับปัญหาต่างๆ เช่น การคำนวณต้นไม้ที่ทอดข้ามขั้นต่ำ การค้นหาแหล่งที่มาเดียวของเส้นทางที่สั้นที่สุด ฯลฯ ทำให้เกิดการใช้ Fibonacci heaps ที่จำเป็น