Create a class AllPathsGraph
that extends UndirectedGraph
.
In such class, create a method with the following signature:
public List<List<V>> findAllPaths(V start, V end)
Such method should return all possible paths from start
to end
that
are not cyclic.
Write a test class called AllPathsGraphTest
in which you recreate the graph
shown in class in the slides, ie with edges:
graph.addEdge("0","X");
graph.addEdge("X","1");
graph.addEdge("X","Y");
graph.addEdge("1","2");
graph.addEdge("2","Y");
graph.addEdge("1","3");
graph.addEdge("3","4");
graph.addEdge("3","5");
graph.addEdge("4","5");
Call findAllPaths
on such graph with input start=X
and end=5
.
Verify that the method returns 4 paths, with lengths 4, 5, 6 and 7.
Study the source code of UndirectedGraph
.
Once you think you fully understand it, write its implementation
on paper (e.g., using a pen), without looking at the source code.
Once done, compare what you wrote with the actual implementation.
Solutions to this exercise can be found in the solutions
module, under the org.pg4200.sol08
package.