typescript-dsa-stl 2.2.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -2
- package/dist/algorithms/graph.d.ts +43 -0
- package/dist/algorithms/graph.d.ts.map +1 -1
- package/dist/algorithms/graph.js +134 -0
- package/dist/algorithms/graph.js.map +1 -1
- package/dist/algorithms/index.d.ts +1 -1
- package/dist/algorithms/index.d.ts.map +1 -1
- package/dist/algorithms/index.js +1 -1
- package/dist/algorithms/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -236,6 +236,70 @@ Use an **unweighted** graph (adjacency list) when you only care about connectivi
|
|
|
236
236
|
| **Grid / game graphs** | Unweighted: 4- or 8-neighbor grids; weighted if movement costs differ per cell. |
|
|
237
237
|
| **Network / flow** | Weighted: capacities or latencies on edges for max-flow or routing. |
|
|
238
238
|
|
|
239
|
+
#### Breadth-first search (BFS) and depth-first search (DFS)
|
|
240
|
+
|
|
241
|
+
`breadthFirstSearch` and `depthFirstSearch` take the number of vertices `n`, an unweighted `AdjacencyList`, and a `start` vertex. They return the **visit order** for all vertices **reachable** from `start` (vertices outside that component are not included). For an undirected graph, add each edge in **both** directions (see `addEdge` below).
|
|
242
|
+
|
|
243
|
+
**Example graph (diamond):** edges `0—1`, `0—2`, `1—3`, `2—3`.
|
|
244
|
+
|
|
245
|
+
```text
|
|
246
|
+
0
|
|
247
|
+
/ \
|
|
248
|
+
1 2
|
|
249
|
+
\ /
|
|
250
|
+
3
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
With neighbors listed in ascending vertex id (`0: [1,2]`, `1: [0,3]`, …), **BFS** from `0` visits by increasing distance from `0`: first `0`, then `1` and `2`, then `3` → order `[0, 1, 2, 3]`. **DFS** (preorder, first neighbor in each list first) goes `0 → 1 → 3` then `2` → order `[0, 1, 3, 2]`. The exact DFS order depends on how you order each adjacency list.
|
|
254
|
+
|
|
255
|
+
```ts
|
|
256
|
+
import {
|
|
257
|
+
createAdjacencyList,
|
|
258
|
+
addEdge,
|
|
259
|
+
breadthFirstSearch,
|
|
260
|
+
depthFirstSearch,
|
|
261
|
+
} from 'typescript-dsa-stl';
|
|
262
|
+
|
|
263
|
+
const n = 4;
|
|
264
|
+
const graph = createAdjacencyList(n);
|
|
265
|
+
|
|
266
|
+
// Undirected diamond: add both directions for each edge
|
|
267
|
+
addEdge(graph, 0, 1);
|
|
268
|
+
addEdge(graph, 1, 0);
|
|
269
|
+
addEdge(graph, 0, 2);
|
|
270
|
+
addEdge(graph, 2, 0);
|
|
271
|
+
addEdge(graph, 1, 3);
|
|
272
|
+
addEdge(graph, 3, 1);
|
|
273
|
+
addEdge(graph, 2, 3);
|
|
274
|
+
addEdge(graph, 3, 2);
|
|
275
|
+
|
|
276
|
+
const start = 0;
|
|
277
|
+
|
|
278
|
+
// BFS: level-by-level from start (hop count); output: [0, 1, 2, 3]
|
|
279
|
+
console.log(breadthFirstSearch(n, graph, start));
|
|
280
|
+
// Expected console output: [ 0, 1, 2, 3 ]
|
|
281
|
+
|
|
282
|
+
// DFS: preorder with explicit stack; output: [0, 1, 3, 2] for this adjacency layout
|
|
283
|
+
console.log(depthFirstSearch(n, graph, start));
|
|
284
|
+
// Expected console output: [ 0, 1, 3, 2 ]
|
|
285
|
+
|
|
286
|
+
// Invalid start → empty traversal
|
|
287
|
+
console.log(breadthFirstSearch(n, graph, -1)); // []
|
|
288
|
+
console.log(depthFirstSearch(n, graph, n)); // []
|
|
289
|
+
|
|
290
|
+
// Vertex 4 isolated: BFS/DFS from 0 never visits 4
|
|
291
|
+
const withIsolated = createAdjacencyList(5);
|
|
292
|
+
addEdge(withIsolated, 0, 1);
|
|
293
|
+
addEdge(withIsolated, 1, 0);
|
|
294
|
+
console.log(breadthFirstSearch(5, withIsolated, 0)); // [0, 1] — not [0,1,2,3,4]
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**Notes**
|
|
298
|
+
|
|
299
|
+
- **Directed graphs:** only list outgoing edges in `adj[u]`; traversal follows arcs from `start`.
|
|
300
|
+
- **Disconnected graphs:** run again from another unvisited `start`, or use `connectedComponents` to enumerate components first.
|
|
301
|
+
- **Weighted graphs:** for traversal ignoring weights, use the same vertex lists as the unweighted graph (weights are ignored by these two functions).
|
|
302
|
+
|
|
239
303
|
#### Disjoint Set Union (Union-Find)
|
|
240
304
|
|
|
241
305
|
Use Union-Find (DSU) to compute connected components efficiently. It merges endpoints of every edge in the adjacency list, so for directed graphs it returns weak connectivity components.
|
|
@@ -295,6 +359,38 @@ const { edges, totalWeight } = kruskalMST(n, wGraph, { undirected: true });
|
|
|
295
359
|
// edges: MST edges (chosen by weight), totalWeight: sum of weights
|
|
296
360
|
```
|
|
297
361
|
|
|
362
|
+
#### Dijkstra shortest paths
|
|
363
|
+
|
|
364
|
+
`dijkstra` computes single-source shortest paths on a **weighted** graph with **non-negative** edge weights.
|
|
365
|
+
It returns:
|
|
366
|
+
|
|
367
|
+
- `dist[v]`: shortest distance from `start` to `v` (`Infinity` if unreachable)
|
|
368
|
+
- `prev[v]`: previous vertex on the shortest path (or `-1` if none)
|
|
369
|
+
|
|
370
|
+
```ts
|
|
371
|
+
import { createWeightedAdjacencyList, addEdge, dijkstra, reconstructPath } from 'typescript-dsa-stl'; // graph + shortest path helpers
|
|
372
|
+
|
|
373
|
+
const n = 5; // vertices 0..4
|
|
374
|
+
const g = createWeightedAdjacencyList(n); // WeightedAdjacencyList: g[u] = [{to, weight}, ...]
|
|
375
|
+
|
|
376
|
+
// Directed edges (add both directions for undirected graphs)
|
|
377
|
+
// addEdge(g, from, to, weight)
|
|
378
|
+
addEdge(g, 0, 1, 2); // 0 -> 1 (cost 2)
|
|
379
|
+
addEdge(g, 0, 2, 5); // 0 -> 2 (cost 5)
|
|
380
|
+
addEdge(g, 1, 2, 1); // 1 -> 2 (cost 1)
|
|
381
|
+
addEdge(g, 1, 3, 2); // 1 -> 3 (cost 2)
|
|
382
|
+
addEdge(g, 2, 4, 1); // 2 -> 4 (cost 1)
|
|
383
|
+
addEdge(g, 3, 4, 3); // 3 -> 4 (cost 3)
|
|
384
|
+
|
|
385
|
+
const { dist, prev } = dijkstra(n, g, 0); // start = 0; dist/prev arrays length n
|
|
386
|
+
console.log(dist); // dist[v] = shortest distance from 0 to v (Infinity if unreachable), e.g. [0, 2, 3, 4, 4]
|
|
387
|
+
|
|
388
|
+
// Reconstruct path 0 -> 4
|
|
389
|
+
const target = 4; // destination vertex
|
|
390
|
+
const path = reconstructPath(prev, 0, target); // [0, ..., target] or [] if unreachable
|
|
391
|
+
console.log(path); // [0, 1, 2, 4]
|
|
392
|
+
```
|
|
393
|
+
|
|
298
394
|
##### Traverse the MST
|
|
299
395
|
|
|
300
396
|
`kruskalMST(...)` returns `{ edges, totalWeight }`. To traverse the MST like a graph, convert `edges` into an adjacency list:
|
|
@@ -430,7 +526,7 @@ console.log(a.substringHash(2, 2) === b.fullHash()); // true — both are "na"
|
|
|
430
526
|
| Module | Exports |
|
|
431
527
|
|--------|--------|
|
|
432
528
|
| **Collections** | `Vector`, `Stack`, `Queue`, `List`, `ListNode`, `PriorityQueue`, `OrderedMap`, `UnorderedMap`, `OrderedSet`, `UnorderedSet`, `OrderedMultiMap`, `OrderedMultiSet`, `WeightedEdge`, `AdjacencyList`, `WeightedAdjacencyList`, `createAdjacencyList`, `createWeightedAdjacencyList`, `addEdge`, `deleteEdge` |
|
|
433
|
-
| **Algorithms** | `sort`, `find`, `findIndex`, `transform`, `filter`, `reduce`, `reverse`, `unique`, `binarySearch`, `lowerBound`, `upperBound`, `min`, `max`, `partition`, `DisjointSetUnion`, `KnuthMorrisPratt`, `RabinKarp`, `RABIN_KARP_DEFAULT_MODS`, `StringRollingHash`, `connectedComponents`, `kruskalMST` |
|
|
529
|
+
| **Algorithms** | `sort`, `find`, `findIndex`, `transform`, `filter`, `reduce`, `reverse`, `unique`, `binarySearch`, `lowerBound`, `upperBound`, `min`, `max`, `partition`, `DisjointSetUnion`, `KnuthMorrisPratt`, `RabinKarp`, `RABIN_KARP_DEFAULT_MODS`, `StringRollingHash`, `breadthFirstSearch`, `depthFirstSearch`, `connectedComponents`, `kruskalMST` |
|
|
434
530
|
| **Utils** | `clamp`, `range`, `noop`, `identity`, `swap` |
|
|
435
531
|
| **Types** | `Comparator`, `Predicate`, `UnaryFn`, `Reducer`, `IterableLike`, `toArray`, `RabinKarpTripleMods` |
|
|
436
532
|
|
|
@@ -438,7 +534,7 @@ console.log(a.substringHash(2, 2) === b.fullHash()); // true — both are "na"
|
|
|
438
534
|
|
|
439
535
|
```ts
|
|
440
536
|
import { Vector, Stack } from 'typescript-dsa-stl/collections';
|
|
441
|
-
import { sort, binarySearch, KnuthMorrisPratt, RabinKarp, StringRollingHash } from 'typescript-dsa-stl/algorithms';
|
|
537
|
+
import { sort, binarySearch, breadthFirstSearch, depthFirstSearch, KnuthMorrisPratt, RabinKarp, StringRollingHash } from 'typescript-dsa-stl/algorithms';
|
|
442
538
|
import { clamp, range } from 'typescript-dsa-stl/utils';
|
|
443
539
|
import type { Comparator } from 'typescript-dsa-stl/types';
|
|
444
540
|
```
|
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
import type { AdjacencyList, WeightedAdjacencyList } from '../collections/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Breadth-first search from `start` on an unweighted adjacency list.
|
|
4
|
+
* Visits every vertex reachable from `start` in non-decreasing distance (hop count) from `start`.
|
|
5
|
+
*
|
|
6
|
+
* Complexity: O(n + m) time, O(n) extra space (n = vertices, m = edges traversed).
|
|
7
|
+
*
|
|
8
|
+
* - Vertices are assumed numbered `0..n-1`.
|
|
9
|
+
* - Out-of-range or invalid `start` yields an empty order.
|
|
10
|
+
* - Neighbors are enqueued in the order they appear in `adj[u]`; the exact visit order depends on that ordering.
|
|
11
|
+
*/
|
|
12
|
+
export declare function breadthFirstSearch(n: number, adj: AdjacencyList<number>, start: number): number[];
|
|
13
|
+
/**
|
|
14
|
+
* Depth-first search (preorder) from `start` on an unweighted adjacency list.
|
|
15
|
+
* Visits all vertices reachable from `start` using an explicit stack (no recursion).
|
|
16
|
+
*
|
|
17
|
+
* Complexity: O(n + m) time, O(n) extra space.
|
|
18
|
+
*
|
|
19
|
+
* - Vertices are assumed numbered `0..n-1`.
|
|
20
|
+
* - Out-of-range or invalid `start` yields an empty order.
|
|
21
|
+
* - Neighbors are explored in the order they appear in `adj[u]` (first neighbor in the list is visited first).
|
|
22
|
+
*/
|
|
23
|
+
export declare function depthFirstSearch(n: number, adj: AdjacencyList<number>, start: number): number[];
|
|
2
24
|
export interface WeightedUndirectedEdge {
|
|
3
25
|
u: number;
|
|
4
26
|
v: number;
|
|
@@ -26,4 +48,25 @@ export declare function kruskalMST(n: number, adj: WeightedAdjacencyList<number,
|
|
|
26
48
|
edges: WeightedUndirectedEdge[];
|
|
27
49
|
totalWeight: number;
|
|
28
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* Dijkstra's single-source shortest paths on a weighted adjacency list with non-negative weights.
|
|
53
|
+
*
|
|
54
|
+
* Complexity: O((n + m) log m) with a binary heap priority queue.
|
|
55
|
+
*
|
|
56
|
+
* @returns
|
|
57
|
+
* - dist[v] = shortest distance from start to v (Infinity if unreachable)
|
|
58
|
+
* - prev[v] = previous vertex on the shortest path (or -1 if none)
|
|
59
|
+
*/
|
|
60
|
+
export declare function dijkstra(n: number, adj: WeightedAdjacencyList<number, number>, start: number, options?: {
|
|
61
|
+
target?: number;
|
|
62
|
+
}): {
|
|
63
|
+
dist: number[];
|
|
64
|
+
prev: number[];
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Reconstruct a path from a `prev` array (as returned by `dijkstra`).
|
|
68
|
+
*
|
|
69
|
+
* @returns an array of vertices from start to target (inclusive), or [] if unreachable.
|
|
70
|
+
*/
|
|
71
|
+
export declare function reconstructPath(prev: readonly number[], start: number, target: number): number[];
|
|
29
72
|
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/algorithms/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/algorithms/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIpF;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,EAC1B,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAmBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,EAC1B,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAiBV;AAED,MAAM,WAAW,sBAAsB;IACrC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,GACzB,MAAM,EAAE,EAAE,CAQZ;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAgC1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAmCpC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAgBV"}
|
package/dist/algorithms/graph.js
CHANGED
|
@@ -1,4 +1,67 @@
|
|
|
1
|
+
import { PriorityQueue } from '../collections/index.js';
|
|
1
2
|
import { DisjointSetUnion } from './disjointSetUnion.js';
|
|
3
|
+
/**
|
|
4
|
+
* Breadth-first search from `start` on an unweighted adjacency list.
|
|
5
|
+
* Visits every vertex reachable from `start` in non-decreasing distance (hop count) from `start`.
|
|
6
|
+
*
|
|
7
|
+
* Complexity: O(n + m) time, O(n) extra space (n = vertices, m = edges traversed).
|
|
8
|
+
*
|
|
9
|
+
* - Vertices are assumed numbered `0..n-1`.
|
|
10
|
+
* - Out-of-range or invalid `start` yields an empty order.
|
|
11
|
+
* - Neighbors are enqueued in the order they appear in `adj[u]`; the exact visit order depends on that ordering.
|
|
12
|
+
*/
|
|
13
|
+
export function breadthFirstSearch(n, adj, start) {
|
|
14
|
+
if (start < 0 || start >= n)
|
|
15
|
+
return [];
|
|
16
|
+
const seen = new Uint8Array(n);
|
|
17
|
+
const order = [];
|
|
18
|
+
const q = [];
|
|
19
|
+
let qh = 0;
|
|
20
|
+
seen[start] = 1;
|
|
21
|
+
q.push(start);
|
|
22
|
+
while (qh < q.length) {
|
|
23
|
+
const u = q[qh++];
|
|
24
|
+
order.push(u);
|
|
25
|
+
for (const v of adj[u] ?? []) {
|
|
26
|
+
if (v >= 0 && v < n && !seen[v]) {
|
|
27
|
+
seen[v] = 1;
|
|
28
|
+
q.push(v);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return order;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Depth-first search (preorder) from `start` on an unweighted adjacency list.
|
|
36
|
+
* Visits all vertices reachable from `start` using an explicit stack (no recursion).
|
|
37
|
+
*
|
|
38
|
+
* Complexity: O(n + m) time, O(n) extra space.
|
|
39
|
+
*
|
|
40
|
+
* - Vertices are assumed numbered `0..n-1`.
|
|
41
|
+
* - Out-of-range or invalid `start` yields an empty order.
|
|
42
|
+
* - Neighbors are explored in the order they appear in `adj[u]` (first neighbor in the list is visited first).
|
|
43
|
+
*/
|
|
44
|
+
export function depthFirstSearch(n, adj, start) {
|
|
45
|
+
if (start < 0 || start >= n)
|
|
46
|
+
return [];
|
|
47
|
+
const seen = new Uint8Array(n);
|
|
48
|
+
const order = [];
|
|
49
|
+
const stack = [start];
|
|
50
|
+
while (stack.length > 0) {
|
|
51
|
+
const u = stack.pop();
|
|
52
|
+
if (seen[u])
|
|
53
|
+
continue;
|
|
54
|
+
seen[u] = 1;
|
|
55
|
+
order.push(u);
|
|
56
|
+
const neighbors = adj[u] ?? [];
|
|
57
|
+
for (let i = neighbors.length - 1; i >= 0; i--) {
|
|
58
|
+
const v = neighbors[i];
|
|
59
|
+
if (v >= 0 && v < n && !seen[v])
|
|
60
|
+
stack.push(v);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return order;
|
|
64
|
+
}
|
|
2
65
|
/**
|
|
3
66
|
* Connected components in an (unweighted) graph using DSU.
|
|
4
67
|
* Complexity: O((n + m) * alpha(n)).
|
|
@@ -54,4 +117,75 @@ export function kruskalMST(n, adj, options) {
|
|
|
54
117
|
}
|
|
55
118
|
return { edges: mstEdges, totalWeight };
|
|
56
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Dijkstra's single-source shortest paths on a weighted adjacency list with non-negative weights.
|
|
122
|
+
*
|
|
123
|
+
* Complexity: O((n + m) log m) with a binary heap priority queue.
|
|
124
|
+
*
|
|
125
|
+
* @returns
|
|
126
|
+
* - dist[v] = shortest distance from start to v (Infinity if unreachable)
|
|
127
|
+
* - prev[v] = previous vertex on the shortest path (or -1 if none)
|
|
128
|
+
*/
|
|
129
|
+
export function dijkstra(n, adj, start, options) {
|
|
130
|
+
const dist = Array(n).fill(Number.POSITIVE_INFINITY);
|
|
131
|
+
const prev = Array(n).fill(-1);
|
|
132
|
+
if (start < 0 || start >= n)
|
|
133
|
+
return { dist, prev };
|
|
134
|
+
const target = options?.target;
|
|
135
|
+
dist[start] = 0;
|
|
136
|
+
// PriorityQueue is a max-heap by default; invert comparator to make it a min-heap by distance.
|
|
137
|
+
const pq = new PriorityQueue((a, b) => b.d - a.d);
|
|
138
|
+
pq.push({ v: start, d: 0 });
|
|
139
|
+
while (!pq.empty) {
|
|
140
|
+
const cur = pq.pop();
|
|
141
|
+
const u = cur.v;
|
|
142
|
+
const d = cur.d;
|
|
143
|
+
if (d !== dist[u])
|
|
144
|
+
continue; // stale entry
|
|
145
|
+
if (target !== undefined && u === target)
|
|
146
|
+
break;
|
|
147
|
+
for (const e of adj[u] ?? []) {
|
|
148
|
+
const v = e.to;
|
|
149
|
+
const w = e.weight;
|
|
150
|
+
if (v < 0 || v >= n)
|
|
151
|
+
continue;
|
|
152
|
+
if (w < 0)
|
|
153
|
+
throw new RangeError('dijkstra: edge weights must be non-negative');
|
|
154
|
+
const nd = d + w;
|
|
155
|
+
if (nd < dist[v]) {
|
|
156
|
+
dist[v] = nd;
|
|
157
|
+
prev[v] = u;
|
|
158
|
+
pq.push({ v, d: nd });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { dist, prev };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Reconstruct a path from a `prev` array (as returned by `dijkstra`).
|
|
166
|
+
*
|
|
167
|
+
* @returns an array of vertices from start to target (inclusive), or [] if unreachable.
|
|
168
|
+
*/
|
|
169
|
+
export function reconstructPath(prev, start, target) {
|
|
170
|
+
if (start < 0 || start >= prev.length)
|
|
171
|
+
return [];
|
|
172
|
+
if (target < 0 || target >= prev.length)
|
|
173
|
+
return [];
|
|
174
|
+
if (start === target)
|
|
175
|
+
return [start];
|
|
176
|
+
const path = [];
|
|
177
|
+
let v = target;
|
|
178
|
+
for (let steps = 0; steps < prev.length; steps++) {
|
|
179
|
+
path.push(v);
|
|
180
|
+
if (v === start)
|
|
181
|
+
break;
|
|
182
|
+
v = prev[v];
|
|
183
|
+
if (v === -1)
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
if (path[path.length - 1] !== start)
|
|
187
|
+
return [];
|
|
188
|
+
path.reverse();
|
|
189
|
+
return path;
|
|
190
|
+
}
|
|
57
191
|
//# sourceMappingURL=graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/algorithms/graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/algorithms/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,5 @@ export { StringRollingHash } from './stringHashing.js';
|
|
|
5
5
|
export { RabinKarp, RABIN_KARP_DEFAULT_MODS } from './rabinKarp.js';
|
|
6
6
|
export type { RabinKarpTripleMods } from './rabinKarp.js';
|
|
7
7
|
export type { WeightedUndirectedEdge } from './graph.js';
|
|
8
|
-
export { connectedComponents, kruskalMST } from './graph.js';
|
|
8
|
+
export { breadthFirstSearch, depthFirstSearch, connectedComponents, dijkstra, reconstructPath, kruskalMST, } from './graph.js';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,UAAU,GACX,MAAM,YAAY,CAAC"}
|
package/dist/algorithms/index.js
CHANGED
|
@@ -3,5 +3,5 @@ export { DisjointSetUnion } from './disjointSetUnion.js';
|
|
|
3
3
|
export { KnuthMorrisPratt } from './kmp.js';
|
|
4
4
|
export { StringRollingHash } from './stringHashing.js';
|
|
5
5
|
export { RabinKarp, RABIN_KARP_DEFAULT_MODS } from './rabinKarp.js';
|
|
6
|
-
export { connectedComponents, kruskalMST } from './graph.js';
|
|
6
|
+
export { breadthFirstSearch, depthFirstSearch, connectedComponents, dijkstra, reconstructPath, kruskalMST, } from './graph.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,UAAU,GACX,MAAM,YAAY,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { Vector, Stack, Queue, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, OrderedMultiSet, OrderedMultiMap, addEdge, deleteEdge, createAdjacencyList, createWeightedAdjacencyList, } from './collections/index.js';
|
|
9
9
|
export type { WeightedEdge, AdjacencyList, WeightedAdjacencyList } from './collections/index.js';
|
|
10
|
-
export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, RABIN_KARP_DEFAULT_MODS, connectedComponents, kruskalMST, } from './algorithms/index.js';
|
|
10
|
+
export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, RABIN_KARP_DEFAULT_MODS, breadthFirstSearch, depthFirstSearch, connectedComponents, dijkstra, reconstructPath, kruskalMST, } from './algorithms/index.js';
|
|
11
11
|
export type { WeightedUndirectedEdge, RabinKarpTripleMods } from './algorithms/index.js';
|
|
12
12
|
export { clamp, range, noop, identity, swap } from './utils/index.js';
|
|
13
13
|
export type { Comparator, Predicate, UnaryFn, Reducer, IterableLike } from './types/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* import { Vector, Stack, Queue, List, sort, binarySearch, clamp } from 'typescript-dsa-stl';
|
|
7
7
|
*/
|
|
8
8
|
export { Vector, Stack, Queue, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, OrderedMultiSet, OrderedMultiMap, addEdge, deleteEdge, createAdjacencyList, createWeightedAdjacencyList, } from './collections/index.js';
|
|
9
|
-
export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, RABIN_KARP_DEFAULT_MODS, connectedComponents, kruskalMST, } from './algorithms/index.js';
|
|
9
|
+
export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, RABIN_KARP_DEFAULT_MODS, breadthFirstSearch, depthFirstSearch, connectedComponents, dijkstra, reconstructPath, kruskalMST, } from './algorithms/index.js';
|
|
10
10
|
export { clamp, range, noop, identity, swap } from './utils/index.js';
|
|
11
11
|
export { toArray } from './types/index.js';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typescript-dsa-stl",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "STL-style data structures and algorithms for TypeScript: Vector, Stack, Queue, List, PriorityQueue, Map, Set, sort, binarySearch, graph utilities. Use like C++ STL.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|