public static void main(String[] args) {
final TestGraph g = new TestGraph();
final TestGraphNode n1 = g.createNode("N1");
final TestGraphNode n2 = g.createNode("N2");
final TestGraphNode n3 = g.createNode("N3");
final TestGraphNode n4 = g.createNode("N4");
final TestGraphNode n5 = g.createNode("N5");
g.createEdge("E12", n1, n2);
g.createEdge("E21", n2, n1);
g.createEdge("E13", n1, n3);
g.createEdge("E34", n3, n4);
g.createEdge("E45", n4, n5);
g.createEdge("E54", n5, n4);
GraphPrinter.print(g, true, System.out);
final GraphCycles<TestGraphNode, TestGraphEdge> cycles = new GraphCycles<>(g);
cycles.setEnabled(Feature.DEBUG, true);
cycles.setEnabled(Feature.VERBOSE, true);
System.out.println(cycles.containsCycles());
for (final TestGraphNode node : g.getNodes()) {
System.out.println(node + ": " + cycles.nodeIsCycleMember(node));
}
final ExplicitSubGraph<TestGraphNode, TestGraphEdge> kernel = cycles.computeCyclesMembers();
GraphPrinter.print(kernel, true, System.out);
}
}