1
私は、グラフ内のすべてのオイラーパスを検索するためのアルゴリズムを実装しています。私はここで見つけるコードで、DFSを作成するために、自分自身を基づかている:ここでFind all possible Euler cyclesオイラーパスDFSの実装
は私の現在のコードです:
public class Graph {
private int numVertex;
private int numEdges;
private boolean[][] adj;
public Graph(int numVertex, int numEdges) {
this.numVertex = numVertex;
this.numEdges = numEdges;
this.adj = new boolean[numVertex+1][numVertex+1];
}
public void addEdge(int start, int end){
adj[start][end] = true;
adj[end][start] = true;
}
public Integer DFS(Graph G, int startVertex){
int i=0;
pilha.push(startVertex);
for(i=0; i<G.numVertex; i++){
if(G.adj[i][startVertex] != false){
System.out.println("i: " + i);
G.adj[i][startVertex] = false;
G.adj[startVertex][i] = false;
DFS(G, i);
G.adj[i][startVertex] = true;
G.adj[startVertex][i] = true;
}
}
return -1;
}
Stack<Integer> pilha = new Stack();
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numVertices = input.nextInt();
int numLinks = input.nextInt();
int startNode = input.nextInt();
Graph g = new Graph(numVertices, numLinks);
for(int i = 0; i<numLinks; i++){
g.addEdge(input.nextInt(),input.nextInt());
}
}
}
残念ながら私は右の結果を得ることはありませんし、私は理由を理解できないようだ。私は、リスト内のDFSからの結果を格納し、それらを印刷ようなものの多くを試してみたが、それでも私はパスを得ませんでした。
私はオイラーパスを取得を開始だから私は私のコードを変更することができる方法上の任意のアイデア?
申し訳ありませんが、コードは少し不格好でした。私はそれを少しきれいにしようとします。 –
まだ明らかではありません。新しい変更によって、DFSに整数が返される理由はありません。何とかピルハを使ってください。 –
私はおそらくので、私はそれをバックトラックすることができ、スタックで実行しているDFSを持っている必要があります。しかし、今のように、グラフでDFS検索を実行できます。 –