我正在阅读"算法设计"通过Eva Tardos和第3章,提到邻接矩阵的复杂度为O(n^2)
,而邻接列表具有O(m+n)
,其中m是边的总数,n是节点的总数。它说,在邻接列表的情况下,我们只需要每个节点的大小为m的列表。
在邻接列表的情况下,我们最终得到类似于矩阵的东西,因为我们有列表,也是一维数组。所以基本上我是O(m*n)
。请指导我。
答案 0 :(得分:4)
邻接矩阵为每对节点保留一个值(1/0),无论边缘是否存在,因此需要n*n
空间。
邻接列表仅包含现有边,因此其长度最多为边数(或边节数少于节点时的节点数)。
它表示如果是邻接列表,我们只需要大小列表 m为每个节点。
我认为你误解了这一部分。邻接列表不保存每个节点的大小m
列表,因为m
是整体边缘的数量。
在完全连接的图中,每对节点之间都有一条边,因此邻接列表和矩阵都需要n*n
的空间,但对于其他每种情况 - 邻接列表都会更小。