これは、深さ優先検索を使用したグラフの reachable() の実装です。頂点 1 (v1) から別の頂点 (v2) への可能なパスを探します。一部の結果は正しく、一部は間違っています。デバッグするためにできる限り多くの方法を試しましたが、どこが間違っているのかわかりませんでした。どんな助けでも大歓迎です。ありがとうございました
public boolean isReachable(V v1, V v2) {
Stack<V> path = new Stack<V>();
return isReachableHelper(v1, v2, path);
}
}
public boolean isReachableHelper(V v1, V v2, Stack<V> path){
path.push(v1);
v1.setVisited(true); //set the vertex as being visited
if (v1.vertex().equals(v2.vertex())){ //check whether vertex' values are equal
return true;
}
//loop through all vertex that are neighbors of v1
for (V neighbor : super.neighbors(v1)){
if (!neighbor.visited ){ //if the neighbor is not visited before
return isReachableHelper(neighbor, v2, path); //recursive call
}
}
path.pop(); //no path was found
return false;
}