邻接矩阵和邻接列表的时间/空间复杂度

时间:2015-09-16 12:12:59

标签: algorithm graph

我正在阅读"算法设计"通过Eva Tardos和第3章,提到邻接矩阵的复杂度为O(n^2),而邻接列表具有O(m+n),其中m是边的总数,n是节点的总数。它说,在邻接列表的情况下,我们只需要每个节点的大小为m的列表。

在邻接列表的情况下,我们最终得到类似于矩阵的东西,因为我们有列表,也是一维数组。所以基本上我是O(m*n)。请指导我。

1 个答案:

答案 0 :(得分:4)

邻接矩阵为每对节点保留一个值(1/0),无论边缘是否存在,因此需要n*n空间。

邻接列表仅包含现有边,因此其长度最多为边数(或边节数少于节点时的节点数)。

  

它表示如果是邻接列表,我们只需要大小列表   m为每个节点。

我认为你误解了这一部分。邻接列表保存每个节点的大小m列表,因为m是整体边缘的数量。

在完全连接的图中,每对节点之间都有一条边,因此邻接列表和矩阵都需要n*n的空间,但对于其他每种情况 - 邻接列表都会更小。