Please provide examples. 1. Write a class DepthFirstPaths.java to implement a De
ID: 3740743 • Letter: P
Question
Please provide examples.
1. Write a class DepthFirstPaths.java to implement a Depth First Search algorithm ively you can download the file using the pseudocode given below. Alternat DepthFirstPaths.java and implement al the unimplemented methods of the class so that it perfoms Depth First Search on graph G. See the pseudocode given below DFS(G) l for each vertex u E G.V .color-WHITE .TNIL time-0 5 for each vertex uEG.V if u.color WHITE DFS-VisIT(G, u) DFS-VISIT(G,u) time- time +1 2 u.d time 3 u.colorGRAY 4 for each v e G.Adiu) I/ white vertex u has just been discovered II explore edge (u, v) if v.color WHITE DFS-VISIT(G, v // blacken u; it is finished 8 M.colorBLACK timetime +1 10 .f time 2. Write a driver program, which reads input file mediumG.txt as an undirected graph and runs the Depth First Search algorithm to find paths to all the other vertices considering 0 as the source. This driver program should display the paths in the following manner: 0 to v: "list of all the vertices traversed to go to v from 0, separated byExplanation / Answer
ANS:-
program:
//DepthFirstPaths.java
public class DepthFirstPaths {
//booleann
private boolean[] marked;
private int[] edgeTo;
// source_verex
private final int s;
// graph G int s
public DepthFirstPaths(Graph G, int s) {
this.s = s;
edgeTo = new int[G.V()];
marked = new boolean[G.V()];
validateVertex(s);
dfs(G, s);
}
// depth_first_search from "v"
private void dfs(Graph G, int v) {
marked[v] = true;
for (int w : G.adj(v)) {
if (!marked[w]) {
edgeTo[w] = v;
dfs(G, w);
}
}
}
//path
public boolean hasPathTo(int v) {
validateVertex(v);
//return
return marked[v];
}
//iterabl
public Iterable<Integer> pathTo(int v) {
validateVertex(v);
// doesnt has path
if (!hasPathTo(v))
// returns_nul
return null;
Stack<Integer> path = new Stack<Integer>();
// for loop
for (int x = v; x != s; x = edgeTo[x])
// push
path.push(x);
path.push(s);
// return
return path;
}
// throws an IllegalArgumentException if unless the {@code 0 <= v < V}
private void validateVertex(int v) {
int V = marked.length;
if (v < 0 || v >= V)
throw new IllegalArgumentException("vertex " + v + " is not between 0 and " + (V-1));
}
// driver progrm
public static void main(String[] args) {
In in = new In(args[0]);
Graph G = new Graph(in);
int s = Integer.parseInt(args[1]);
DepthFirstPaths dfs = new DepthFirstPaths(G, s);
for (int v = 0; v < G.V(); v++) {
if (dfs.hasPathTo(v)) {
StdOut.printf("%d to %d: ", s, v);
for (int x : dfs.pathTo(v)) {
if (x == s) StdOut.print(x);
else
StdOut.print("-" + x);
}
StdOut.println();
}
else {
StdOut.printf("%d to %d: not connected ", s, v);
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.