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