Download jar file or use maven. psjava requires Java 1.6 (or above)
<dependency>
<groupId>org.psjava</groupId>
<artifactId>psjava</artifactId>
<version>0.1.19</version>
</dependency>
IntegerNumberSystem NS = IntegerNumberSystem.getInstance();
// consturct a simple graph.
MutableDirectedWeightedGraph<String, Integer> g = MutableDirectedWeightedGraph.create();
g.insertVertex("A");
g.insertVertex("B");
g.insertVertex("C");
g.addEdge("A", "B", 100);
g.addEdge("B", "C", 200);
g.addEdge("C", "A", -100);
// there is no negative cycles yet. so cycled is false
boolean cycled1 = NegativeCycleFinder.find(g, NS).hasCycle();
// now, insert another edge to create a negative cycle.
g.addEdge("C", "A", -400);
// then, there is a negative cycle.
boolean cycled2 = NegativeCycleFinder.find(g, NS).hasCycle();
Collection<DirectedWeightedEdge<String, Integer>> path = NegativeCycleFinder.find(g, NS).getPath();
Copyright 2014 psjava team. View on GitHub