Prim的邻接矩阵实现可以使用最小堆吗?

时间:2015-07-03 04:37:33

标签: algorithm graph minimum-spanning-tree

我发现there are two ways to implement Prim algorithm,并且邻接矩阵的时间复杂度为O(V ^ 2),而堆和邻接列表的时间复杂度为O(E lg(V))。

我想知道在用邻接矩阵表示图形时我可以使用堆。是否有意义?如果是这样,邻接矩阵+堆和邻接列表+堆之间是否存在差异?

1 个答案:

答案 0 :(得分:4)

通常,矩阵图表示对于Prim算法来说并不是那么好。

这是因为算法的主要迭代,它从堆中弹出一个节点,然后扫描它的邻居。你怎么找到它的邻居?使用矩阵图表示,您基本上需要遍历整个矩阵行(在列表图表表示中,您只需要遍历节点列表,这可能会明显更短)。

这意味着,无论堆如何,只有找到弹出节点的邻居部分的总和已经是Ω(| V | 2 ,因为每个节点的行最终都会被扫描。

所以,不,它没有多大意义。堆不会降低整体复杂性。