[英]Is there a standard Java implementation of a Fibonacci heap?
我正在研究不同類型的堆數據結構。
Fibonacci堆似乎具有更好的最壞情況復雜度(1)插入,(2)刪除和(2)找到最小元素。
我發現在Java中有一個類PriorityQueue
是一個平衡的二進制堆。 但為什么他們不使用Fibonacci堆?
另外, java.util
是否有Fibonacci堆的實現?
謝謝!
不,標准Java集合API不包含Fibonacci堆的實現。 我不確定為什么會這樣,但我相信這是因為雖然斐波那契堆在分攤意義上是漸近的,但它們在實踐中有很大的常數因素。 集合框架也沒有二進制堆,這將是另一個要包含的好堆。
作為一個完全無恥的自我插件,我在我的個人網站上用Java實現了Fibonacci堆 。 我不確定它會有多大用處,但是如果你很想知道它是如何工作的,我認為它可能是一個很好的起點。
希望這可以幫助!
但為什么他們不使用Fibonacci堆?
我認為主要原因是因為當你有更多的reduceKey操作連接到一個extractMin操作時,Fibonacci堆只能提供幫助。 例如,當您使用Dijkstra算法時。
另外,Java.util中是否有Fibonacci堆的實現?
Java.util中沒有實現,但我使用Fibonacci堆的現有開源版本對此主題進行了一些實驗。 您可以在我的博客或項目的GitHub存儲庫中找到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.