N - Node parameter type@Beta public interface PredecessorsFunction<N>
This interface is meant to be used as the type of a parameter to graph algorithms (such as topological sort) that only need a way of accessing the predecessors of a node in a graph.
public <N> someGraphAlgorithm(N startNode, PredecessorsFunction<N> predecessorsFunction);
you will invoke it depending on the graph representation you're using.
If you have an instance of one of the primary common.graph types (Graph,
ValueGraph, and Network):
someGraphAlgorithm(startNode, graph);
This works because those types each implement PredecessorsFunction. It will also work
with any other implementation of this interface.
If you have your own graph implementation based around a custom node type MyNode,
which has a method getParents() that retrieves its predecessors in a graph:
someGraphAlgorithm(startNode, MyNode::getParents);
If you have some other mechanism for returning the predecessors of a node, or one that doesn't
return a Iterable<? extends N>, then you can use a lambda to perform a more general
transformation:
someGraphAlgorithm(startNode, node -> ImmutableList.of(node.mother(), node.father()));
Graph algorithms that need additional capabilities (accessing both predecessors and
successors, iterating over the edges, etc.) should declare their input to be of a type that
provides those capabilities, such as Graph, ValueGraph, or Network.
See the Guava User Guide for the common.graph package ("Graphs Explained") for
additional documentation, including notes for
implementors
| Modifier and Type | Method and Description |
|---|---|
Iterable<? extends N> |
predecessors(N node)
Returns all nodes in this graph adjacent to
node which can be reached by traversing
node's incoming edges against the direction (if any) of the edge. |
Iterable<? extends N> predecessors(N node)
node which can be reached by traversing
node's incoming edges against the direction (if any) of the edge.
Some algorithms that operate on a PredecessorsFunction may produce undesired results
if the returned Iterable contains duplicate elements. Implementations of such
algorithms should document their behavior in the presence of duplicates.
IllegalArgumentException - if node is not an element of this graphCopyright © 2010–2017. All rights reserved.