Package ghidra.graph.algo

# Class RecursiveFindPathsAlgorithm<V,E extends GEdge<V>>

java.lang.Object
ghidra.graph.algo.RecursiveFindPathsAlgorithm<V,E>

Type Parameters:
  `V` - the vertex type
  `E` - the edge type

All Implemented Interfaces:
  `FindPathsAlgorithm<V,E>`

public class RecursiveFindPathsAlgorithm<V,E extends GEdge<V>> extends Object implements FindPathsAlgorithm<V,E>
Finds all paths between two vertices for a given graph.

Warning: This is a recursive algorithm. As such, it is limited in how deep it can recurse. Any path that exceeds the `JAVA_STACK_DEPTH_LIMIT` will not be found.

Note: this algorithm is based entirely on the `JohnsonCircuitsAlgorithm`.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `JAVA_STACK_DEPTH_LIMIT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RecursiveFindPathsAlgorithm()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `findPaths(GDirectedGraph<V,E> g, V start, V end, Accumulator<List<V>> accumulator, TaskMonitor monitor)`
  `void`
  `setStatusListener(GraphAlgorithmStatusListener<V> listener)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### JAVA_STACK_DEPTH_LIMIT

    public static final int JAVA_STACK_DEPTH_LIMIT
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### RecursiveFindPathsAlgorithm

    public RecursiveFindPathsAlgorithm()

- ## Method Details

  - ### setStatusListener

    public void setStatusListener(GraphAlgorithmStatusListener<V> listener)
    Specified by:
      `setStatusListener` in interface `FindPathsAlgorithm<V,E extends GEdge<V>>`

  - ### findPaths

    public void findPaths(GDirectedGraph<V,E> g, V start, V end, Accumulator<List<V>> accumulator, TaskMonitor monitor) throws CancelledException
    Specified by:
      `findPaths` in interface `FindPathsAlgorithm<V,E extends GEdge<V>>`
    Throws:
      `CancelledException`