Module org.jhotdraw8.graph
Package org.jhotdraw8.graph.path.algo
Class AnyArcPathSearchAlgo<V,A,C extends Number & Comparable<C>>
java.lang.Object
org.jhotdraw8.graph.path.algo.AnyArcPathSearchAlgo<V,A,C>
- Type Parameters:
V- the vertex data typeA- the arrow data typeC- the cost number type
- All Implemented Interfaces:
ArcPathSearchAlgo<V,A, C>
public class AnyArcPathSearchAlgo<V,A,C extends Number & Comparable<C>>
extends Object
implements ArcPathSearchAlgo<V,A,C>
Searches an arbitrary path from a set of start vertices to a set of goal
vertices using a breadth-first search algorithm.
This algorithm ignores cost limit. If you need it, use one of the shortest path search algorithms.
Expected run time:
- When the algorithm returns a back link
- less or equal O( |A| + |V| ) within max depth
- When the algorithm returns null
- exactly O( |A| + |V| ) within max depth
References:
- Robert Sedgewick, Kevin Wayne. (2011)
- Algorithms, 4th Edition. Chapter 4. Breadth-First Search. math.cmu.edu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionsearch(@NonNull Iterable<V> startVertices, @NonNull Predicate<V> goalPredicate, @NonNull Function<V, Iterable<Arc<V, A>>> nextArcsFunction, int maxDepth, @NonNull C zero, @NonNull C costLimit, @NonNull Function3<V, V, A, C> costFunction, @NonNull BiFunction<C, C, C> sumFunction, @NonNull AddToSet<V> visited) Search engine method.search(@NonNull Iterable<V> startVertices, @NonNull Predicate<V> goalPredicate, @NonNull Function<V, Iterable<Arc<V, A>>> nextArcsFunction, @NonNull AddToSet<V> visited, int maxDepth) Search engine method.
-
Constructor Details
-
AnyArcPathSearchAlgo
public AnyArcPathSearchAlgo()
-
-
Method Details
-
search
public @Nullable ArcBackLinkWithCost<V,A, searchC> (@NonNull Iterable<V> startVertices, @NonNull Predicate<V> goalPredicate, @NonNull Function<V, Iterable<Arc<V, A>>> nextArcsFunction, int maxDepth, @NonNull C zero, @NonNull C costLimit, @NonNull Function3<V, V, A, C> costFunction, @NonNull BiFunction<C, C, C> sumFunction, @NonNull AddToSet<V> visited) Search engine method.- Specified by:
searchin interfaceArcPathSearchAlgo<V,A, C extends Number & Comparable<C>> - Parameters:
startVertices- the set of start verticesgoalPredicate- the goal predicatenextArcsFunction- the next arcs functionmaxDepth- the maximal depth (inclusive) of the search Must be >= 0.zero- the zero cost valuecostLimit- the cost limit is ignoredcostFunction- the cost functionsumFunction- the sum function for adding two cost valuesvisited-- Returns:
-
search
public @Nullable ArcBackLink<V,A> search(@NonNull Iterable<V> startVertices, @NonNull Predicate<V> goalPredicate, @NonNull Function<V, Iterable<Arc<V, A>>> nextArcsFunction, @NonNull AddToSet<V> visited, int maxDepth) Search engine method.- Parameters:
startVertices- the set of start verticesgoalPredicate- the goal predicatenextArcsFunction- the next arcs functionvisited- the set of visited vertices (seeAddToSet)maxDepth- the maximal depth (inclusive) of the search Must be >= 0.- Returns:
- on success: a back link, otherwise: null
-