/* TIME COMPLEXITY : O(|v| + |E|). APPLICATIONS OF DFS Finding strongly connected components in a graph (Kosaraju Algorithm). Topological Sorting. Solving Maze. */ public void recursiveDFS(Vertex sourceVertex,boolean visited[]) { //Process the top vertex from stack and put it to explored set of vertices. visited[sourceVertex.vertexId] = true; System.out.println(sourceVertex.vertexId); for(int i=0; i<sourceVertex.edges.size(); i++) { //Push all not visited vertices reachable from process vertex //one by one and aggressively search to deeper levels. //backtrack when no more path can be taken and //process all other vertices reachable from processed vertex Vertex target = sourceVertex.edges.get(i).Target; if(!visited[target.vertexId]) { recursiveDFS(target,visited); } } } public void DFS(int sourceVertex) { System.out.println("DFS Traversal"); int i; //Initially put all vertices in unexplored set. boolean visited[] = new boolean[totalVertices]; for(i=0; i<totalVertices; i++) visited[i] = false; //Push source vertex in stack. recursiveDFS(vertices[sourceVertex],visited); }
Friday, 4 October 2013
Depth First Search
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment