org.eclipse.viatra.query.runtime.base.itc.alg.misc

## Interface IGraphPathFinder<V>

- Type Parameters:
    `V` - the node type of the graph
  All Known Implementing Classes:
    DFSPathFinder

      public interface IGraphPathFinder<V>

  The path finder provides methods for retrieving paths in a graph between a source node and one or more target nodes. Use `ITcDataSource.getPathFinder()` for instantiating.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Iterable<java.util.Deque<V>>` | `getAllPaths(V sourceNode, V targetNode)` Returns the collection of paths from the source node to the target node (if such exists).
    `java.lang.Iterable<java.util.Deque<V>>` | `getAllPathsToTargets(V sourceNode, java.util.Set<V> targetNodes)` Returns the collection of paths from the source node to any of the target nodes (if such exists).
    `java.util.Deque<V>` | `getPath(V sourceNode, V targetNode)` Returns an arbitrary path from the source node to the target node (if such exists).
    `java.lang.Iterable<java.util.Deque<V>>` | `getShortestPaths(V sourceNode, V targetNode)` Returns the collection of shortest paths from the source node to the target node (if such exists).

- - ### Method Detail

    - #### getPath

          java.util.Deque<V> getPath(V sourceNode,
                                     V targetNode)

      Returns an arbitrary path from the source node to the target node (if such exists). If there is no path between them, an empty collection is returned.
      Parameters:
        `sourceNode` - the source node of the path
        `targetNode` - the target node of the path
      Returns:
        the path from the source to the target, or empty collection if target is not reachable from source.

    - #### getShortestPaths

          java.lang.Iterable<java.util.Deque<V>> getShortestPaths(V sourceNode,
                                                                  V targetNode)

      Returns the collection of shortest paths from the source node to the target node (if such exists). If there is no path between them, an empty collection is returned.
      Parameters:
        `sourceNode` - the source node of the path
        `targetNode` - the target node of the path
      Returns:
        the collection of shortest paths from the source to the target, or empty collection if target is not reachable from source.

    - #### getAllPaths

          java.lang.Iterable<java.util.Deque<V>> getAllPaths(V sourceNode,
                                                             V targetNode)

      Returns the collection of paths from the source node to the target node (if such exists). If there is no path between them, an empty collection is returned.
      Parameters:
        `sourceNode` - the source node of the path
        `targetNode` - the target node of the path
      Returns:
        the collection of paths from the source to the target, or empty collection if target is not reachable from source.

    - #### getAllPathsToTargets

          java.lang.Iterable<java.util.Deque<V>> getAllPathsToTargets(V sourceNode,
                                                                      java.util.Set<V> targetNodes)

      Returns the collection of paths from the source node to any of the target nodes (if such exists). If there is no path between them, an empty collection is returned.
      Parameters:
        `sourceNode` - the source node of the path
        `targetNodes` - the set of target nodes of the paths
      Returns:
        the collection of paths from the source to any of the targets, or empty collection if neither target is reachable from source.