PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Grad-ProbAsk
[理工] 105台大電機 非選4 參考答案
作者:
jimmylin1024
(wiseman)
2020-12-12 11:38:21
板上沒找到解答 就自己寫了一個 希望可以拋磚引玉 想問板上大神們有沒有想到時間複雜度更低的解法呢?
題目如下:
https://i.imgur.com/ncMbVkF.jpg
參考解答:
https://i.imgur.com/sHvMN1T.jpg
作者:
CSGD
(BinYu)
2020-12-12 12:48:00
如果用min heap, find-min可以降到O(1), build可以降到O(n)不過我是用nxn matrix, min另存, 這樣每次更新需檢查2n-1個entry
作者:
mathtsai
(mathtsai)
2020-12-12 12:52:00
1.建好n^2個f(x,y) -> O(n^2)2.用這n^2個元素建立heap -> O(n^2)3.m次操作 會更動m*(2n-1)個decrease-key -> O(mnlgn)
作者:
CSGD
(BinYu)
2020-12-12 13:06:00
我nxn沒有建heap, 只有存matrix, 每次改值只在更動到的(2n-1)個entry找最小和目前的min比, 我自己推是O(mn), 還是哪裡想錯了呢QQ
作者:
mathtsai
(mathtsai)
2020-12-12 13:12:00
matrix一開始用完就丟進heap裡了 要改都在heap改
作者:
CSGD
(BinYu)
2020-12-12 13:16:00
所以我沒有要建heap...只是2d array
作者:
mathtsai
(mathtsai)
2020-12-12 13:35:00
C大 m次更動中有可能改到最小的元素 這樣要怎麼找min?
作者:
CSGD
(BinYu)
2020-12-12 13:51:00
對...那應該還是要用n個heap才對,感謝!
作者:
joywilliamjo
(joywilliamjoy)
2020-12-12 14:23:00
我是寫建立min-heap欸,這樣找min都是O(1),n個就O(n),insert/delete也是O(nlgn)
作者:
asd3136396
(新化王陽明)
2020-12-12 14:41:00
我的想法是先建出nxn的元素然後放進Fibonacci heap O(n^2)更改一次decrease-key O(2n-1)共m次O(mn)total(n^2+mn)這樣想不知道有沒有錯
作者:
jimmylin1024
(wiseman)
2020-12-12 15:02:00
感謝各位大大!a大用Fibonacci Heap時間複雜度沒錯。 原本我卡的點是在做decrease key之前要先search這個element ,會是O(n),所以才轉而可慮用AVL。不過後來想到可以用hashmap 來記錄各個點的在heap中index 位置,這樣Fibonacci 的decrease key就可以amortize O(1)整體time complexity 就會是O(n^2)m更新的話就會是O(mn)
作者:
mathtsai
(mathtsai)
2020-12-12 23:12:00
喔喔 Fibonacci heap時間當然快(?
繼續閱讀
[理工] 計組 下冊(p.71)
ThereisBear
Re: [理工] 台大107資演 圖論題
joywilliamjo
[理工] 105台大電機丙資結
niceperson
[理工] 107 台大電機丙 資結 是非題
joywilliamjo
[理工] 台大電機103資結 對答案
jimmylin1024
資料結構各種樹的時間複雜度
LaLaplace
[理工] 演算法ford-Fulkerson 觀念
qazwsxedc597
[理工] 103中央 演算法
bobo1004
[理工] 100 交大 Floyd-Warshall 負weight cycle
booowei1203
[理工] 線代 函數唯一性
aa871220
Links
booklink
Contact Us: admin [ a t ] ucptt.com