[**data-structure-typed**](../README.md)

***

[data-structure-typed](../README.md) / AbstractGraph

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

Defined in: [data-structures/graph/abstract-graph.ts:53](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L53)

Abstract graph over vertices and edges.

## Remarks

Time O(1), Space O(1)

## Example

```ts
examples will be generated by unit test
```

## Extends

- [`IterableEntryBase`](IterableEntryBase.md)\<`VertexKey`, `V` \| `undefined`\>

## Extended by

- [`DirectedGraph`](DirectedGraph.md)
- [`UndirectedGraph`](UndirectedGraph.md)

## 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<V>).

### EO

`EO` *extends* `AbstractEdge`\<`E`\> = `AbstractEdge`\<`E`\>

Concrete edge subclass (extends AbstractEdge<E>).

## Implements

- `IGraph`\<`V`, `E`, `VO`, `EO`\>

## Constructors

### Constructor

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

Defined in: [data-structures/graph/abstract-graph.ts:67](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L67)

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

```ts
IterableEntryBase<VertexKey, V | undefined>.constructor
```

## Accessors

### size

#### Get Signature

```ts
get size(): number;
```

Defined in: [data-structures/graph/abstract-graph.ts:89](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L89)

Total number of entries.

##### Remarks

Time O(1), Space O(1)

##### Returns

`number`

Entry count.

#### Overrides

[`IterableEntryBase`](IterableEntryBase.md).[`size`](IterableEntryBase.md#size)

## Methods

### \[iterator\]()

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

Defined in: [data-structures/base/iterable-entry-base.ts:22](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L22)

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`](IterableEntryBase.md).[`[iterator]`](IterableEntryBase.md#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

```ts
addEdge(edge): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:254](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L254)

##### Parameters

###### edge

`EO`

##### Returns

`boolean`

#### Call Signature

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

Defined in: [data-structures/graph/abstract-graph.ts:256](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L256)

##### 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

```ts
addVertex(vertex): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:189](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L189)

##### Parameters

###### vertex

`VO`

##### Returns

`boolean`

##### Implementation of

```ts
IGraph.addVertex
```

#### Call Signature

```ts
addVertex(key, value?): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:191](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L191)

##### Parameters

###### key

`VertexKey`

###### value?

`V`

##### Returns

`boolean`

##### Implementation of

```ts
IGraph.addVertex
```

***

### bellmanFord()

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

Defined in: [data-structures/graph/abstract-graph.ts:705](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L705)

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

```ts
distMap: Map<VO, number>;
```

##### hasNegativeCycle

```ts
hasNegativeCycle: boolean | undefined;
```

##### min

```ts
min: number;
```

##### minPath

```ts
minPath: VO[];
```

##### paths

```ts
paths: VO[][];
```

##### preMap

```ts
preMap: Map<VO, VO>;
```

#### Remarks

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

***

### clear()

```ts
abstract clear(): void;
```

Defined in: [data-structures/base/iterable-entry-base.ts:218](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L218)

Remove all entries.

#### Returns

`void`

#### Remarks

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

#### Implementation of

```ts
IGraph.clear
```

#### Inherited from

[`IterableEntryBase`](IterableEntryBase.md).[`clear`](IterableEntryBase.md#clear)

***

### clone()

```ts
clone(): this;
```

Defined in: [data-structures/graph/abstract-graph.ts:947](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L947)

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

```ts
IGraph.clone
```

#### Overrides

[`IterableEntryBase`](IterableEntryBase.md).[`clone`](IterableEntryBase.md#clone)

***

### createEdge()

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

Defined in: [data-structures/graph/abstract-graph.ts:111](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L111)

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

```ts
IGraph.createEdge
```

***

### createVertex()

```ts
abstract createVertex(key, value?): VO;
```

Defined in: [data-structures/graph/abstract-graph.ts:100](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L100)

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

```ts
IGraph.createVertex
```

***

### degreeOf()

```ts
abstract degreeOf(vertexOrKey): number;
```

Defined in: [data-structures/graph/abstract-graph.ts:136](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L136)

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

```ts
IGraph.degreeOf
```

***

### deleteEdge()

```ts
abstract deleteEdge(edge): EO | undefined;
```

Defined in: [data-structures/graph/abstract-graph.ts:119](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L119)

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

```ts
IGraph.deleteEdge
```

***

### deleteVertex()

```ts
abstract deleteVertex(vertexOrKey): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:226](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L226)

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

```ts
IGraph.deleteVertex
```

***

### dijkstraWithoutHeap()

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

Defined in: [data-structures/graph/abstract-graph.ts:484](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L484)

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()

```ts
abstract edgeSet(): EO[];
```

Defined in: [data-structures/graph/abstract-graph.ts:143](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L143)

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

#### Returns

`EO`[]

Array of edges.

#### Remarks

Time O(E), Space O(E)

#### Implementation of

```ts
IGraph.edgeSet
```

***

### edgesOf()

```ts
abstract edgesOf(vertexOrKey): EO[];
```

Defined in: [data-structures/graph/abstract-graph.ts:151](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L151)

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

```ts
IGraph.edgesOf
```

***

### entries()

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

Defined in: [data-structures/base/iterable-entry-base.ts:31](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L31)

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`](IterableEntryBase.md).[`entries`](IterableEntryBase.md#entries)

***

### every()

```ts
every(predicate, thisArg?): boolean;
```

Defined in: [data-structures/base/iterable-entry-base.ts:66](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L66)

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`](IterableEntryBase.md).[`every`](IterableEntryBase.md#every)

***

### filter()

```ts
filter(predicate, thisArg?): this;
```

Defined in: [data-structures/graph/abstract-graph.ts:897](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L897)

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

```ts
IGraph.filter
```

#### Overrides

[`IterableEntryBase`](IterableEntryBase.md).[`filter`](IterableEntryBase.md#filter)

***

### filterEntries()

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

Defined in: [data-structures/graph/abstract-graph.ts:913](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L913)

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()

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

Defined in: [data-structures/base/iterable-entry-base.ts:114](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L114)

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`](IterableEntryBase.md).[`find`](IterableEntryBase.md#find)

***

### floydWarshall()

```ts
floydWarshall(): object;
```

Defined in: [data-structures/graph/abstract-graph.ts:798](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L798)

Floyd–Warshall all-pairs shortest paths.

#### Returns

`object`

`{ costs, predecessor }` matrices.

##### costs

```ts
costs: number[][];
```

##### predecessor

```ts
predecessor: (VO | undefined)[][];
```

#### Remarks

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

***

### forEach()

```ts
forEach(callbackfn, thisArg?): void;
```

Defined in: [data-structures/base/iterable-entry-base.ts:99](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L99)

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`](IterableEntryBase.md).[`forEach`](IterableEntryBase.md#foreach)

***

### get()

```ts
get(key): V | undefined;
```

Defined in: [data-structures/base/iterable-entry-base.ts:156](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L156)

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`](IterableEntryBase.md).[`get`](IterableEntryBase.md#get)

***

### getAllPathsBetween()

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

Defined in: [data-structures/graph/abstract-graph.ts:309](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L309)

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()

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

Defined in: [data-structures/graph/abstract-graph.ts:838](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L838)

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()

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

Defined in: [data-structures/graph/abstract-graph.ts:128](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L128)

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

```ts
IGraph.getEdge
```

***

### getEndsOfEdge()

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

Defined in: [data-structures/graph/abstract-graph.ts:167](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L167)

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

```ts
IGraph.getEndsOfEdge
```

***

### getMinCostBetween()

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

Defined in: [data-structures/graph/abstract-graph.ts:362](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L362)

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()

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

Defined in: [data-structures/graph/abstract-graph.ts:415](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L415)

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()

```ts
abstract getNeighbors(vertexOrKey): VO[];
```

Defined in: [data-structures/graph/abstract-graph.ts:159](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L159)

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

```ts
IGraph.getNeighbors
```

***

### getPathSumWeight()

```ts
getPathSumWeight(path): number;
```

Defined in: [data-structures/graph/abstract-graph.ts:346](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L346)

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()

```ts
getVertex(vertexKey): VO | undefined;
```

Defined in: [data-structures/graph/abstract-graph.ts:175](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L175)

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

```ts
IGraph.getVertex
```

***

### has()

```ts
has(key): boolean;
```

Defined in: [data-structures/base/iterable-entry-base.ts:129](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L129)

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`](IterableEntryBase.md).[`has`](IterableEntryBase.md#has)

***

### hasEdge()

```ts
hasEdge(v1, v2): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:249](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L249)

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()

```ts
hasValue(value): boolean;
```

Defined in: [data-structures/base/iterable-entry-base.ts:143](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L143)

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`](IterableEntryBase.md).[`hasValue`](IterableEntryBase.md#hasvalue)

***

### hasVertex()

```ts
hasVertex(vertexOrKey): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:185](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L185)

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

```ts
IGraph.hasVertex
```

***

### isEmpty()

```ts
abstract isEmpty(): boolean;
```

Defined in: [data-structures/base/iterable-entry-base.ts:212](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L212)

Whether there are no entries.

#### Returns

`boolean`

`true` if empty; `false` otherwise.

#### Remarks

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

#### Implementation of

```ts
IGraph.isEmpty
```

#### Inherited from

[`IterableEntryBase`](IterableEntryBase.md).[`isEmpty`](IterableEntryBase.md#isempty)

***

### isVertexKey()

```ts
isVertexKey(potentialKey): potentialKey is VertexKey;
```

Defined in: [data-structures/graph/abstract-graph.ts:215](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L215)

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()

```ts
keys(): IterableIterator<VertexKey>;
```

Defined in: [data-structures/base/iterable-entry-base.ts:42](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L42)

Iterate over keys only.

#### Returns

`IterableIterator`\<`VertexKey`\>

Iterator of keys.

#### Remarks

Time O(n), Space O(1)

#### Inherited from

[`IterableEntryBase`](IterableEntryBase.md).[`keys`](IterableEntryBase.md#keys)

***

### map()

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

Defined in: [data-structures/graph/abstract-graph.ts:928](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L928)

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`](IterableEntryBase.md).[`map`](IterableEntryBase.md#map)

***

### print()

```ts
print(options?): void;
```

Defined in: [data-structures/graph/abstract-graph.ts:1183](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1183)

Print the graph to console.

#### Parameters

##### options?

Display settings passed to `toVisual`.

###### showWeight?

`boolean`

#### Returns

`void`

#### Overrides

[`IterableEntryBase`](IterableEntryBase.md).[`print`](IterableEntryBase.md#print)

***

### reduce()

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

Defined in: [data-structures/base/iterable-entry-base.ts:171](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L171)

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`](IterableEntryBase.md).[`reduce`](IterableEntryBase.md#reduce)

***

### removeManyVertices()

```ts
removeManyVertices(vertexMap): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:234](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L234)

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()

```ts
setEdgeWeight(
   srcOrKey, 
   destOrKey, 
   weight): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:291](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L291)

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()

```ts
some(predicate, thisArg?): boolean;
```

Defined in: [data-structures/base/iterable-entry-base.ts:83](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L83)

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`](IterableEntryBase.md).[`some`](IterableEntryBase.md#some)

***

### toArray()

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

Defined in: [data-structures/base/iterable-entry-base.ts:186](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L186)

Converts data structure to `[key, value]` pairs.

#### Returns

\[`VertexKey`, `V` \| `undefined`\][]

Array of entries.

#### Remarks

Time O(n), Space O(n)

#### Inherited from

[`IterableEntryBase`](IterableEntryBase.md).[`toArray`](IterableEntryBase.md#toarray)

***

### toDot()

```ts
toDot(options?): string;
```

Defined in: [data-structures/graph/abstract-graph.ts:1143](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1143)

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()

```ts
toVisual(options?): string;
```

Defined in: [data-structures/graph/abstract-graph.ts:1108](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1108)

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`](IterableEntryBase.md).[`toVisual`](IterableEntryBase.md#tovisual)

***

### values()

```ts
values(): IterableIterator<V | undefined>;
```

Defined in: [data-structures/base/iterable-entry-base.ts:53](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/base/iterable-entry-base.ts#L53)

Iterate over values only.

#### Returns

`IterableIterator`\<`V` \| `undefined`\>

Iterator of values.

#### Remarks

Time O(n), Space O(1)

#### Inherited from

[`IterableEntryBase`](IterableEntryBase.md).[`values`](IterableEntryBase.md#values)


---

## Protected Members

### \_edgeConnector

#### Get Signature

```ts
get protected _edgeConnector(): string;
```

Defined in: [data-structures/graph/abstract-graph.ts:1087](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1087)

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

##### Returns

`string`

***

### \_addEdge()

```ts
abstract protected _addEdge(edge): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:1046](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1046)

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()

```ts
protected _addVertex(newVertex): boolean;
```

Defined in: [data-structures/graph/abstract-graph.ts:1054](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1054)

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()

```ts
protected _createInstance(_options?): this;
```

Defined in: [data-structures/graph/abstract-graph.ts:987](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L987)

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()

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

Defined in: [data-structures/graph/abstract-graph.ts:1009](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1009)

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()

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

Defined in: [data-structures/graph/abstract-graph.ts:958](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L958)

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`](IterableEntryBase.md).[`_getIterator`](IterableEntryBase.md#_getiterator)

***

### \_getVertex()

```ts
protected _getVertex(vertexOrKey): VO | undefined;
```

Defined in: [data-structures/graph/abstract-graph.ts:1068](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1068)

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()

```ts
protected _getVertexKey(vertexOrKey): VertexKey;
```

Defined in: [data-structures/graph/abstract-graph.ts:1079](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L1079)

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()

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

Defined in: [data-structures/graph/abstract-graph.ts:973](https://github.com/zrwusa/data-structure-typed/blob/main/src/data-structures/graph/abstract-graph.ts#L973)

Capture configuration needed to reproduce the current graph.

#### Returns

`Record`\<`string`, `unknown`\>

Options bag (opaque to callers).

#### Remarks

Time O(1), Space O(1)

***
