作者waterman815 ()
看板Grad-ProbAsk
標題[理工] binomial heap vs fibonacci heap
時間Fri Jan 23 18:04:56 2015
如題as title
這兩種資料結構總是搞得不清不楚QQ
google一些資料 看了一些書 也翻了洪兔的筆記
發現有些東西寫的不太一樣 想要求解
(時間複雜度有些是用分攤成本 有些是用平均成本)
自己做了一些小小統整但不確定是否正確
想請版上的大大指教一下
*Binomial heap 提供的服務 & time complexity
merge O(logn)
delete-min O(logn)
find-min O(logn)
insert x O(1) (分攤成本)
*Fibonacci heap 提供的服務 & time complexity
有看蔡欣穆老師的投影片
特別強調一點「除了delete min」其他都可達到O(1)
merge O(1) ---直接把tree合併起來
delete-min O(logn)
find-min O(1)
insert x O(1) ---放入forest中 不需同高度合併 把所有事情放
到之後再做
新增了 delete x O(logn) 因為delte x是將x當成是-無限大再將其
做delete min
decrease key O(1)
另外想要問
fibonacci heap是否不需要要求和binomial一樣的製作特性
例如B3 node數= 2^3這種特性
還有想要知道 fibonacci heap 以及 binomial heap 的主要應用會用在什麼地方??
搞得有點糊塗想詢問版上的大大 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.119.120.6
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1422007501.A.AED.html
→ kather: bp merge是O(1) 01/23 18:09
→ kather: bp insert不用分攤就是O(1) 01/23 18:10
→ kather: bp=binomial heap 應該要打bh = = 01/23 18:14
推 victor801120: 堆積的選擇,好像就是看你的演算法比較常使用哪些 01/23 20:40
→ victor801120: 操作? 01/23 20:40
推 victor801120: 像演算法課本上說Prim演算法用二元堆積需要O( E*lgV 01/23 20:43
→ victor801120: ),但用費式堆積會提升到O( E+ V*lgV )。 01/23 20:43
→ victor801120: 覺得搞糊塗+1 01/23 20:43
推 galapous: merge不是O(log n)嗎@@ 01/23 22:52
推 a95641126: 不是prim把是kruskal吧 01/24 11:05
推 galapous: 是prim喔 01/26 15:44