邻接矩阵的prim的MST算法的复杂性是否与线性搜索的邻接列表相同?

时间:2015-12-22 18:57:44

标签: algorithm graph time-complexity minimum-spanning-tree prims-algorithm

根据我的理解,堆的使用有助于在每次更改值时使用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数组进行图形表示所得到的结果。 那么为什么我们根据这个特定的算法使用2D数组表示呢?

e =边数。

n =节点数。

1 个答案:

答案 0 :(得分:2)

你是对的;在密集图上使用Prim的花式堆数据结构是没有意义的。然而,Prim的定义特征并不是尽可能便宜地反复扩展部分MST的想法。

邻接矩阵的意义在于空间(无指针开销)和架构原因(顺序访问通常比随机访问更有效)。