V
 the graph vertex typeE
 the graph edge typepublic class SuurballeKDisjointShortestPaths<V,E> extends Object
The algorithm is running k sequential Dijkstra iterations to find the shortest path at each step. Hence, yielding a complexity of k*O(Dijkstra).
For further reference see Wikipedia page
Modifier and Type  Field and Description 

protected Graph<V,E> 
originalGraph 
protected Set<E> 
overlappingEdges 
protected List<List<E>> 
pathList 
protected Graph<V,E> 
workingGraph
Graph on which shortest paths are searched.

Constructor and Description 

SuurballeKDisjointShortestPaths(Graph<V,E> graph)
Creates a new instance of the algorithm.

Modifier and Type  Method and Description 

protected GraphPath<V,E> 
calculateShortestPath(V startVertex,
V endVertex)
Calculates the shortest paths for the current iteration.

List<GraphPath<V,E>> 
getPaths(V startVertex,
V endVertex,
int k)
Returns the $k$ shortest simple paths in increasing order of weight.

protected void 
transformGraph(List<E> previousPath)
Prepares the working graph for next iteration.

protected Graph<V,E> workingGraph
protected Set<E> overlappingEdges
protected Graph<V,E> originalGraph
public SuurballeKDisjointShortestPaths(Graph<V,E> graph)
graph
 graph on which shortest paths are searched.IllegalArgumentException
 if the graph is null.IllegalArgumentException
 if the graph is undirected.IllegalArgumentException
 if the graph is not simple.protected void transformGraph(List<E> previousPath)
calculateShortestPath(V, V)
call.previousPath
 the path found at the previous iteration.protected GraphPath<V,E> calculateShortestPath(V startVertex, V endVertex)
startVertex
 the start vertexendVertex
 the end vertexpublic List<GraphPath<V,E>> getPaths(V startVertex, V endVertex, int k)
getPaths
in interface KShortestPathAlgorithm<V,E>
startVertex
 source vertex of the calculated paths.endVertex
 target vertex of the calculated paths.k
 the number of shortest paths to returnIllegalArgumentException
 if the graph does not contain the startVertex or the
endVertexIllegalArgumentException
 if the startVertex and the endVertex are the same verticesIllegalArgumentException
 if the startVertex or the endVertex is nullCopyright © 2018. All rights reserved.