我正在讨论一些图形算法(这不是家庭作业;我只是在复习算法和数据结构)并且我有一个问题。假设我有以下无向图:
var graph = {
9: [19, 26],
13: [19, 5],
17: [],
26: [11, 18],
18: [9],
19: [],
23: [24],
24: [],
11: [],
18: []
};
该图基本上如下所示:
该图中有多少个连通分量?从图表上看,似乎有 3 个组件。但是,如果我实际上实现了该算法(迭代每个顶点,如果该顶点未被发现,则使用该顶点作为起点执行bfs。此外,bfs 会将它遇到的任何顶点标记为已发现)。
如果我从 开始9
,我最终会发现以下节点:[19, 26, 11, 18]
. 但是,13
没有被发现,因为它不在19
的邻接列表中。但是,19
在13
的邻接列表中。这就是为什么我最终得到了一个额外的组件。
它是否正确?实际上是否有 4 个单独的组件,如果是,我对连接组件的理解是否错误?