Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 获取邻接列表/矩阵中所有节点的所有邻居的复杂性_Arrays_Algorithm_Time Complexity_Graph Theory - Fatal编程技术网

Arrays 获取邻接列表/矩阵中所有节点的所有邻居的复杂性

Arrays 获取邻接列表/矩阵中所有节点的所有邻居的复杂性,arrays,algorithm,time-complexity,graph-theory,Arrays,Algorithm,Time Complexity,Graph Theory,如果我想得到一个图中一个节点的所有邻居,如果该图存储在邻接矩阵中,时间复杂度是O(| V |),如果它保存在邻接列表中,时间复杂度也是O(| V |)。现在我在想,如果我不想得到一个节点的邻居,而是所有节点的邻居,这将如何改变。(注意:邻接列表包含数组和链表。每个数组项存储一个链表,其中每个数组项表示一个节点。链表中的每个节点表示一个相邻节点。) 我的思考过程如下: 在邻接矩阵中,我需要查看每个条目。因此,我的时间复杂度是O(| V | ^2)。 在邻接列表中,我需要查看每个数组条目,并查看它们

如果我想得到一个图中一个节点的所有邻居,如果该图存储在邻接矩阵中,时间复杂度是O(| V |),如果它保存在邻接列表中,时间复杂度也是O(| V |)。现在我在想,如果我不想得到一个节点的邻居,而是所有节点的邻居,这将如何改变。(注意:邻接列表包含数组和链表。每个数组项存储一个链表,其中每个数组项表示一个节点。链表中的每个节点表示一个相邻节点。)

我的思考过程如下:

在邻接矩阵中,我需要查看每个条目。因此,我的时间复杂度是O(| V | ^2)。 在邻接列表中,我需要查看每个数组条目,并查看它们各自的链接列表。我在想,这应该在O(| E |)中完成,因为我基本上只看所有的边


我的想法正确吗?

时间复杂度将是O(n+m),其中n=图中的顶点数&m=图中的边数。
您只需要应用BFS或DFS算法。

这是邻接列表的情况,但OP对邻接矩阵复杂性的分析是正确的。在邻接矩阵的情况下,时间复杂性变为O(v^2)。准确地说。OP同时询问了这两个问题,而您的答案中缺少邻接矩阵分析。为了提供完整的答案,您还可以解释为什么邻接列表是
O(n+m)
,而不是简单的
O(m)