关联矩阵代替邻接矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关联矩阵代替邻接矩阵相关的知识,希望对你有一定的参考价值。

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

答案

结构的空间复杂性是:

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

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

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

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

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

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

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

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

另一答案

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

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

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

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

以上是关于关联矩阵代替邻接矩阵的主要内容,如果未能解决你的问题,请参考以下文章

PAT1013. Battle Over Cities(邻接矩阵邻接表分别dfs)

数据结构:图的实现--邻接矩阵

机器学习|数学基础Mathematics for Machine Learning系列之图论:图的矩阵表示

数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)

数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)

数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)