我试图判断一个图是否是强连接的。为了符合强连接的条件,图应具有以下属性:1)DFS 算法将声明所有节点都可以从起始顶点到达 2)当所有边的方向都反转时(转置图),所有节点都可以从起始顶点到达。
这是我的 DFS 实现:
public void dfs(String startName) {
Vertex v = getVertex(startName);
v.dist = 0;
dfsVertex(v);
}
List<Vertex> wasVisited;
List<Edge> wasVisitedEdge;
private void dfsVertex(Vertex v) {
wasVisited.add(v);
for(Edge e: v.adj){
if(!wasVisitedEdge.contains(e)){
Vertex w = e.dest;
if(!wasVisited.contains(w)){
wasVisitedEdge.add(e);
w.prev = v;
wasVisited.add(w);
w.dist = v.dist + 1;
dfsVertex(w);
}
}
}
}
如何使用上述算法判断每个顶点之间是否存在路径?
感谢您的任何提示。