スタックを使用して可能なDFS実装はありますか?これは、グラフ(循環/非循環)の場合に、グラフ内のある頂点から別の頂点へのすべての可能なパスを提供します。
私の現在のDFSコードは次のとおりです:-
void Graph::DFS(int x, int required){
stack s;
bool *visited = new bool[n+1];
int i;
for(i = 0; i <= n; i++)
visited[i] = false;
s.push(x);
visited[x] = true;
if(x == required) return;
cout << "Depth first Search starting from vertex ";
cout << x << " : " << endl;
while(!s.isEmpty())
{
int k = s.pop();
if(k == required)
{
cout<<k<<" ";
break;
}
cout<<k<<" ";
for (i = n; i >= 0 ; --i)
if (isConnected(k, i) && !visited[i])
{
s.push(i);
visited[i] = true;
}
}
cout<<endl;
delete [] visited;
}
これにより、存在する場合に可能なパスの1つが得られますが、必要なのはall possible paths
1つだけではありません。