Wraps outboundList and inboundList in a node structure.
Wraps outboundList and inboundList in a node structure. This is an inner class because mutations will affect other nodes of the graph if both inbound and outbound neighbor lists are stored.
For efficiency, we don't store Nodes, but create them on the fly as needed.
Add an edge from srcId
to destId
.
Add an edge from srcId
to destId
.
If the edge already exists, nothing will change. This takes time proportional
to out-degree(srcId) + in-degree(destId).
Add an edge from srcId
to destId
.
Add an edge from srcId
to destId
.
If the edge already exists, this will create a parallel edge. This runs in
constant amortized time.
Returns the total number of directed edges in the graph.
Returns the total number of directed edges in the graph. A mutual edge, eg: A -> B and B -> A, counts as 2 edges in this total.
Returns the node with the given id
or else None
if the given node does not
exist in this graph.
Returns the node with the given id
or else None
if the given node does not
exist in this graph.
Add a node id
into the graph.
Add a node id
into the graph.
Checks if the given graph dir is stored in this graph
Checks if the given graph dir is stored in this graph
the graph dir in question
if the current graph stores the query graph direction
The label of a node accessed by name.
The label of a node accessed by name. Label can be anything.
the max node id
the max node id
Returns the number of nodes in the graph.
Returns the number of nodes in the graph.
Determine if a node with the given id exists in this graph.
Labels on nodes of this graph.
Labels on nodes of this graph.
Remove an edge from a srdId
to destId
.
Remove an edge from a srdId
to destId
.
Return Option of source and destination nodes. None indicates the node doesn't exist in graph.
(Changed in version 2.9.0) The behavior of scanRight
has changed. The previous behavior can be reproduced with scanRight.reverse.
Describes whether the stored graph is only in-directions, out-directions or both
Describes whether the stored graph is only in-directions, out-directions or both
Added default toString for debugging (prints max of 10 nodes)
Added default toString for debugging (prints max of 10 nodes)
(Changed in version 2.9.0) transpose
throws an IllegalArgumentException
if collections are not uniformly sized.
A dynamic directed graph, implemented using an ArrayBuffer of IntArrayList (from the fastutil library). If n nodes are used, O(n) objects are created, independent of the number of edges.
For efficiency, it's recommended that ids be sequentially numbered, as an internal array is stored which is longer than the maximum id seen.
This class is not threadsafe. If multiple thread access it simultaneously and at least one mutates it, synchronization should be used. Currently no new threads are created by this class (all operations execute on a single thread).