Read
#.hasNode
Returns whether the given node is found in the graph.
Example
graph.addNode('Timothy');
graph.hasNode('Timothy');
>>> true
graph.hasNode('Jack');
>>> false
Arguments
- node any: node to find.
#.hasEdge
Returns whether the given edge is found in the graph or whether an edge links the given source & target.
See also #.areNeighbors.
Example
graph.addNode('Timothy');
graph.addNode('Clarice');
const edge = graph.addEdge('Clarice', 'Timothy');
// Using the edge's key:
graph.hasEdge(edge);
>>> true
// Using the edge's source & target:
graph.hasEdge('Clarice', 'Timothy');
>>> true
graph.hasEdge('Clarice', 'John');
>>> false
Arguments
- Using the key:
- edge any: edge to find.
- Using the source & target:
- source any: source of the edge to find.
- target any: target of the edge to find.
Variants
#.hasDirectedEdge
#.hasUndirectedEdge
#.edge
Returns the key of the edge between given source & target or undefined
if such an edge does not exist.
Note that this method will throw if either source or target is not found in the graph.
In addition, this method won’t work on a multi graph and will throw because the graph cannot know which edge to return since there might be multiple edges between source & target.
Example
graph.addNode('Timothy');
graph.addNode('Clarice');
graph.addNode('Olivia');
graph.addEdgeWithKey('C->T', 'Clarice', 'Timothy');
graph.edge('Clarice', 'Timothy');
>>> 'C->T'
graph.edge('Clarice', 'Olivia');
>>> undefined
Arguments
- source any: source of the edge to find.
- target any: target of the edge to find.
Variants
#.directedEdge
#.undirectedEdge
#.degreeWithoutSelfLoops
Returns the degree of the given node, without taking self loops into account.
Will throw if the node is not found in the graph.
Example
graph.addNodeFrom(['Timothy', 'Jack', 'Clarice', 'Martha']);
graph.addEdge('Timothy', 'Timothy');
graph.addEdge('Timothy', 'Jack');
graph.addEdge('Timothy', 'Clarice');
graph.addEdge('Martha', 'Timothy');
graph.degreeWithoutSelfLoops('Timothy');
>>> 3
graph.inWithoutSelfLoops('Timothy');
>>> 1
graph.outWithoutSelfLoops('Timothy');
>>> 2
Arguments
- node any: target node.
Variants
#.inDegreeWithoutSelfLoops
#.outDegreeWithoutSelfLoops
#.directedDegreeWithoutSelfLoops
(#.inDegreeWithoutSelfLoops
+#.outDegreeWithoutSelfLoops
)#.undirectedDegreeWithoutSelfLoops
#.degreeWithoutSelfLoops
(#.directedDegreeWithoutSelfLoops
+#.undirectedDegreeWithoutSelfLoops
)
#.degree
Returns the degree of the given node.
Will throw if the node is not found in the graph.
Example
graph.addNodeFrom(['Timothy', 'Jack', 'Clarice', 'Martha']);
graph.addEdge('Timothy', 'Jack');
graph.addEdge('Timothy', 'Clarice');
graph.addEdge('Martha', 'Timothy');
graph.degree('Timothy');
>>> 3
graph.inDegree('Timothy');
>>> 1
graph.outDegree('Timothy');
>>> 2
Arguments
- node any: target node.
Variants
#.inDegree
#.outDegree
#.directedDegree
(#.inDegree
+#.outDegree
)#.undirectedDegree
#.degree
(#.directedDegree
+#.undirectedDegree
)
#.source
Returns the source of the given edge.
Example
graph.addNode('Timothy');
graph.addNode('Clarice');
const edge = graph.addEdge('Clarice', 'Timothy');
graph.source(edge);
>>> 'Clarice'
Arguments
- edge any: target edge.
#.target
Returns the target of the given edge.
Example
graph.addNode('Timothy');
graph.addNode('Clarice');
const edge = graph.addEdge('Clarice', 'Timothy');
graph.target(edge);
>>> 'Timothy'
Arguments
- edge any: target edge.
#.opposite
Given a node & an edge, returns the node at the other end of the edge.
Example
graph.addNode('Timothy');
graph.addNode('Clarice');
const edge = graph.addEdge('Clarice', 'Timothy');
graph.opposite('Timothy', edge);
>>> 'Clarice'
Arguments
- node any: target node.
- edge any: target edge.
#.extremities
Returns both extremities of the given edge.
Example
graph.addNode('Timothy');
graph.addNode('Clarice');
const edge = graph.addEdge('Clarice', 'Timothy');
graph.extremities(edge);
>>> ['Timothy', 'Clarice']
Arguments
- edge any: target edge.
#.hasExtremity
Returns whether the given edge has the given node as extremity.
graph.addNode('Lucy');
graph.addNode('Timothy');
graph.addNode('Clarice');
const edge = graph.addEdge('Clarice', 'Timothy');
graph.hasExtremity(edge, 'Timothy');
>>> true
graph.hasExtremity(edge, 'Lucy');
>>> false
#.isDirected
Returns whether the given edge is directed.
Example
graph.addNode('Timothy');
graph.addNode('Clarice');
const edge = graph.addEdge('Clarice', 'Timothy');
const undirectedEdge = graph.addUndirectedEdge('Clarice', 'Timothy');
graph.isDirected(edge);
>>> true
graph.isDirected(undirectedEdge);
>>> false
Arguments
- edge any: target edge.
Variants
#.isUndirected
#.isSelfLoop
Returns whether the given edge is a self-loop.
Example
graph.addNode('Timothy');
const edge = graph.addEdge('Timothy', 'Timothy');
graph.isSelfLoop(edge);
>>> true
Arguments
- edge any: target edge.
#.areNeighbors
Returns whether both nodes are neighbors.
See also #.hasEdge.
Examples
graph.addNode('Timothy');
graph.addNode('Clarice');
graph.addNode('Zendar');
graph.addEdge('Clarice', 'Timothy');
graph.areNeighbors('Clarice', 'Timothy');
>>> true
graph.areNeighbors('Zendar', 'Clarice');
>>> false
Arguments
- node any: target node.
- neighbord any: potential neighbor.
Variants
#.areDirectedNeighbors
#.areUndirectedNeighbors
#.areInNeighbors
#.areOutNeighbors
#.areInboundNeighbors
(in + undirected)#.areOutboundNeighbors
(out + undirected)