C

Reachability

Determines the nodes that are reachable from one or more startNodes.
Inheritance Hierarchy

Remarks

Complexity

O(|V| + |E|)

Examples

Calculating reachable nodes from a given start node
const reachableNodes = new Reachability({
  directed: true,
  startNodes: { item: selectedNode },
}).run(graph).reachableNodes

reachableNodes.forEach((reachableNode) =>
  graph.setStyle(reachableNode, reachableStyle),
)

See Also

Developer's Guide

Members

No filters for this type

Constructors

Parameters

Properties

Gets or sets a value indicating whether edge direction should be considered.
Default is true.
final

Property Value

true if the graph should be considered as directed, false otherwise.
Gets or sets a collection of nodes from which to determine reachability.
conversionfinal

See Also

Developer's Guide
Gets or sets the collection of edges which define a subset of the graph for the algorithms to work on.

If nothing is set, all edges of the graph will be processed.

If only the ItemCollection<TItem>.excludes are set, all edges in the graph except those provided in the ItemCollection<TItem>.excludes are processed.

Note that edges which start or end at nodes which are not in the subgraphNodes are automatically not considered by the algorithm.

ItemCollection<T> instances may be shared among algorithm instances and will be (re-)evaluated upon (re-)execution of the algorithm.

The edges provided here must be part of the graph which is passed to the run method.
conversionfinal

Examples

Calculating reachable nodes, only allowing a subset of edges in the graph
const reachability = new Reachability({ directed: true })

reachability.startNodes = (node) => node.labels.size == 1
reachability.subgraphEdges.source = graph.edges.filter(
  (edge) =>
    edge.style instanceof PolylineEdgeStyle &&
    edge.style.targetArrow === IArrow.NONE,
)

const result = reachability.run(graph)

result.reachableNodes.forEach((reachableNode) =>
  graph.setStyle(reachableNode, reachableStyle),
)
Gets or sets the collection of nodes which define a subset of the graph for the algorithms to work on.

If nothing is set, all nodes of the graph will be processed.

If only the ItemCollection<TItem>.excludes are set, all nodes in the graph except those provided in the ItemCollection<TItem>.excludes are processed.

ItemCollection<T> instances may be shared among algorithm instances and will be (re-)evaluated upon (re-)execution of the algorithm.

The nodes provided here must be part of the graph which is passed to the run method.
conversionfinal

Examples

Calculating reachable nodes, only allowing a subset of nodes in the graph
const reachability = new Reachability({ directed: true })

reachability.startNodes.item = selectedNode
reachability.subgraphNodes.excludes = (node) =>
  node.labels.some((label) => label.text == 'forbidden')

const result = reachability.run(graph)

result.reachableNodes.forEach((reachableNode) =>
  graph.setStyle(reachableNode, reachableStyle),
)

Methods

Determines the set of nodes that are reachable from the startNodes.
The result obtained from this algorithm is a snapshot which is no longer valid once the graph has changed, e.g. by adding or removing nodes or edges.
final

Parameters

graph: IGraph
The input graph to run the algorithm on.

Return Value

ReachabilityResult
A ReachabilityResult containing the nodes reachable from startNodes.

Throws

Exception ({ name: 'InvalidOperationError' })
If the algorithm can't create a valid result due to an invalid graph structure or wrongly configured properties.

Complexity

O(|V| + |E|)