Remarks
Complexity
Examples
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
Constructors
Properties
true.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.
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.
Examples
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.
Examples
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.
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.