typescript-dsa-stl 2.9.0 → 3.0.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 +99 -180
- package/dist/algorithms/graph.d.ts +36 -0
- package/dist/algorithms/graph.d.ts.map +1 -1
- package/dist/algorithms/graph.js +122 -0
- package/dist/algorithms/graph.js.map +1 -1
- package/dist/algorithms/index.d.ts +2 -2
- 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 +2 -2
- 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
|
@@ -167,15 +167,15 @@ range(0, 5); // [0, 1, 2, 3, 4]
|
|
|
167
167
|
| Area | Exports |
|
|
168
168
|
|------|---------|
|
|
169
169
|
| **Collections** | `Vector`, `Stack`, `Queue`, `Deque`, `List`, `ListNode`, `PriorityQueue`, `OrderedMap`, `UnorderedMap`, `OrderedSet`, `UnorderedSet`, `OrderedMultiMap`, `OrderedMultiSet`, `GeneralSegmentTree`, `SegmentTree`, `SegmentTreeSum`, `SegmentTreeMin`, `SegmentTreeMax`, `LazySegmentTreeSum`, `WeightedEdge`, `AdjacencyList`, `WeightedAdjacencyList`, `createAdjacencyList`, `createWeightedAdjacencyList`, `addEdge`, `deleteEdge` |
|
|
170
|
-
| **Algorithms** | `sort`, `find`, `findIndex`, `transform`, `filter`, `reduce`, `reverse`, `unique`, `binarySearch`, `lowerBound`, `upperBound`, `min`, `max`, `partition`, `DisjointSetUnion`, `KnuthMorrisPratt`, `RabinKarp`, `Trie`, `RABIN_KARP_DEFAULT_MODS`, `StringRollingHash`, `breadthFirstSearch`, `depthFirstSearch`, `topologicalSortStack`, `topologicalSortIndegree`, `connectedComponents`, `kruskalMST`, `dijkstra`, `reconstructPath` |
|
|
170
|
+
| **Algorithms** | `sort`, `find`, `findIndex`, `transform`, `filter`, `reduce`, `reverse`, `unique`, `binarySearch`, `lowerBound`, `upperBound`, `min`, `max`, `partition`, `DisjointSetUnion`, `KnuthMorrisPratt`, `RabinKarp`, `Trie`, `RABIN_KARP_DEFAULT_MODS`, `StringRollingHash`, `breadthFirstSearch`, `depthFirstSearch`, `topologicalSortStack`, `topologicalSortIndegree`, `connectedComponents`, `kruskalMST`, `dijkstra`, `bellmanFord`, `floydWarshall`, `reconstructPath`, `reconstructFloydWarshallPath` |
|
|
171
171
|
| **Utils** | `clamp`, `range`, `noop`, `identity`, `swap` |
|
|
172
|
-
| **Types** | `Comparator`, `Predicate`, `UnaryFn`, `Reducer`, `IterableLike`, `toArray`, `RabinKarpTripleMods`, `WeightedUndirectedEdge`, `TopologicalSortResult`, `GeneralSegmentTreeConfig`, `SegmentCombine`, `SegmentMerge`, `SegmentLeafBuild` |
|
|
172
|
+
| **Types** | `Comparator`, `Predicate`, `UnaryFn`, `Reducer`, `IterableLike`, `toArray`, `RabinKarpTripleMods`, `WeightedUndirectedEdge`, `TopologicalSortResult`, `BellmanFordResult`, `FloydWarshallResult`, `GeneralSegmentTreeConfig`, `SegmentCombine`, `SegmentMerge`, `SegmentLeafBuild` |
|
|
173
173
|
|
|
174
174
|
### Subpath imports (tree-shaking)
|
|
175
175
|
|
|
176
176
|
```ts
|
|
177
177
|
import { Vector, Stack, Queue, Deque } from 'typescript-dsa-stl/collections';
|
|
178
|
-
import { sort, binarySearch, breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, KnuthMorrisPratt, RabinKarp, Trie, StringRollingHash } from 'typescript-dsa-stl/algorithms';
|
|
178
|
+
import { sort, binarySearch, breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, dijkstra, bellmanFord, floydWarshall, KnuthMorrisPratt, RabinKarp, Trie, StringRollingHash } from 'typescript-dsa-stl/algorithms';
|
|
179
179
|
import { clamp, range } from 'typescript-dsa-stl/utils';
|
|
180
180
|
import type { Comparator } from 'typescript-dsa-stl/types';
|
|
181
181
|
```
|
|
@@ -278,23 +278,23 @@ cube.at(0).at(1).at(0); // 3 (layer 0, row 1, col 0)
|
|
|
278
278
|
|
|
279
279
|
### OrderedMultiMap and OrderedMultiSet — use cases
|
|
280
280
|
|
|
281
|
-
**OrderedMultiSet**
|
|
281
|
+
**OrderedMultiSet** keeps values sorted and allows duplicates.
|
|
282
282
|
|
|
283
283
|
| Use case | Example |
|
|
284
284
|
|----------|---------|
|
|
285
|
-
| **
|
|
286
|
-
| **
|
|
287
|
-
| **K-th smallest
|
|
288
|
-
| **Range
|
|
285
|
+
| **Leaderboard with ties** | Store repeated scores and iterate sorted. |
|
|
286
|
+
| **Timeline with duplicate times** | Keep events sorted even with same timestamp. |
|
|
287
|
+
| **K-th smallest** | Iterate sorted values and pick index `k - 1`. |
|
|
288
|
+
| **Range stats** | Count values inside `[low, high]`. |
|
|
289
289
|
|
|
290
|
-
**OrderedMultiMap**
|
|
290
|
+
**OrderedMultiMap** stores multiple values per key while keeping keys sorted.
|
|
291
291
|
|
|
292
292
|
| Use case | Example |
|
|
293
293
|
|----------|---------|
|
|
294
|
-
| **Inverted index** |
|
|
295
|
-
| **Grouping
|
|
296
|
-
| **One-to-many
|
|
297
|
-
| **Time
|
|
294
|
+
| **Inverted index** | `term -> docIds`. |
|
|
295
|
+
| **Grouping** | `category -> items`. |
|
|
296
|
+
| **One-to-many mapping** | `userId -> sessionIds`. |
|
|
297
|
+
| **Time buckets** | `bucket -> events`, in key order. |
|
|
298
298
|
|
|
299
299
|
**OrderedMultiSet example:**
|
|
300
300
|
|
|
@@ -330,9 +330,7 @@ for (const [key, value] of index) {
|
|
|
330
330
|
|
|
331
331
|
### Segment tree overview and complexity
|
|
332
332
|
|
|
333
|
-
A segment tree
|
|
334
|
-
|
|
335
|
-
Segment trees support **range queries** and **point updates** in **O(log n)**. Range endpoints are **inclusive**: `query(l, r)` covers indices `l` through `r`.
|
|
333
|
+
A segment tree supports fast **range queries** and **updates**. For this package, ranges are inclusive: `query(l, r)`.
|
|
336
334
|
|
|
337
335
|
**What each type does:**
|
|
338
336
|
|
|
@@ -345,7 +343,7 @@ Segment trees support **range queries** and **point updates** in **O(log n)**. R
|
|
|
345
343
|
|
|
346
344
|
| Structure | Build | Point update | Range query | Extra |
|
|
347
345
|
|-----------|-------|--------------|-------------|--------|
|
|
348
|
-
| **GeneralSegmentTree**, **SegmentTree**, **SegmentTreeSum** / **Min** / **Max** | O(n) | O(log n) | O(log n) | Inclusive `[l, r]`;
|
|
346
|
+
| **GeneralSegmentTree**, **SegmentTree**, **SegmentTreeSum** / **Min** / **Max** | O(n) | O(log n) | O(log n) | Inclusive `[l, r]`; `GeneralSegmentTree` uses raw `V` + summary `T` |
|
|
349
347
|
| **LazySegmentTreeSum** | O(n) | `set`: O(log n) | `rangeSum`: O(log n) | `rangeAdd` on a range: O(log n) |
|
|
350
348
|
|
|
351
349
|
### Segment tree: Sum, Min, Max and example
|
|
@@ -354,7 +352,7 @@ Segment trees support **range queries** and **point updates** in **O(log n)**. R
|
|
|
354
352
|
- **`SegmentTreeMin`** — answers “what is the **minimum** in `[l, r]`?” after single-index updates.
|
|
355
353
|
- **`SegmentTreeMax`** — answers “what is the **maximum** in `[l, r]`?” after single-index updates.
|
|
356
354
|
|
|
357
|
-
|
|
355
|
+
These are fixed numeric trees with `update(i, value)` and inclusive `query(l, r)`.
|
|
358
356
|
|
|
359
357
|
```ts
|
|
360
358
|
import {
|
|
@@ -375,7 +373,7 @@ const mx = new SegmentTreeMax([5, 2, 8, 1]);
|
|
|
375
373
|
console.log(mx.query(0, 3)); // 8
|
|
376
374
|
```
|
|
377
375
|
|
|
378
|
-
**Example
|
|
376
|
+
**Example use case:** fixed buckets (day/hour), range totals, and single-bucket corrections.
|
|
379
377
|
|
|
380
378
|
```ts
|
|
381
379
|
import { SegmentTreeSum } from 'typescript-dsa-stl';
|
|
@@ -405,11 +403,11 @@ january.setDay(2, 1150); // corrected day 2
|
|
|
405
403
|
console.log(january.totalBetweenDay(1, 3)); // sum over days 1..3
|
|
406
404
|
```
|
|
407
405
|
|
|
408
|
-
In production
|
|
406
|
+
In production, persist raw values and rebuild the tree when the period reloads.
|
|
409
407
|
|
|
410
408
|
### Generic SegmentTree
|
|
411
409
|
|
|
412
|
-
**`SegmentTree<T>`** supports
|
|
410
|
+
**`SegmentTree<T>`** supports any associative combine (gcd, concat, bitwise OR, etc.) with point updates. Provide `combine` and a neutral value.
|
|
413
411
|
|
|
414
412
|
```ts
|
|
415
413
|
import { SegmentTree } from 'typescript-dsa-stl';
|
|
@@ -441,13 +439,13 @@ console.log(strTree.query(0, 2)); // 'abc'
|
|
|
441
439
|
|
|
442
440
|
### GeneralSegmentTree
|
|
443
441
|
|
|
444
|
-
**`GeneralSegmentTree<T, V>`** keeps
|
|
442
|
+
**`GeneralSegmentTree<T, V>`** keeps raw values as `V` and segment summaries as `T`.
|
|
445
443
|
|
|
446
|
-
You
|
|
444
|
+
You provide:
|
|
447
445
|
|
|
448
|
-
- **`merge(left, right)
|
|
449
|
-
- **`neutral
|
|
450
|
-
- **`buildLeaf(value, index)
|
|
446
|
+
- **`merge(left, right)`**: combine child summaries.
|
|
447
|
+
- **`neutral`**: identity for non-overlapping ranges.
|
|
448
|
+
- **`buildLeaf(value, index)`**: build a leaf from raw `V`.
|
|
451
449
|
|
|
452
450
|
```ts
|
|
453
451
|
import { GeneralSegmentTree } from 'typescript-dsa-stl';
|
|
@@ -465,9 +463,9 @@ console.log(st.rawAt(1)); // 4 — current raw value at index 1
|
|
|
465
463
|
|
|
466
464
|
### LazySegmentTreeSum and example
|
|
467
465
|
|
|
468
|
-
**`LazySegmentTreeSum`**
|
|
466
|
+
**`LazySegmentTreeSum`** supports range add, point set, and range sum in **O(log n)** using lazy propagation.
|
|
469
467
|
|
|
470
|
-
|
|
468
|
+
`rangeAdd(l, r, delta)` updates a whole range, `rangeSum(l, r)` queries a range, and `set(i, value)` updates one index.
|
|
471
469
|
|
|
472
470
|
```ts
|
|
473
471
|
import { LazySegmentTreeSum } from 'typescript-dsa-stl';
|
|
@@ -479,7 +477,7 @@ lazy.set(0, 100);
|
|
|
479
477
|
console.log(lazy.rangeSum(0, 3)); // 100 + 5 + 5 + 0
|
|
480
478
|
```
|
|
481
479
|
|
|
482
|
-
**Example
|
|
480
|
+
**Example use case:** apply one delta to a range, then query subtotals.
|
|
483
481
|
|
|
484
482
|
```ts
|
|
485
483
|
import { LazySegmentTreeSum } from 'typescript-dsa-stl';
|
|
@@ -500,17 +498,17 @@ function simulateBulkBonusAndSubtotal(seatCount: number): void {
|
|
|
500
498
|
simulateBulkBonusAndSubtotal(100);
|
|
501
499
|
```
|
|
502
500
|
|
|
503
|
-
|
|
501
|
+
Same pattern works for inventory ranges, loyalty batches, and simulation buffs.
|
|
504
502
|
|
|
505
503
|
---
|
|
506
504
|
|
|
507
505
|
## Graph algorithms
|
|
508
506
|
|
|
509
|
-
Graph helpers
|
|
507
|
+
Graph helpers are available from the main package and `typescript-dsa-stl/collections`.
|
|
510
508
|
|
|
511
509
|
### Adjacency list (like C++ `vector<vector<type>> graph(n)`)
|
|
512
510
|
|
|
513
|
-
|
|
511
|
+
Use these types/helpers to model C++-style adjacency lists.
|
|
514
512
|
|
|
515
513
|
#### Unweighted adjacency list
|
|
516
514
|
|
|
@@ -590,31 +588,19 @@ deleteEdge(graph, u, v, w); // delete all edges u -> v with weight w
|
|
|
590
588
|
|
|
591
589
|
#### Graph adjacency list — use cases
|
|
592
590
|
|
|
593
|
-
Use
|
|
591
|
+
Use **unweighted** lists for connectivity/traversal; use **weighted** lists when edges have costs.
|
|
594
592
|
|
|
595
593
|
| Use case | When to use |
|
|
596
594
|
|----------|-------------|
|
|
597
|
-
| **BFS / DFS, connectivity** | Unweighted
|
|
598
|
-
| **Shortest path
|
|
599
|
-
| **Social / dependency graphs** |
|
|
600
|
-
| **Grid / game graphs** | Unweighted
|
|
601
|
-
| **Network / flow** | Weighted
|
|
595
|
+
| **BFS / DFS, connectivity** | Unweighted hop-based traversal and components. |
|
|
596
|
+
| **Shortest path, MST** | Weighted edges for distance/cost problems. |
|
|
597
|
+
| **Social / dependency graphs** | Use either, depending on whether edges have weights. |
|
|
598
|
+
| **Grid / game graphs** | Unweighted for equal moves; weighted for variable move cost. |
|
|
599
|
+
| **Network / flow** | Weighted capacity/latency models. |
|
|
602
600
|
|
|
603
601
|
### Breadth-first search (BFS) and depth-first search (DFS)
|
|
604
602
|
|
|
605
|
-
`breadthFirstSearch` and `depthFirstSearch` take
|
|
606
|
-
|
|
607
|
-
**Example graph (diamond):** edges `0—1`, `0—2`, `1—3`, `2—3`.
|
|
608
|
-
|
|
609
|
-
```text
|
|
610
|
-
0
|
|
611
|
-
/ \
|
|
612
|
-
1 2
|
|
613
|
-
\ /
|
|
614
|
-
3
|
|
615
|
-
```
|
|
616
|
-
|
|
617
|
-
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.
|
|
603
|
+
`breadthFirstSearch` and `depthFirstSearch` take `n`, an unweighted `AdjacencyList`, and `start`. They return traversal order for vertices reachable from `start`.
|
|
618
604
|
|
|
619
605
|
```ts
|
|
620
606
|
import {
|
|
@@ -627,7 +613,6 @@ import {
|
|
|
627
613
|
const n = 4;
|
|
628
614
|
const graph = createAdjacencyList(n);
|
|
629
615
|
|
|
630
|
-
// Undirected diamond: add both directions for each edge
|
|
631
616
|
addEdge(graph, 0, 1);
|
|
632
617
|
addEdge(graph, 1, 0);
|
|
633
618
|
addEdge(graph, 0, 2);
|
|
@@ -637,55 +622,17 @@ addEdge(graph, 3, 1);
|
|
|
637
622
|
addEdge(graph, 2, 3);
|
|
638
623
|
addEdge(graph, 3, 2);
|
|
639
624
|
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
// BFS: level-by-level from start (hop count); output: [0, 1, 2, 3]
|
|
643
|
-
console.log(breadthFirstSearch(n, graph, start));
|
|
644
|
-
// Expected console output: [ 0, 1, 2, 3 ]
|
|
645
|
-
|
|
646
|
-
// DFS: preorder with explicit stack; output: [0, 1, 3, 2] for this adjacency layout
|
|
647
|
-
console.log(depthFirstSearch(n, graph, start));
|
|
648
|
-
// Expected console output: [ 0, 1, 3, 2 ]
|
|
649
|
-
|
|
650
|
-
// Invalid start → empty traversal
|
|
651
|
-
console.log(breadthFirstSearch(n, graph, -1)); // []
|
|
652
|
-
console.log(depthFirstSearch(n, graph, n)); // []
|
|
653
|
-
|
|
654
|
-
// Vertex 4 isolated: BFS/DFS from 0 never visits 4
|
|
655
|
-
const withIsolated = createAdjacencyList(5);
|
|
656
|
-
addEdge(withIsolated, 0, 1);
|
|
657
|
-
addEdge(withIsolated, 1, 0);
|
|
658
|
-
console.log(breadthFirstSearch(5, withIsolated, 0)); // [0, 1] — not [0,1,2,3,4]
|
|
625
|
+
console.log(breadthFirstSearch(n, graph, 0)); // [0, 1, 2, 3]
|
|
626
|
+
console.log(depthFirstSearch(n, graph, 0)); // [0, 1, 3, 2]
|
|
659
627
|
```
|
|
660
628
|
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
- **Directed graphs:** only list outgoing edges in `adj[u]`; traversal follows arcs from `start`.
|
|
664
|
-
- **Disconnected graphs:** run again from another unvisited `start`, or use `connectedComponents` to enumerate components first.
|
|
665
|
-
- **Weighted graphs:** for traversal ignoring weights, use the same vertex lists as the unweighted graph (weights are ignored by these two functions).
|
|
629
|
+
For undirected graphs, add both directions. DFS order depends on neighbor order.
|
|
666
630
|
|
|
667
631
|
### Topological sort
|
|
668
632
|
|
|
669
|
-
`topologicalSortStack` (
|
|
670
|
-
|
|
671
|
-
**When to use**
|
|
672
|
-
|
|
673
|
-
- **Task / build / dependency ordering:** items must happen only after their prerequisites (package install order, compile steps, course prerequisites).
|
|
674
|
-
- **Scheduling under precedence constraints:** jobs with “A before B” rules and no cycles.
|
|
675
|
-
- **Detecting cycles in a directed model:** if `ok` is false, the graph (on valid vertices `0..n-1`) is not a DAG.
|
|
676
|
-
- **Pick either algorithm:** both answer the same yes/no; choose **stack** if you want DFS-style behavior and an explicit stack; choose **indegree** (Kahn) if you prefer peeling sources level-by-level (often closer to “ready queue” mental models).
|
|
633
|
+
`topologicalSortStack` (DFS-style) and `topologicalSortIndegree` (Kahn) take `n` and a directed unweighted `AdjacencyList`. Both return `{ order, ok }`.
|
|
677
634
|
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
- Any **directed cycle** (including a **self-loop**): `ok` is false.
|
|
681
|
-
- **Undirected** graphs modeled with **both** `u → v` and `v → u`: that is a 2-cycle, so **not** a DAG unless you only use directed edges that reflect real precedence.
|
|
682
|
-
|
|
683
|
-
**Example (how to call it and use the result)**
|
|
684
|
-
|
|
685
|
-
Both functions return the same shape: **`TopologicalSortResult`** — `{ order: number[]; ok: boolean }`.
|
|
686
|
-
|
|
687
|
-
- **`ok === true`:** `order` is a **permutation of `0..n-1`**; every edge `u → v` appears with `u` before `v` in `order`.
|
|
688
|
-
- **`ok === false`:** **no** full topological order exists (directed cycle). For `topologicalSortStack`, `order` is `[]`. For `topologicalSortIndegree`, `order` may list only some vertices; **do not** treat it as a complete sort.
|
|
635
|
+
Use it for dependency ordering. If `ok` is `false`, the graph has a cycle.
|
|
689
636
|
|
|
690
637
|
```ts
|
|
691
638
|
import {
|
|
@@ -703,81 +650,22 @@ addEdge(g, 0, 2);
|
|
|
703
650
|
addEdge(g, 1, 3);
|
|
704
651
|
addEdge(g, 2, 3);
|
|
705
652
|
|
|
706
|
-
|
|
707
|
-
const result: TopologicalSortResult = topologicalSortStack(n, g);
|
|
708
|
-
|
|
709
|
-
// Usually destructure
|
|
710
|
-
const { order, ok } = topologicalSortIndegree(n, g);
|
|
711
|
-
|
|
712
|
-
if (ok) {
|
|
713
|
-
// `order` here is from `topologicalSortIndegree` above → [0, 1, 2, 3] for this graph.
|
|
714
|
-
|
|
715
|
-
// 1) See the whole sequence at once
|
|
716
|
-
console.log(order);
|
|
717
|
-
// → [ 0, 1, 2, 3 ] (Node.js / browser consoles may add line breaks or “Array(4)” styling)
|
|
718
|
-
|
|
719
|
-
// 2) How many steps (same as n when ok is true)
|
|
720
|
-
console.log(order.length);
|
|
721
|
-
// → 4
|
|
722
|
-
|
|
723
|
-
// 3) Pick by position: first task, second task, …
|
|
724
|
-
const first = order[0];
|
|
725
|
-
const second = order[1];
|
|
726
|
-
console.log('do vertex', first, 'before', second);
|
|
727
|
-
// → do vertex 0 before 1
|
|
728
|
-
|
|
729
|
-
// 4) Simple loop with indices
|
|
730
|
-
for (let i = 0; i < order.length; i++) {
|
|
731
|
-
console.log('step', i + 1, '→ vertex', order[i]);
|
|
732
|
-
}
|
|
733
|
-
// → step 1 → vertex 0
|
|
734
|
-
// → step 2 → vertex 1
|
|
735
|
-
// → step 3 → vertex 2
|
|
736
|
-
// → step 4 → vertex 3
|
|
737
|
-
|
|
738
|
-
// 5) Same loop, shorter (when you only need the vertex id)
|
|
739
|
-
for (const vertex of order) {
|
|
740
|
-
console.log('run job for vertex', vertex);
|
|
741
|
-
}
|
|
742
|
-
// → run job for vertex 0
|
|
743
|
-
// → run job for vertex 1
|
|
744
|
-
// → run job for vertex 2
|
|
745
|
-
// → run job for vertex 3
|
|
746
|
-
|
|
747
|
-
// 6) Optional: each number is an index into your own list of names
|
|
748
|
-
const jobNames = ['bootstrap', 'compileA', 'compileB', 'link'];
|
|
749
|
-
const readable = order.map((vertex) => jobNames[vertex]);
|
|
750
|
-
console.log(readable.join(' → '));
|
|
751
|
-
// → bootstrap → compileA → compileB → link
|
|
752
|
-
} else {
|
|
753
|
-
// No valid order exists (cycle). Use a flag, return early, or show an error.
|
|
754
|
-
console.error('Graph has a cycle; cannot topologically sort.');
|
|
755
|
-
// → Graph has a cycle; cannot topologically sort.
|
|
756
|
-
// (often printed on stderr; some runtimes prepend “Error” styling)
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
// Compare algorithms (same `ok` on a given graph; `order` may differ)
|
|
760
|
-
const a = topologicalSortStack(n, g);
|
|
653
|
+
const a: TopologicalSortResult = topologicalSortStack(n, g);
|
|
761
654
|
const b = topologicalSortIndegree(n, g);
|
|
762
|
-
console.log(a.ok,
|
|
763
|
-
|
|
764
|
-
// (here `a.order` is [0, 2, 1, 3] and `b.order` is [0, 1, 2, 3] — both valid)
|
|
655
|
+
console.log(a.ok, a.order);
|
|
656
|
+
console.log(b.ok, b.order);
|
|
765
657
|
|
|
766
|
-
// Cycle: 0 → 1 → 2 → 0
|
|
767
658
|
const cyclic = createAdjacencyList(3);
|
|
768
659
|
addEdge(cyclic, 0, 1);
|
|
769
660
|
addEdge(cyclic, 1, 2);
|
|
770
661
|
addEdge(cyclic, 2, 0);
|
|
771
662
|
const bad = topologicalSortStack(3, cyclic);
|
|
772
|
-
console.log(bad.ok);
|
|
773
|
-
// → false
|
|
774
|
-
console.log(bad.order);
|
|
775
|
-
// → []
|
|
663
|
+
console.log(bad.ok, bad.order); // false, []
|
|
776
664
|
```
|
|
777
665
|
|
|
778
666
|
### Disjoint Set Union (Union-Find)
|
|
779
667
|
|
|
780
|
-
Use
|
|
668
|
+
Use DSU to compute connected components. For directed graphs, this gives weakly connected components.
|
|
781
669
|
|
|
782
670
|
```ts
|
|
783
671
|
import { createAdjacencyList, connectedComponents } from 'typescript-dsa-stl';
|
|
@@ -795,7 +683,7 @@ const comps = connectedComponents(n, graph);
|
|
|
795
683
|
|
|
796
684
|
#### Traverse the result
|
|
797
685
|
|
|
798
|
-
`connectedComponents(n, adj)` returns `number[][]`
|
|
686
|
+
`connectedComponents(n, adj)` returns `number[][]` (one vertex list per component).
|
|
799
687
|
|
|
800
688
|
```ts
|
|
801
689
|
// 1) Iterate each component
|
|
@@ -812,7 +700,7 @@ const sizes = comps.map(comp => comp.length);
|
|
|
812
700
|
|
|
813
701
|
### Kruskal MST (uses DSU)
|
|
814
702
|
|
|
815
|
-
For
|
|
703
|
+
For weighted graphs, `kruskalMST` builds a minimum spanning tree with DSU.
|
|
816
704
|
|
|
817
705
|
```ts
|
|
818
706
|
import {
|
|
@@ -836,7 +724,7 @@ const { edges, totalWeight } = kruskalMST(n, wGraph, { undirected: true });
|
|
|
836
724
|
|
|
837
725
|
#### Traverse the MST
|
|
838
726
|
|
|
839
|
-
`kruskalMST(...)` returns `{ edges, totalWeight }`.
|
|
727
|
+
`kruskalMST(...)` returns `{ edges, totalWeight }`. Convert `edges` to an adjacency list to traverse it.
|
|
840
728
|
|
|
841
729
|
```ts
|
|
842
730
|
import { createWeightedAdjacencyList } from 'typescript-dsa-stl/collections';
|
|
@@ -857,7 +745,7 @@ for (const { to, weight } of mstAdj[0]) {
|
|
|
857
745
|
|
|
858
746
|
### Dijkstra shortest paths
|
|
859
747
|
|
|
860
|
-
`dijkstra` computes single-source shortest paths on
|
|
748
|
+
`dijkstra` computes single-source shortest paths on weighted graphs with non-negative edges.
|
|
861
749
|
It returns:
|
|
862
750
|
|
|
863
751
|
- `dist[v]`: shortest distance from `start` to `v` (`Infinity` if unreachable)
|
|
@@ -887,29 +775,64 @@ const path = reconstructPath(prev, 0, target); // [0, ..., target] or [] if unre
|
|
|
887
775
|
console.log(path); // [0, 1, 2, 4]
|
|
888
776
|
```
|
|
889
777
|
|
|
778
|
+
### Bellman-Ford shortest paths
|
|
779
|
+
|
|
780
|
+
`bellmanFord` computes single-source shortest paths with negative edges allowed and reports reachable negative cycles.
|
|
781
|
+
|
|
782
|
+
```ts
|
|
783
|
+
import { createWeightedAdjacencyList, addEdge, bellmanFord, reconstructPath } from 'typescript-dsa-stl';
|
|
784
|
+
|
|
785
|
+
const n = 4;
|
|
786
|
+
const g = createWeightedAdjacencyList(n);
|
|
787
|
+
addEdge(g, 0, 1, 1);
|
|
788
|
+
addEdge(g, 1, 2, -2);
|
|
789
|
+
addEdge(g, 2, 3, 2);
|
|
790
|
+
|
|
791
|
+
const { dist, prev, hasNegativeCycle } = bellmanFord(n, g, 0);
|
|
792
|
+
console.log(dist, hasNegativeCycle); // [0, 1, -1, 1], false
|
|
793
|
+
console.log(reconstructPath(prev, 0, 3)); // [0, 1, 2, 3]
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
### Floyd-Warshall all-pairs shortest paths
|
|
797
|
+
|
|
798
|
+
`floydWarshall` computes all-pairs shortest paths and includes a `next` matrix for path reconstruction.
|
|
799
|
+
|
|
800
|
+
```ts
|
|
801
|
+
import {
|
|
802
|
+
createWeightedAdjacencyList,
|
|
803
|
+
addEdge,
|
|
804
|
+
floydWarshall,
|
|
805
|
+
reconstructFloydWarshallPath,
|
|
806
|
+
} from 'typescript-dsa-stl';
|
|
807
|
+
|
|
808
|
+
const n = 4;
|
|
809
|
+
const g = createWeightedAdjacencyList(n);
|
|
810
|
+
addEdge(g, 0, 1, 3);
|
|
811
|
+
addEdge(g, 1, 2, 1);
|
|
812
|
+
addEdge(g, 0, 2, 10);
|
|
813
|
+
addEdge(g, 2, 3, 2);
|
|
814
|
+
|
|
815
|
+
const { dist, next, hasNegativeCycle } = floydWarshall(n, g);
|
|
816
|
+
console.log(dist[0][3], hasNegativeCycle); // 6, false
|
|
817
|
+
console.log(reconstructFloydWarshallPath(next, 0, 3)); // [0, 1, 2, 3]
|
|
818
|
+
```
|
|
819
|
+
|
|
890
820
|
---
|
|
891
821
|
|
|
892
822
|
## String algorithms
|
|
893
823
|
|
|
894
824
|
### Knuth–Morris–Pratt (KMP), Rabin–Karp, Trie, and string rolling hash
|
|
895
825
|
|
|
896
|
-
All four
|
|
826
|
+
All four operate on UTF-16 code units: KMP/Rabin–Karp for pattern matching, `Trie` for exact/prefix lookup, `StringRollingHash` for substring hashes.
|
|
897
827
|
|
|
898
828
|
#### When to use which
|
|
899
829
|
|
|
900
830
|
| Goal | Prefer | Why |
|
|
901
831
|
|------|--------|-----|
|
|
902
|
-
| **
|
|
903
|
-
| **
|
|
904
|
-
| **
|
|
905
|
-
| **Many
|
|
906
|
-
|
|
907
|
-
**Concrete situations**
|
|
908
|
-
|
|
909
|
-
- **Use KMP** when you need a **guaranteed** linear scan (interviews, strict time bounds, large alphabets), or the pattern is **reused** across many searches (`new KnuthMorrisPratt(pattern)` once, `.search(text)` many times).
|
|
910
|
-
- **Use Rabin–Karp** when a **rolling hash** model fits (e.g. one long stream, one pattern), or you later generalize to **several patterns of the same length** (compare each pattern’s triple hash to each window hash). Triple hashing keeps false hash positives negligible; **verification** still guarantees correct indices.
|
|
911
|
-
- **Use `Trie`** when your workload is dictionary-like: store many words once, then do repeated `search(word)` and `startsWith(prefix)` checks in **O(L)**.
|
|
912
|
-
- **Use `StringRollingHash`** when the problem is **“hash of s[l..r)”** many times on **one** `s`—e.g. check `s[i..i+k) === s[j..j+k)` via hash equality (then confirm if needed), or algorithms that **binary search** on length using substring hashes. For **only** “list all starts of P in T”, pick **KMP** or **Rabin–Karp** instead of building substring hashes by hand.
|
|
832
|
+
| **Single-pattern matching with predictable worst-case** | **KnuthMorrisPratt** | Linear time, no hashing. |
|
|
833
|
+
| **Rolling-hash style matching** | **RabinKarp** | Window hashes + final verify. |
|
|
834
|
+
| **Dynamic dictionary / prefix queries** | **Trie** | `insert`/`search`/`startsWith` in O(L). |
|
|
835
|
+
| **Many substring hash queries on one string** | **StringRollingHash** | O(n) preprocess, O(1) per query. |
|
|
913
836
|
|
|
914
837
|
```ts
|
|
915
838
|
import { KnuthMorrisPratt, RabinKarp, Trie, StringRollingHash } from 'typescript-dsa-stl';
|
|
@@ -939,11 +862,7 @@ const rh = new StringRollingHash(s);
|
|
|
939
862
|
const maybe = rh.substringHash(1, 3) === rh.substringHash(3, 3); // then compare slices if you need certainty
|
|
940
863
|
```
|
|
941
864
|
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
**How Rabin–Karp works:** Use **triple hashing**—three independent polynomial hashes (same base, three distinct prime moduli, see `RABIN_KARP_DEFAULT_MODS`). A position is a candidate only when **all three** window hashes match the pattern’s triple; then a **character-by-character** check runs so reported matches are always correct. Spurious triple collisions are negligible; average **O(n + m)**.
|
|
945
|
-
|
|
946
|
-
**How rolling hash works:** Precompute prefix hashes and powers of a base modulo a prime. The hash of any substring `s[start .. start + length)` is derived from two prefix values—**O(n)** build, **O(1)** per substring query. Hashes can collide; for critical equality checks, compare actual strings after a hash match.
|
|
865
|
+
KMP and Rabin–Karp matching are linear in practice for this API; rolling hash is O(n) preprocess + O(1) substring hash query.
|
|
947
866
|
|
|
948
867
|
```ts
|
|
949
868
|
import {
|
|
@@ -75,6 +75,22 @@ export interface WeightedUndirectedEdge {
|
|
|
75
75
|
v: number;
|
|
76
76
|
weight: number;
|
|
77
77
|
}
|
|
78
|
+
export interface BellmanFordResult {
|
|
79
|
+
/** Shortest distance from `start` to each vertex (`Infinity` if unreachable). */
|
|
80
|
+
dist: number[];
|
|
81
|
+
/** Previous vertex on one shortest path tree (`-1` if none). */
|
|
82
|
+
prev: number[];
|
|
83
|
+
/** True if a negative cycle is reachable from `start`. */
|
|
84
|
+
hasNegativeCycle: boolean;
|
|
85
|
+
}
|
|
86
|
+
export interface FloydWarshallResult {
|
|
87
|
+
/** All-pairs shortest path distances (`Infinity` if unreachable). */
|
|
88
|
+
dist: number[][];
|
|
89
|
+
/** Next-hop matrix for path reconstruction (`-1` means no path). */
|
|
90
|
+
next: number[][];
|
|
91
|
+
/** True if at least one negative cycle exists in the graph. */
|
|
92
|
+
hasNegativeCycle: boolean;
|
|
93
|
+
}
|
|
78
94
|
/**
|
|
79
95
|
* Connected components in an (unweighted) graph using DSU.
|
|
80
96
|
* Complexity: O((n + m) * alpha(n)).
|
|
@@ -112,10 +128,30 @@ export declare function dijkstra(n: number, adj: WeightedAdjacencyList<number, n
|
|
|
112
128
|
dist: number[];
|
|
113
129
|
prev: number[];
|
|
114
130
|
};
|
|
131
|
+
/**
|
|
132
|
+
* Bellman-Ford single-source shortest paths on a weighted graph.
|
|
133
|
+
* Supports negative edge weights and reports if a reachable negative cycle exists.
|
|
134
|
+
*
|
|
135
|
+
* Complexity: O(n * m), where n = vertices and m = edges.
|
|
136
|
+
*/
|
|
137
|
+
export declare function bellmanFord(n: number, adj: WeightedAdjacencyList<number, number>, start: number): BellmanFordResult;
|
|
138
|
+
/**
|
|
139
|
+
* Floyd-Warshall all-pairs shortest paths on a weighted graph.
|
|
140
|
+
* Handles negative edge weights, and reports if any negative cycle exists.
|
|
141
|
+
*
|
|
142
|
+
* Complexity: O(n^3) time, O(n^2) space.
|
|
143
|
+
*/
|
|
144
|
+
export declare function floydWarshall(n: number, adj: WeightedAdjacencyList<number, number>): FloydWarshallResult;
|
|
115
145
|
/**
|
|
116
146
|
* Reconstruct a path from a `prev` array (as returned by `dijkstra`).
|
|
117
147
|
*
|
|
118
148
|
* @returns an array of vertices from start to target (inclusive), or [] if unreachable.
|
|
119
149
|
*/
|
|
120
150
|
export declare function reconstructPath(prev: readonly number[], start: number, target: number): number[];
|
|
151
|
+
/**
|
|
152
|
+
* Reconstruct a path from `start` to `target` using Floyd-Warshall `next` matrix.
|
|
153
|
+
*
|
|
154
|
+
* @returns vertices from start to target (inclusive), or [] if unreachable/invalid.
|
|
155
|
+
*/
|
|
156
|
+
export declare function reconstructFloydWarshallPath(next: readonly (readonly number[])[], start: number, target: number): number[];
|
|
121
157
|
//# 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;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;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC,8GAA8G;IAC9G,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iHAAiH;IACjH,EAAE,EAAE,OAAO,CAAC;CACb;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,GACzB,qBAAqB,CAoCvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,GACzB,qBAAqB,CA0BvB;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"}
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/algorithms/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/algorithms/graph.js
CHANGED
|
@@ -256,6 +256,103 @@ export function dijkstra(n, adj, start, options) {
|
|
|
256
256
|
}
|
|
257
257
|
return { dist, prev };
|
|
258
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Bellman-Ford single-source shortest paths on a weighted graph.
|
|
261
|
+
* Supports negative edge weights and reports if a reachable negative cycle exists.
|
|
262
|
+
*
|
|
263
|
+
* Complexity: O(n * m), where n = vertices and m = edges.
|
|
264
|
+
*/
|
|
265
|
+
export function bellmanFord(n, adj, start) {
|
|
266
|
+
const dist = Array(n).fill(Number.POSITIVE_INFINITY);
|
|
267
|
+
const prev = Array(n).fill(-1);
|
|
268
|
+
if (start < 0 || start >= n) {
|
|
269
|
+
return { dist, prev, hasNegativeCycle: false };
|
|
270
|
+
}
|
|
271
|
+
const edges = [];
|
|
272
|
+
for (let u = 0; u < n; u++) {
|
|
273
|
+
for (const e of adj[u] ?? []) {
|
|
274
|
+
const v = e.to;
|
|
275
|
+
if (v < 0 || v >= n)
|
|
276
|
+
continue;
|
|
277
|
+
edges.push({ u, v, w: e.weight });
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
dist[start] = 0;
|
|
281
|
+
for (let i = 0; i < n - 1; i++) {
|
|
282
|
+
let changed = false;
|
|
283
|
+
for (const { u, v, w } of edges) {
|
|
284
|
+
if (dist[u] === Number.POSITIVE_INFINITY)
|
|
285
|
+
continue;
|
|
286
|
+
const nd = dist[u] + w;
|
|
287
|
+
if (nd < dist[v]) {
|
|
288
|
+
dist[v] = nd;
|
|
289
|
+
prev[v] = u;
|
|
290
|
+
changed = true;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (!changed)
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
let hasNegativeCycle = false;
|
|
297
|
+
for (const { u, v, w } of edges) {
|
|
298
|
+
if (dist[u] === Number.POSITIVE_INFINITY)
|
|
299
|
+
continue;
|
|
300
|
+
if (dist[u] + w < dist[v]) {
|
|
301
|
+
hasNegativeCycle = true;
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return { dist, prev, hasNegativeCycle };
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Floyd-Warshall all-pairs shortest paths on a weighted graph.
|
|
309
|
+
* Handles negative edge weights, and reports if any negative cycle exists.
|
|
310
|
+
*
|
|
311
|
+
* Complexity: O(n^3) time, O(n^2) space.
|
|
312
|
+
*/
|
|
313
|
+
export function floydWarshall(n, adj) {
|
|
314
|
+
const dist = Array.from({ length: n }, () => Array(n).fill(Number.POSITIVE_INFINITY));
|
|
315
|
+
const next = Array.from({ length: n }, () => Array(n).fill(-1));
|
|
316
|
+
for (let i = 0; i < n; i++) {
|
|
317
|
+
dist[i][i] = 0;
|
|
318
|
+
next[i][i] = i;
|
|
319
|
+
}
|
|
320
|
+
for (let u = 0; u < n; u++) {
|
|
321
|
+
for (const e of adj[u] ?? []) {
|
|
322
|
+
const v = e.to;
|
|
323
|
+
const w = e.weight;
|
|
324
|
+
if (v < 0 || v >= n)
|
|
325
|
+
continue;
|
|
326
|
+
if (w < dist[u][v]) {
|
|
327
|
+
dist[u][v] = w;
|
|
328
|
+
next[u][v] = v;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
for (let k = 0; k < n; k++) {
|
|
333
|
+
for (let i = 0; i < n; i++) {
|
|
334
|
+
if (dist[i][k] === Number.POSITIVE_INFINITY)
|
|
335
|
+
continue;
|
|
336
|
+
for (let j = 0; j < n; j++) {
|
|
337
|
+
if (dist[k][j] === Number.POSITIVE_INFINITY)
|
|
338
|
+
continue;
|
|
339
|
+
const nd = dist[i][k] + dist[k][j];
|
|
340
|
+
if (nd < dist[i][j]) {
|
|
341
|
+
dist[i][j] = nd;
|
|
342
|
+
next[i][j] = next[i][k];
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
let hasNegativeCycle = false;
|
|
348
|
+
for (let i = 0; i < n; i++) {
|
|
349
|
+
if (dist[i][i] < 0) {
|
|
350
|
+
hasNegativeCycle = true;
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return { dist, next, hasNegativeCycle };
|
|
355
|
+
}
|
|
259
356
|
/**
|
|
260
357
|
* Reconstruct a path from a `prev` array (as returned by `dijkstra`).
|
|
261
358
|
*
|
|
@@ -283,4 +380,29 @@ export function reconstructPath(prev, start, target) {
|
|
|
283
380
|
path.reverse();
|
|
284
381
|
return path;
|
|
285
382
|
}
|
|
383
|
+
/**
|
|
384
|
+
* Reconstruct a path from `start` to `target` using Floyd-Warshall `next` matrix.
|
|
385
|
+
*
|
|
386
|
+
* @returns vertices from start to target (inclusive), or [] if unreachable/invalid.
|
|
387
|
+
*/
|
|
388
|
+
export function reconstructFloydWarshallPath(next, start, target) {
|
|
389
|
+
const n = next.length;
|
|
390
|
+
if (start < 0 || start >= n)
|
|
391
|
+
return [];
|
|
392
|
+
if (target < 0 || target >= n)
|
|
393
|
+
return [];
|
|
394
|
+
if ((next[start]?.[target] ?? -1) === -1)
|
|
395
|
+
return [];
|
|
396
|
+
const path = [start];
|
|
397
|
+
let cur = start;
|
|
398
|
+
for (let steps = 0; steps < n; steps++) {
|
|
399
|
+
if (cur === target)
|
|
400
|
+
return path;
|
|
401
|
+
cur = next[cur][target];
|
|
402
|
+
if (cur === -1)
|
|
403
|
+
return [];
|
|
404
|
+
path.push(cur);
|
|
405
|
+
}
|
|
406
|
+
return [];
|
|
407
|
+
}
|
|
286
408
|
//# sourceMappingURL=graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/algorithms/graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/algorithms/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,6 @@ export { StringRollingHash } from './stringHashing.js';
|
|
|
5
5
|
export { RabinKarp, RABIN_KARP_DEFAULT_MODS } from './rabinKarp.js';
|
|
6
6
|
export { Trie } from './trie.js';
|
|
7
7
|
export type { RabinKarpTripleMods } from './rabinKarp.js';
|
|
8
|
-
export type { WeightedUndirectedEdge, TopologicalSortResult } from './graph.js';
|
|
9
|
-
export { breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, reconstructPath, kruskalMST, } from './graph.js';
|
|
8
|
+
export type { WeightedUndirectedEdge, TopologicalSortResult, BellmanFordResult, FloydWarshallResult, } from './graph.js';
|
|
9
|
+
export { breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, bellmanFord, floydWarshall, reconstructPath, reconstructFloydWarshallPath, kruskalMST, } from './graph.js';
|
|
10
10
|
//# 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,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,YAAY,
|
|
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,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,eAAe,EACf,4BAA4B,EAC5B,UAAU,GACX,MAAM,YAAY,CAAC"}
|
package/dist/algorithms/index.js
CHANGED
|
@@ -4,5 +4,5 @@ export { KnuthMorrisPratt } from './kmp.js';
|
|
|
4
4
|
export { StringRollingHash } from './stringHashing.js';
|
|
5
5
|
export { RabinKarp, RABIN_KARP_DEFAULT_MODS } from './rabinKarp.js';
|
|
6
6
|
export { Trie } from './trie.js';
|
|
7
|
-
export { breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, reconstructPath, kruskalMST, } from './graph.js';
|
|
7
|
+
export { breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, bellmanFord, floydWarshall, reconstructPath, reconstructFloydWarshallPath, kruskalMST, } from './graph.js';
|
|
8
8
|
//# 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;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
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;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,eAAe,EACf,4BAA4B,EAC5B,UAAU,GACX,MAAM,YAAY,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { Vector, Stack, Queue, Deque, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, OrderedMultiSet, OrderedMultiMap, addEdge, deleteEdge, createAdjacencyList, createWeightedAdjacencyList, GeneralSegmentTree, SegmentTree, SegmentTreeSum, SegmentTreeMin, SegmentTreeMax, LazySegmentTreeSum, } from './collections/index.js';
|
|
9
9
|
export type { WeightedEdge, AdjacencyList, WeightedAdjacencyList, GeneralSegmentTreeConfig, SegmentCombine, SegmentLeafBuild, SegmentMerge, } from './collections/index.js';
|
|
10
|
-
export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, Trie, RABIN_KARP_DEFAULT_MODS, breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, reconstructPath, kruskalMST, } from './algorithms/index.js';
|
|
11
|
-
export type { WeightedUndirectedEdge, RabinKarpTripleMods, TopologicalSortResult, } from './algorithms/index.js';
|
|
10
|
+
export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, Trie, RABIN_KARP_DEFAULT_MODS, breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, bellmanFord, floydWarshall, reconstructPath, reconstructFloydWarshallPath, kruskalMST, } from './algorithms/index.js';
|
|
11
|
+
export type { WeightedUndirectedEdge, RabinKarpTripleMods, TopologicalSortResult, BellmanFordResult, FloydWarshallResult, } 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';
|
|
14
14
|
export { toArray } 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,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,EAC3B,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,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,IAAI,EACJ,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,
|
|
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,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,EAC3B,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,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,IAAI,EACJ,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,eAAe,EACf,4BAA4B,EAC5B,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,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, Deque, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, OrderedMultiSet, OrderedMultiMap, addEdge, deleteEdge, createAdjacencyList, createWeightedAdjacencyList, GeneralSegmentTree, SegmentTree, SegmentTreeSum, SegmentTreeMin, SegmentTreeMax, LazySegmentTreeSum, } from './collections/index.js';
|
|
9
|
-
export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, Trie, RABIN_KARP_DEFAULT_MODS, breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, reconstructPath, 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, Trie, RABIN_KARP_DEFAULT_MODS, breadthFirstSearch, depthFirstSearch, topologicalSortStack, topologicalSortIndegree, connectedComponents, dijkstra, bellmanFord, floydWarshall, reconstructPath, reconstructFloydWarshallPath, 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,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,EAC3B,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAUhC,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,IAAI,EACJ,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,UAAU,GACX,MAAM,uBAAuB,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,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,EAC3B,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAUhC,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,IAAI,EACJ,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,eAAe,EACf,4BAA4B,EAC5B,UAAU,GACX,MAAM,uBAAuB,CAAC;AAQ/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": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "STL-style data structures and algorithms for TypeScript: Vector, Stack, Queue, Deque (double-ended queue), List, PriorityQueue, Map, Set, sort, binarySearch, graph utilities. Use like C++ STL.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|