- java.lang.Object
-
- org.jgrapht.alg.shortestpath.AllDirectedPaths<V,E>
-
- Type Parameters:
V
- the graph vertex typeE
- the graph edge type
public class AllDirectedPaths<V,E> extends Object
A Dijkstra-like algorithm to find all paths between two sets of nodes in a directed graph, with options to search only simple paths and to limit the path length.- Author:
- Andrew Gainer-Dewar, Google LLC
-
-
Constructor Summary
Constructors Constructor Description AllDirectedPaths(Graph<V,E> graph)
Create a new instance.AllDirectedPaths(Graph<V,E> graph, PathValidator<V,E> pathValidator)
Create a new instance with givenpathValidator
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<GraphPath<V,E>>
getAllPaths(Set<V> sourceVertices, Set<V> targetVertices, boolean simplePathsOnly, Integer maxPathLength)
Calculate (and return) all paths from the source vertices to the target vertices.List<GraphPath<V,E>>
getAllPaths(V sourceVertex, V targetVertex, boolean simplePathsOnly, Integer maxPathLength)
Calculate (and return) all paths from the source vertex to the target vertex.
-
-
-
Constructor Detail
-
AllDirectedPaths
public AllDirectedPaths(Graph<V,E> graph)
Create a new instance.- Parameters:
graph
- the input graph- Throws:
IllegalArgumentException
- if the graph is not directed
-
AllDirectedPaths
public AllDirectedPaths(Graph<V,E> graph, PathValidator<V,E> pathValidator)
Create a new instance with givenpathValidator
. If non-null
, thepathValidator
will be used while searching for paths, validating the addition of any edge to a partial path. Zero-length paths will therefore not be subject topathValidator
; length-1 paths will.- Parameters:
graph
- the input graphpathValidator
- validator for computed paths; may be null- Throws:
IllegalArgumentException
- if the graph is not directed
-
-
Method Detail
-
getAllPaths
public List<GraphPath<V,E>> getAllPaths(V sourceVertex, V targetVertex, boolean simplePathsOnly, Integer maxPathLength)
Calculate (and return) all paths from the source vertex to the target vertex.- Parameters:
sourceVertex
- the source vertextargetVertex
- the target vertexsimplePathsOnly
- if true, only search simple (non-self-intersecting) pathsmaxPathLength
- maximum number of edges to allow in a path (if null, all paths are considered, which may be very slow due to potentially huge output)- Returns:
- all paths from the source vertex to the target vertex
-
getAllPaths
public List<GraphPath<V,E>> getAllPaths(Set<V> sourceVertices, Set<V> targetVertices, boolean simplePathsOnly, Integer maxPathLength)
Calculate (and return) all paths from the source vertices to the target vertices.- Parameters:
sourceVertices
- the source verticestargetVertices
- the target verticessimplePathsOnly
- if true, only search simple (non-self-intersecting) pathsmaxPathLength
- maximum number of edges to allow in a path (if null, all paths are considered, which may be very slow due to potentially huge output)- Returns:
- list of all paths from the sources to the targets containing no more than maxPathLength edges
-
-