我一直在研究联通分量,并在维基百科上看到了这个描述:
计算图的连通分量可以使用广度优先搜索或深度优先搜索在线性时间内(以图的顶点和边数为单位)轻松完成。无论哪种情况,从某个特定的顶点v开始的搜索将在返回之前找到包含v的整个连通分量(且不超过),以寻找图的所有连通分量,请循环遍历其顶点,并在循环到达尚未包括在先前发现的连通分量中的顶点时启动新的广度优先或深度优先搜索。
这个操作的运行时间是多少?我已经看到有些来源说连接组件在O(n)时间内完成。然而,从我所知道的来看,在最坏的情况下,每个顶点都是它自己的连通分量,这个算法就必须执行n个DFS / BFS操作,每个操作本身都是O(n)时间。因此,这个操作的运行时间不应该是O(n^2)吗?
计算图的连通分量可以使用广度优先搜索或深度优先搜索在线性时间内(以图的顶点和边数为单位)轻松完成。无论哪种情况,从某个特定的顶点v开始的搜索将在返回之前找到包含v的整个连通分量(且不超过),以寻找图的所有连通分量,请循环遍历其顶点,并在循环到达尚未包括在先前发现的连通分量中的顶点时启动新的广度优先或深度优先搜索。
这个操作的运行时间是多少?我已经看到有些来源说连接组件在O(n)时间内完成。然而,从我所知道的来看,在最坏的情况下,每个顶点都是它自己的连通分量,这个算法就必须执行n个DFS / BFS操作,每个操作本身都是O(n)时间。因此,这个操作的运行时间不应该是O(n^2)吗?