win*_*ith 6 algorithm pseudocode time-complexity graph-algorithm
如何使用BFS或DFS算法设计算法以确定非连通图的连通分量,该算法必须能够表示每个连通分量的顶点集.
这是我的方法:
1)将所有顶点初始化为未访问.
2)从任意顶点开始对图进行DFS遍历v.如果DFS遍历不访问所有顶点,则返回false.
3)反转所有弧(或找到图的转置或反转)
4)在反转图中将所有顶点标记为未访问.
5)从相同的顶点v开始执行反向图的DFS遍历(与步骤2相同).如果DFS遍历不访问所有顶点,则返回false.否则返回true.
这个想法是,如果每个节点都可以从顶点v到达,并且每个节点都可以到达v,那么图形就是强连接的.在步骤2中,我们检查是否可以从v到达所有顶点.在步骤4中,我们检查所有顶点是否都可以到达v(在反向图中,如果所有顶点都可以从v到达,那么所有顶点都可以到达原始图中的v).
知道如何改进这个解决方案吗?
怎么样
vertices=输入results=空列表vertices:
SS。vertices并将其添加到S.Sresultsresults完成后,您将获得一个顶点集列表,其中每个集合都是通过从某个顶点进行图形搜索而组成的(使每个集合中的顶点相互连接)。假设一个无向图,这应该可以正常工作(在我的脑海中)。