Skip to main content

AbstractGraph

data-structure-typed


data-structure-typed / AbstractGraph

Abstract Class: AbstractGraph<V, E, VO, EO>

Defined in: data-structures/graph/abstract-graph.ts:53

Abstract graph over vertices and edges.

Remarks

Time O(1), Space O(1)

Example

examples will be generated by unit test

Extends

Extended by

Type Parameters

V

V = any

Vertex value type.

E

E = any

Edge value type.

VO

VO extends AbstractVertex<V> = AbstractVertex<V>

Concrete vertex subclass (extends AbstractVertex).

EO

EO extends AbstractEdge<E> = AbstractEdge<E>

Concrete edge subclass (extends AbstractEdge).

Implements

  • IGraph<V, E, VO, EO>

Constructors

Constructor

new AbstractGraph<V, E, VO, EO>(options?): AbstractGraph<V, E, VO, EO>;

Defined in: data-structures/graph/abstract-graph.ts:67

Construct a graph with runtime defaults.

Parameters

options?

Partial<Record<string, unknown>>

GraphOptions<V> in options.graph (e.g. vertexValueInitializer, defaultEdgeWeight).

Returns

AbstractGraph<V, E, VO, EO>

Remarks

Time O(1), Space O(1)

Overrides

IterableEntryBase<VertexKey, V | undefined>.constructor

Accessors

size

Get Signature

get size(): number;

Defined in: data-structures/graph/abstract-graph.ts:89

Total number of entries.

Remarks

Time O(1), Space O(1)

Returns

number

Entry count.

Overrides

IterableEntryBase.size

Methods

[iterator]()

iterator: IterableIterator<[VertexKey, V | undefined]>;

Defined in: data-structures/base/iterable-entry-base.ts:22

Default iterator yielding [key, value] entries.

Parameters

args

...unknown[]

Returns

IterableIterator<[VertexKey, V | undefined]>

Iterator of [K, V].

Remarks

Time O(n) to iterate, Space O(1)

Inherited from

IterableEntryBase.[iterator]


addEdge()

Add an edge by instance or by (src, dest, weight?, value?).

Param

Edge instance or source vertex/key.

Param

Destination vertex/key (when adding by pair).

Param

Edge weight.

Param

Edge payload.

Remarks

Time O(1) avg, Space O(1)

Call Signature

addEdge(edge): boolean;

Defined in: data-structures/graph/abstract-graph.ts:254

Parameters
edge

EO

Returns

boolean

Call Signature

addEdge(
src,
dest,
weight?,
value?): boolean;

Defined in: data-structures/graph/abstract-graph.ts:256

Parameters
src

VertexKey | VO

dest

VertexKey | VO

weight?

number

value?

E

Returns

boolean


addVertex()

Add a vertex by key/value or by pre-built vertex.

Param

Vertex key or existing vertex instance.

Param

Optional payload.

Remarks

Time O(1) avg, Space O(1)

Call Signature

addVertex(vertex): boolean;

Defined in: data-structures/graph/abstract-graph.ts:189

Parameters
vertex

VO

Returns

boolean

Implementation of
IGraph.addVertex

Call Signature

addVertex(key, value?): boolean;

Defined in: data-structures/graph/abstract-graph.ts:191

Parameters
key

VertexKey

value?

V

Returns

boolean

Implementation of
IGraph.addVertex

bellmanFord()

bellmanFord(
src,
scanNegativeCycle?,
getMin?,
genPath?): object;

Defined in: data-structures/graph/abstract-graph.ts:705

Bellman-Ford single-source shortest paths with option to scan negative cycles.

Parameters

src

VertexKey | VO

Source vertex or key.

scanNegativeCycle?

boolean

If true, also detect negative cycles.

getMin?

boolean

If true, compute global minimum distance.

genPath?

boolean

If true, generate path arrays via predecessor map.

Returns

object

Result bag including distances, predecessors, and optional cycle flag.

distMap
distMap: Map<VO, number>;
hasNegativeCycle
hasNegativeCycle: boolean | undefined;
min
min: number;
minPath
minPath: VO[];
paths
paths: VO[][];
preMap
preMap: Map<VO, VO>;

Remarks

Time O(V * E), Space O(V + E)


clear()

abstract clear(): void;

Defined in: data-structures/base/iterable-entry-base.ts:218

Remove all entries.

Returns

void

Remarks

Time O(n) typical, Space O(1)

Implementation of

IGraph.clear

Inherited from

IterableEntryBase.clear


clone()

clone(): this;

Defined in: data-structures/graph/abstract-graph.ts:947

Create a deep clone of the graph with the same species.

Returns

this

A new graph of the same concrete class (this type).

Remarks

Time O(V + E), Space O(V + E)

Implementation of

IGraph.clone

Overrides

IterableEntryBase.clone


createEdge()

abstract createEdge(
srcOrV1,
destOrV2,
weight?,
value?): EO;

Defined in: data-structures/graph/abstract-graph.ts:111

Create a new edge instance (implementation specific).

Parameters

srcOrV1

VertexKey

Source/endpoint A key.

destOrV2

VertexKey

Destination/endpoint B key.

weight?

number

Edge weight (defaults may apply).

value?

E

Edge payload.

Returns

EO

Concrete edge instance.

Remarks

Time O(1), Space O(1)

Implementation of

IGraph.createEdge

createVertex()

abstract createVertex(key, value?): VO;

Defined in: data-structures/graph/abstract-graph.ts:100

Create a new vertex instance (implementation specific).

Parameters

key

VertexKey

Vertex identifier.

value?

V

Optional payload.

Returns

VO

Concrete vertex instance.

Remarks

Time O(1), Space O(1)

Implementation of

IGraph.createVertex

degreeOf()

abstract degreeOf(vertexOrKey): number;

Defined in: data-structures/graph/abstract-graph.ts:136

Degree of a vertex in this graph model.

Parameters

vertexOrKey

VertexKey | VO

Vertex or key.

Returns

number

Non-negative integer degree.

Remarks

Time O(1) avg, Space O(1)

Implementation of

IGraph.degreeOf

deleteEdge()

abstract deleteEdge(edge): EO | undefined;

Defined in: data-structures/graph/abstract-graph.ts:119

Delete an edge by instance.

Parameters

edge

EO

Edge instance.

Returns

EO | undefined

Removed edge or undefined.

Remarks

Time O(1) avg, Space O(1)

Implementation of

IGraph.deleteEdge

deleteVertex()

abstract deleteVertex(vertexOrKey): boolean;

Defined in: data-structures/graph/abstract-graph.ts:226

Delete a vertex and its incident edges.

Parameters

vertexOrKey

VertexKey | VO

Vertex or key.

Returns

boolean

true if removed; otherwise false.

Remarks

Time O(deg), Space O(1)

Implementation of

IGraph.deleteVertex

dijkstraWithoutHeap()

dijkstraWithoutHeap(
src,
dest?,
getMinDist?,
genPaths?): DijkstraResult<VO>;

Defined in: data-structures/graph/abstract-graph.ts:484

Dijkstra without heap (array-based selection).

Parameters

src

VertexKey | VO

Source vertex or key.

dest?

VertexKey | VO | undefined

Optional destination for early stop.

getMinDist?

boolean = false

If true, compute global minimum distance.

genPaths?

boolean = false

If true, also generate path arrays.

Returns

DijkstraResult<VO>

Result bag or undefined if source missing.

Remarks

Time O(V^2 + E), Space O(V + E)


edgeSet()

abstract edgeSet(): EO[];

Defined in: data-structures/graph/abstract-graph.ts:143

All edges in the graph (unique, order not guaranteed).

Returns

EO[]

Array of edges.

Remarks

Time O(E), Space O(E)

Implementation of

IGraph.edgeSet

edgesOf()

abstract edgesOf(vertexOrKey): EO[];

Defined in: data-structures/graph/abstract-graph.ts:151

Incident edges of a vertex.

Parameters

vertexOrKey

VertexKey | VO

Vertex or key.

Returns

EO[]

Array of incident edges.

Remarks

Time O(deg), Space O(deg)

Implementation of

IGraph.edgesOf

entries()

entries(): IterableIterator<[VertexKey, V | undefined]>;

Defined in: data-structures/base/iterable-entry-base.ts:31

Iterate over [key, value] pairs (may yield undefined values).

Returns

IterableIterator<[VertexKey, V | undefined]>

Iterator of [K, V | undefined].

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.entries


every()

every(predicate, thisArg?): boolean;

Defined in: data-structures/base/iterable-entry-base.ts:66

Test whether all entries satisfy the predicate.

Parameters

predicate

EntryCallback<VertexKey, V | undefined, boolean>

(key, value, index, self) => boolean.

thisArg?

unknown

Optional this for callback.

Returns

boolean

true if all pass; otherwise false.

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.every


filter()

filter(predicate, thisArg?): this;

Defined in: data-structures/graph/abstract-graph.ts:897

Induced-subgraph filter: keep vertices where predicate(key, value) is true, and only keep edges whose endpoints both survive.

Parameters

predicate

EntryCallback<VertexKey, V | undefined, boolean>

(key, value, index, self) => boolean.

thisArg?

unknown

Optional this for callback.

Returns

this

A new graph of the same concrete class (this type).

Remarks

Time O(V + E), Space O(V + E)

Implementation of

IGraph.filter

Overrides

IterableEntryBase.filter


filterEntries()

filterEntries(predicate, thisArg?): [VertexKey, V | undefined][];

Defined in: data-structures/graph/abstract-graph.ts:913

Preserve the old behavior: return filtered entries as an array.

Parameters

predicate

EntryCallback<VertexKey, V | undefined, boolean>

thisArg?

unknown

Returns

[VertexKey, V | undefined][]

Remarks

Time O(V), Space O(V)


find()

find(callbackfn, thisArg?): [VertexKey, V | undefined] | undefined;

Defined in: data-structures/base/iterable-entry-base.ts:114

Find the first entry that matches a predicate.

Parameters

callbackfn

EntryCallback<VertexKey, V | undefined, boolean>

(key, value, index, self) => boolean.

thisArg?

unknown

Optional this for callback.

Returns

[VertexKey, V | undefined] | undefined

Matching [key, value] or undefined.

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.find


floydWarshall()

floydWarshall(): object;

Defined in: data-structures/graph/abstract-graph.ts:798

Floyd–Warshall all-pairs shortest paths.

Returns

object

{ costs, predecessor } matrices.

costs
costs: number[][];
predecessor
predecessor: (VO | undefined)[][];

Remarks

Time O(V^3), Space O(V^2)


forEach()

forEach(callbackfn, thisArg?): void;

Defined in: data-structures/base/iterable-entry-base.ts:99

Visit each entry, left-to-right.

Parameters

callbackfn

EntryCallback<VertexKey, V | undefined, void>

(key, value, index, self) => void.

thisArg?

unknown

Optional this for callback.

Returns

void

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.forEach


get()

get(key): V | undefined;

Defined in: data-structures/base/iterable-entry-base.ts:156

Get the value under a key.

Parameters

key

VertexKey

Key to look up.

Returns

V | undefined

Value or undefined.

Remarks

Time O(n) generic, Space O(1)

Inherited from

IterableEntryBase.get


getAllPathsBetween()

getAllPathsBetween(
v1,
v2,
limit?): VO[][];

Defined in: data-structures/graph/abstract-graph.ts:309

Enumerate simple paths up to a limit.

Parameters

v1

VertexKey | VO

Source vertex or key.

v2

VertexKey | VO

Destination vertex or key.

limit?

number = 1000

Maximum number of paths to collect.

Returns

VO[][]

Array of paths (each path is an array of vertices).

Remarks

Time O(paths) worst-case exponential, Space O(V + paths)


getCycles()

getCycles(isInclude2Cycle?): VertexKey[][];

Defined in: data-structures/graph/abstract-graph.ts:838

Enumerate simple cycles (may be expensive).

Parameters

isInclude2Cycle?

boolean = false

If true, include 2-cycles when graph semantics allow.

Returns

VertexKey[][]

Array of cycles (each as array of vertex keys).

Remarks

Time exponential in worst-case, Space O(V + E)


getEdge()

abstract getEdge(srcOrKey, destOrKey): EO | undefined;

Defined in: data-structures/graph/abstract-graph.ts:128

Get an edge between two vertices if present.

Parameters

srcOrKey

VertexKey | VO

Source/endpoint A vertex or key.

destOrKey

VertexKey | VO

Destination/endpoint B vertex or key.

Returns

EO | undefined

Edge instance or undefined.

Remarks

Time O(1) avg, Space O(1)

Implementation of

IGraph.getEdge

getEndsOfEdge()

abstract getEndsOfEdge(edge): [VO, VO] | undefined;

Defined in: data-structures/graph/abstract-graph.ts:167

Resolve endpoints of an edge to vertex instances.

Parameters

edge

EO

Edge instance.

Returns

[VO, VO] | undefined

[v1, v2] or undefined if missing.

Remarks

Time O(1), Space O(1)

Implementation of

IGraph.getEndsOfEdge

getMinCostBetween()

getMinCostBetween(
v1,
v2,
isWeight?): number | undefined;

Defined in: data-structures/graph/abstract-graph.ts:362

Minimum hops/weight between two vertices.

Parameters

v1

VertexKey | VO

Source vertex or key.

v2

VertexKey | VO

Destination vertex or key.

isWeight?

boolean

If true, compare by path weight; otherwise by hop count.

Returns

number | undefined

Minimum cost or undefined if missing/unreachable.

Remarks

Time O((V + E) log V) weighted / O(V + E) unweighted, Space O(V + E)


getMinPathBetween()

getMinPathBetween(
v1,
v2,
isWeight?,
isDFS?): VO[] | undefined;

Defined in: data-structures/graph/abstract-graph.ts:415

Minimum path (as vertex sequence) between two vertices.

Parameters

v1

VertexKey | VO

Source vertex or key.

v2

VertexKey | VO

Destination vertex or key.

isWeight?

boolean

If true, compare by path weight; otherwise by hop count.

isDFS?

boolean = false

For weighted mode only: if true, brute-force all paths; if false, use Dijkstra.

Returns

VO[] | undefined

Vertex sequence, or undefined/empty when unreachable depending on branch.

Remarks

Time O((V + E) log V) weighted / O(V + E) unweighted, Space O(V + E)


getNeighbors()

abstract getNeighbors(vertexOrKey): VO[];

Defined in: data-structures/graph/abstract-graph.ts:159

One-step neighbors of a vertex.

Parameters

vertexOrKey

VertexKey | VO

Vertex or key.

Returns

VO[]

Array of neighbor vertices.

Remarks

Time O(deg), Space O(deg)

Implementation of

IGraph.getNeighbors

getPathSumWeight()

getPathSumWeight(path): number;

Defined in: data-structures/graph/abstract-graph.ts:346

Sum the weights along a vertex path.

Parameters

path

VO[]

Sequence of vertices.

Returns

number

Path weight sum (0 if empty or edge missing).

Remarks

Time O(L), Space O(1) where L is path length


getVertex()

getVertex(vertexKey): VO | undefined;

Defined in: data-structures/graph/abstract-graph.ts:175

Get vertex instance by key.

Parameters

vertexKey

VertexKey

Vertex key.

Returns

VO | undefined

Vertex instance or undefined.

Remarks

Time O(1), Space O(1)

Implementation of

IGraph.getVertex

has()

has(key): boolean;

Defined in: data-structures/base/iterable-entry-base.ts:129

Whether the given key exists.

Parameters

key

VertexKey

Key to test.

Returns

boolean

true if found; otherwise false.

Remarks

Time O(n) generic, Space O(1)

Inherited from

IterableEntryBase.has


hasEdge()

hasEdge(v1, v2): boolean;

Defined in: data-structures/graph/abstract-graph.ts:249

Whether an edge exists between two vertices.

Parameters

v1

VertexKey | VO

Endpoint A vertex or key.

v2

VertexKey | VO

Endpoint B vertex or key.

Returns

boolean

true if present; otherwise false.

Remarks

Time O(1) avg, Space O(1)


hasValue()

hasValue(value): boolean;

Defined in: data-structures/base/iterable-entry-base.ts:143

Whether there exists an entry with the given value.

Parameters

value

V | undefined

Value to test.

Returns

boolean

true if found; otherwise false.

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.hasValue


hasVertex()

hasVertex(vertexOrKey): boolean;

Defined in: data-structures/graph/abstract-graph.ts:185

Whether a vertex exists.

Parameters

vertexOrKey

VertexKey | VO

Vertex or key.

Returns

boolean

true if present, otherwise false.

Remarks

Time O(1) avg, Space O(1)

Implementation of

IGraph.hasVertex

isEmpty()

abstract isEmpty(): boolean;

Defined in: data-structures/base/iterable-entry-base.ts:212

Whether there are no entries.

Returns

boolean

true if empty; false otherwise.

Remarks

Time O(1) typical, Space O(1)

Implementation of

IGraph.isEmpty

Inherited from

IterableEntryBase.isEmpty


isVertexKey()

isVertexKey(potentialKey): potentialKey is VertexKey;

Defined in: data-structures/graph/abstract-graph.ts:215

Type guard: check if a value is a valid vertex key.

Parameters

potentialKey

unknown

Value to test.

Returns

potentialKey is VertexKey

true if string/number; else false.

Remarks

Time O(1), Space O(1)


keys()

keys(): IterableIterator<VertexKey>;

Defined in: data-structures/base/iterable-entry-base.ts:42

Iterate over keys only.

Returns

IterableIterator<VertexKey>

Iterator of keys.

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.keys


map()

map<T>(callback, thisArg?): T[];

Defined in: data-structures/graph/abstract-graph.ts:928

Map entries using an implementation-specific strategy.

Type Parameters

T

T

Parameters

callback

EntryCallback<VertexKey, V | undefined, T>

thisArg?

unknown

Returns

T[]

Remarks

Time O(n), Space O(n)

Overrides

IterableEntryBase.map


print()

print(options?): void;

Defined in: data-structures/graph/abstract-graph.ts:1183

Print the graph to console.

Parameters

options?

Display settings passed to toVisual.

showWeight?

boolean

Returns

void

Overrides

IterableEntryBase.print


reduce()

reduce<U>(callbackfn, initialValue): U;

Defined in: data-structures/base/iterable-entry-base.ts:171

Reduce entries into a single accumulator.

Type Parameters

U

U

Parameters

callbackfn

ReduceEntryCallback<VertexKey, V | undefined, U>

(acc, value, key, index, self) => acc.

initialValue

U

Initial accumulator.

Returns

U

Final accumulator.

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.reduce


removeManyVertices()

removeManyVertices(vertexMap): boolean;

Defined in: data-structures/graph/abstract-graph.ts:234

Delete multiple vertices.

Parameters

vertexMap

VO[] | VertexKey[]

Array of vertices or keys.

Returns

boolean

true if any vertex was removed.

Remarks

Time O(sum(deg)), Space O(1)


setEdgeWeight()

setEdgeWeight(
srcOrKey,
destOrKey,
weight): boolean;

Defined in: data-structures/graph/abstract-graph.ts:291

Set the weight of an existing edge.

Parameters

srcOrKey

VertexKey | VO

Source vertex or key.

destOrKey

VertexKey | VO

Destination vertex or key.

weight

number

New weight.

Returns

boolean

true if updated; otherwise false.

Remarks

Time O(1) avg, Space O(1)


some()

some(predicate, thisArg?): boolean;

Defined in: data-structures/base/iterable-entry-base.ts:83

Test whether any entry satisfies the predicate.

Parameters

predicate

EntryCallback<VertexKey, V | undefined, boolean>

(key, value, index, self) => boolean.

thisArg?

unknown

Optional this for callback.

Returns

boolean

true if any passes; otherwise false.

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.some


toArray()

toArray(): [VertexKey, V | undefined][];

Defined in: data-structures/base/iterable-entry-base.ts:186

Converts data structure to [key, value] pairs.

Returns

[VertexKey, V | undefined][]

Array of entries.

Remarks

Time O(n), Space O(n)

Inherited from

IterableEntryBase.toArray


toDot()

toDot(options?): string;

Defined in: data-structures/graph/abstract-graph.ts:1143

Generate DOT language representation for Graphviz.

Parameters

options?

Optional display settings.

name?

string

Graph name (default: 'G').

showWeight?

boolean

Whether to label edges with weight (default: true).

Returns

string

DOT format string.


toVisual()

toVisual(options?): string;

Defined in: data-structures/graph/abstract-graph.ts:1108

Generate a text-based visual representation of the graph.

Adjacency list format:

Graph (5 vertices, 6 edges):
A -> B (1), C (2)
B -> D (3)
C -> (no outgoing edges)
D -> A (1)
E (isolated)

Parameters

options?

Optional display settings.

showWeight?

boolean

Whether to show edge weights (default: true).

Returns

string

The visual string.

Overrides

IterableEntryBase.toVisual


values()

values(): IterableIterator<V | undefined>;

Defined in: data-structures/base/iterable-entry-base.ts:53

Iterate over values only.

Returns

IterableIterator<V | undefined>

Iterator of values.

Remarks

Time O(n), Space O(1)

Inherited from

IterableEntryBase.values


Protected Members

_edgeConnector

Get Signature

get protected _edgeConnector(): string;

Defined in: data-structures/graph/abstract-graph.ts:1087

The edge connector string used in visual output. Override in subclasses (e.g., '--' for undirected, '->' for directed).

Returns

string


_addEdge()

abstract protected _addEdge(edge): boolean;

Defined in: data-structures/graph/abstract-graph.ts:1046

Internal hook to attach an edge into adjacency structures.

Parameters

edge

EO

Edge instance.

Returns

boolean

true if inserted; otherwise false.

Remarks

Time O(1) avg, Space O(1)


_addVertex()

protected _addVertex(newVertex): boolean;

Defined in: data-structures/graph/abstract-graph.ts:1054

Insert a pre-built vertex into the graph.

Parameters

newVertex

VO

Concrete vertex instance.

Returns

boolean

true if inserted; false if key already exists.

Remarks

Time O(1) avg, Space O(1)


_createInstance()

protected _createInstance(_options?): this;

Defined in: data-structures/graph/abstract-graph.ts:987

Create an empty graph instance of the same concrete species.

Parameters

_options?

Partial<Record<string, unknown>>

Snapshot options from _snapshotOptions().

Returns

this

A new empty graph instance of this type.

Remarks

Time O(1), Space O(1)


_createLike()

protected _createLike(iter?, options?): this;

Defined in: data-structures/graph/abstract-graph.ts:1009

Create a same-species graph populated with entries; preserves edges among kept vertices.

Parameters

iter?

Iterable<[VertexKey, V | undefined], any, any>

Optional entries to seed the new graph.

options?

Partial<Record<string, unknown>>

Snapshot options.

Returns

this

A new graph of this type.

Remarks

Time O(V + E), Space O(V + E)


_getIterator()

protected _getIterator(): IterableIterator<[VertexKey, V | undefined]>;

Defined in: data-structures/graph/abstract-graph.ts:958

Internal iterator over [key, value] entries in insertion order.

Returns

IterableIterator<[VertexKey, V | undefined]>

Iterator of [VertexKey, V | undefined].

Remarks

Time O(V), Space O(1)

Overrides

IterableEntryBase._getIterator


_getVertex()

protected _getVertex(vertexOrKey): VO | undefined;

Defined in: data-structures/graph/abstract-graph.ts:1068

Resolve a vertex key or instance to the concrete vertex instance.

Parameters

vertexOrKey

VertexKey | VO

Vertex key or existing vertex.

Returns

VO | undefined

Vertex instance or undefined.

Remarks

Time O(1), Space O(1)


_getVertexKey()

protected _getVertexKey(vertexOrKey): VertexKey;

Defined in: data-structures/graph/abstract-graph.ts:1079

Resolve a vertex key from a key or vertex instance.

Parameters

vertexOrKey

VertexKey | VO

Vertex key or existing vertex.

Returns

VertexKey

The vertex key.

Remarks

Time O(1), Space O(1)


_snapshotOptions()

protected _snapshotOptions(): Record<string, unknown>;

Defined in: data-structures/graph/abstract-graph.ts:973

Capture configuration needed to reproduce the current graph.

Returns

Record<string, unknown>

Options bag (opaque to callers).

Remarks

Time O(1), Space O(1)