Skip to content

DirectedGraph

Defined in: packages/data/src/graph/directed-graph.ts:30

A directed graph held as two sparse adjacency lists, one per direction.

Keeping both is what makes inNeighbors/inDegree O(1) rather than a scan of every node’s out-edges; the cost is a second Map entry per edge. Labels live on the out-adjacency and are mirrored into the in-adjacency.

addEdge(a, b) adds a → b only. a → b and b → a are distinct edges that may carry different labels, and edgeCount() counts each.

neighbors/degree are inherited from IGraph and resolve the directed way round: neighbors is the out-neighbors — what a traversal follows — while degree is inDegree + outDegree, the graph-theoretic degree. Use outNeighbors/outDegree explicitly wherever that distinction matters to a reader.

Time complexity: O(1) for every node and edge operation; O(degree) to delete a node. Space is O(nodes + 2·edges).

Nodes are compared by SameValueZero, native Map semantics.

N

The node type.

E extends DefinedValue | void = void

The edge label type. void for an unlabeled graph, in which case addEdge’s third argument may be omitted.

new DirectedGraph<N, E>(nodes?): DirectedGraph<N, E>

Defined in: packages/data/src/graph/directed-graph.ts:38

Iterable<N, any, any>

DirectedGraph<N, E>

addEdge(from, to, label): void

Defined in: packages/data/src/graph/directed-graph.ts:113

Adds the directed edge from → to, creating either endpoint if it is unknown. Re-adding an existing edge replaces its label. O(1).

N

N

E

void

IDirectedGraph.addEdge


addNode(node): void

Defined in: packages/data/src/graph/directed-graph.ts:55

O(1). A node already present keeps its edges.

N

void

IDirectedGraph.addNode


addNodes(nodes): void

Defined in: packages/data/src/graph/directed-graph.ts:63

O(m) in the number of nodes.

Iterable<N>

void

IDirectedGraph.addNodes


degree(node): number

Defined in: packages/data/src/graph/directed-graph.ts:172

inDegree + outDegree. A self-loop contributes to both. O(1).

N

number

IDirectedGraph.degree


deleteEdge(from, to): boolean

Defined in: packages/data/src/graph/directed-graph.ts:128

O(1). Directed: this does not touch to → from.

N

N

boolean

IDirectedGraph.deleteEdge


deleteNode(node): boolean

Defined in: packages/data/src/graph/directed-graph.ts:70

Removes node and every edge into or out of it. O(degree).

N

boolean

IDirectedGraph.deleteNode


edgeCount(): number

Defined in: packages/data/src/graph/directed-graph.ts:50

O(1). a → b and b → a count as two.

number

IDirectedGraph.edgeCount


edgeLabel(from, to): E | undefined

Defined in: packages/data/src/graph/directed-graph.ts:153

O(1).

N

N

E | undefined

The label of from → to, or undefined when there is no such edge.

IDirectedGraph.edgeLabel


edges(): IterableIterator<readonly [N, N, E]>

Defined in: packages/data/src/graph/directed-graph.ts:158

Every directed edge, grouped by source.

IterableIterator<readonly [N, N, E]>

IDirectedGraph.edges


hasEdge(from, to): boolean

Defined in: packages/data/src/graph/directed-graph.ts:143

O(1). Directed: hasEdge(a, b) says nothing about b → a.

N

N

boolean

IDirectedGraph.hasEdge


hasNode(node): boolean

Defined in: packages/data/src/graph/directed-graph.ts:100

O(1).

N

boolean

IDirectedGraph.hasNode


inDegree(node): number

Defined in: packages/data/src/graph/directed-graph.ts:195

O(1).

N

number

IDirectedGraph.inDegree


inNeighbors(node): IterableIterator<N>

Defined in: packages/data/src/graph/directed-graph.ts:177

Nodes with an edge into node. Empty for an unknown node.

N

IterableIterator<N>

IDirectedGraph.inNeighbors


neighbors(node): IterableIterator<N>

Defined in: packages/data/src/graph/directed-graph.ts:167

The out-neighbors — what a traversal follows. See the class note.

N

IterableIterator<N>

IDirectedGraph.neighbors


nodeCount(): number

Defined in: packages/data/src/graph/directed-graph.ts:45

O(1).

number

IDirectedGraph.nodeCount


nodes(): IterableIterator<N>

Defined in: packages/data/src/graph/directed-graph.ts:105

In first-insertion order.

IterableIterator<N>

IDirectedGraph.nodes


outDegree(node): number

Defined in: packages/data/src/graph/directed-graph.ts:200

O(1).

N

number

IDirectedGraph.outDegree


outNeighbors(node): IterableIterator<N>

Defined in: packages/data/src/graph/directed-graph.ts:186

Nodes node has an edge to. Empty for an unknown node.

N

IterableIterator<N>

IDirectedGraph.outNeighbors