【发布时间】:2016-03-29 02:52:54
【问题描述】:
根据我的理解,堆的使用有助于通过每次更改值时log n 的额外工作来找到最小值的恒定成本。值的变化最多可以发生e 次。时间复杂度约为O(e) + O(e log n) = O(e log n)。
如果是稠密图,e = n^2。
但是如果我们在value array 上使用线性搜索来搜索最小值,我们将得到O(e) + O(n^2) = O(n^2) 的复杂度,这比elog n 的稠密图要好。这类似于我们在 prim 的 MST 算法中使用 2D 数组进行图形表示。
那我们为什么要为这个特定的算法使用二维数组表示呢?
e = 边数。
n = 节点数。
【问题讨论】:
标签: algorithm graph time-complexity minimum-spanning-tree prims-algorithm