关联矩阵代替邻接矩阵

问题描述 投票:6回答:2

使用关联矩阵数据结构而不是更广泛的邻接矩阵,图表上的哪些问题更快(就big-O而言)?

algorithm math data-structures graph big-o
2个回答
7
投票

结构的空间复杂性是:

邻接:O(V ^ 2)发生率:O(VE)

结果是,如果有比边更多的顶点,则入射结构可以节省空间。

您可以查看一些典型图形操作的时间复杂度:

找到与顶点相邻的所有顶点:Adj:O(V)Inc:O(VE)

检查两个顶点是否相邻:Adj:O(1)Inc:O(E)

计算顶点的化合价:Adj:O(V)Inc:O(E)

等等。对于任何给定的算法,您可以使用上述构建块来计算哪种表示为您提供更好的总体时间复杂度。

最后要注意的是,除了最密集的图形之外,使用任何类型的矩阵对于除了最密集的图形以外的所有图形都是极其空间效率的。我建议不要使用其中任何一个,除非您有意识地驳回了邻接列表等替代方案。


3
投票

我个人从未在编程竞赛或研究问题中找到事件矩阵表示的真实应用。我认为这对于证明一些定理或一些非常特殊的问题可能是有用的。一本书给出了一个“计算生成树数”的例子,作为这种表示有用的问题。

这种表示的另一个问题是存储它是没有意义的,因为从边缘列表中动态计算它(以回答给定单元格包含的内容)非常容易。

然而,它在超图中似乎更有用,但只有它是密集的。

所以我的观点是 - 它只对理论工作有用。

© www.soinside.com 2019 - 2024. All rights reserved.