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가 정수를 반환 할 이유가 없습니다. 또한 필 하를 어떻게 든 사용하십시오. –
아마도 backtrack 할 수 있도록 스택과 함께 dfs를 실행해야 할 것입니다. 그러나 지금 당장은 그래프로 DFS 검색을 수행 할 수 있습니다. –