v2.3.0
Minor Changes
-
#34
5a8eef6Thanks @davidkpiano! - Large performance overhaul of the algorithm hot paths:getStronglyConnectedComponentsis now an iterative typed-array Tarjan over the CSR (stack-safe, ~15x faster).getTopologicalSortis a CSR Kahn's pass with cached in-degrees (~4x faster, no more O(n²) queue).isBipartite/getMaximumBipartiteMatching2-color directly over the cached CSR with no per-call adjacency rebuild (~60x faster on repeated queries).- Bellman-Ford (
algorithm: 'bellman-ford') relaxes cached compact arc arrays; single-pair queries skip tie-predecessor bookkeeping entirely (~15x faster). - Floyd-Warshall all-pairs uses a flat distance matrix with copy-on-write tie-predecessor lists and O(length) path materialization (~4x faster).
genBFS/genDFS/genPostorderare hand-rolled chunked iterators (identical order and laziness semantics, no generator resume machinery; ~1.5-2x faster full traversals), and traversal snapshots now reuse the CSR's node snapshot instead of copyinggraph.nodesper call.- Dijkstra / A* / bidirectional search read default edge weights from a cached per-arc
Float64Arrayinstead of loading edge objects in the inner loop. getDegreeserves from a per-version degree map (one hashed lookup per call), and repeated indexed queries against the same graph skip the WeakMap via a one-entry memo.- All-targets shortest-path reconstruction (
genShortestPaths) materializes each path once via a shared backtracking buffer instead of per-level array spreads.