Arrays 获取邻接列表/矩阵中所有节点的所有邻居的复杂性
如果我想得到一个图中一个节点的所有邻居,如果该图存储在邻接矩阵中,时间复杂度是O(| V |),如果它保存在邻接列表中,时间复杂度也是O(| V |)。现在我在想,如果我不想得到一个节点的邻居,而是所有节点的邻居,这将如何改变。(注意:邻接列表包含数组和链表。每个数组项存储一个链表,其中每个数组项表示一个节点。链表中的每个节点表示一个相邻节点。) 我的思考过程如下: 在邻接矩阵中,我需要查看每个条目。因此,我的时间复杂度是O(| V | ^2)。 在邻接列表中,我需要查看每个数组条目,并查看它们各自的链接列表。我在想,这应该在O(| E |)中完成,因为我基本上只看所有的边Arrays 获取邻接列表/矩阵中所有节点的所有邻居的复杂性,arrays,algorithm,time-complexity,graph-theory,Arrays,Algorithm,Time Complexity,Graph Theory,如果我想得到一个图中一个节点的所有邻居,如果该图存储在邻接矩阵中,时间复杂度是O(| V |),如果它保存在邻接列表中,时间复杂度也是O(| V |)。现在我在想,如果我不想得到一个节点的邻居,而是所有节点的邻居,这将如何改变。(注意:邻接列表包含数组和链表。每个数组项存储一个链表,其中每个数组项表示一个节点。链表中的每个节点表示一个相邻节点。) 我的思考过程如下: 在邻接矩阵中,我需要查看每个条目。因此,我的时间复杂度是O(| V | ^2)。 在邻接列表中,我需要查看每个数组条目,并查看它们
我的想法正确吗?时间复杂度将是O(n+m),其中n=图中的顶点数&m=图中的边数。
您只需要应用BFS或DFS算法。这是邻接列表的情况,但OP对邻接矩阵复杂性的分析是正确的。在邻接矩阵的情况下,时间复杂性变为O(v^2)。准确地说。OP同时询问了这两个问题,而您的答案中缺少邻接矩阵分析。为了提供完整的答案,您还可以解释为什么邻接列表是
O(n+m)
,而不是简单的O(m)
。