@graphty/algorithms 2.1.1 → 2.2.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 +139 -50
- package/dist/algorithms.js +15260 -10390
- package/dist/algorithms.js.map +1 -1
- package/dist/algorithms.standalone.js +26675 -21542
- package/dist/algorithms.standalone.js.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.d.ts +18 -0
- package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.js +40 -1
- package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
- package/dist/src/algorithms/centrality/closeness.d.ts +20 -0
- package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/closeness.js +93 -8
- package/dist/src/algorithms/centrality/closeness.js.map +1 -1
- package/dist/src/algorithms/centrality/degree.d.ts +9 -0
- package/dist/src/algorithms/centrality/degree.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/degree.js +18 -0
- package/dist/src/algorithms/centrality/degree.js.map +1 -1
- package/dist/src/algorithms/centrality/eigenvector.d.ts +10 -0
- package/dist/src/algorithms/centrality/eigenvector.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/eigenvector.js +29 -0
- package/dist/src/algorithms/centrality/eigenvector.js.map +1 -1
- package/dist/src/algorithms/centrality/hits.d.ts +9 -0
- package/dist/src/algorithms/centrality/hits.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/hits.js +23 -0
- package/dist/src/algorithms/centrality/hits.js.map +1 -1
- package/dist/src/algorithms/centrality/katz.d.ts +9 -0
- package/dist/src/algorithms/centrality/katz.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/katz.js +31 -0
- package/dist/src/algorithms/centrality/katz.js.map +1 -1
- package/dist/src/algorithms/centrality/pagerank.d.ts +13 -13
- package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/pagerank.js +47 -10
- package/dist/src/algorithms/centrality/pagerank.js.map +1 -1
- package/dist/src/algorithms/community/girvan-newman-legacy.d.ts +27 -0
- package/dist/src/algorithms/community/girvan-newman-legacy.d.ts.map +1 -0
- package/dist/src/algorithms/community/girvan-newman-legacy.js +335 -0
- package/dist/src/algorithms/community/girvan-newman-legacy.js.map +1 -0
- package/dist/src/algorithms/community/girvan-newman.d.ts +5 -3
- package/dist/src/algorithms/community/girvan-newman.d.ts.map +1 -1
- package/dist/src/algorithms/community/girvan-newman.js +34 -308
- package/dist/src/algorithms/community/girvan-newman.js.map +1 -1
- package/dist/src/algorithms/community/label-propagation.d.ts +9 -6
- package/dist/src/algorithms/community/label-propagation.d.ts.map +1 -1
- package/dist/src/algorithms/community/label-propagation.js +24 -110
- package/dist/src/algorithms/community/label-propagation.js.map +1 -1
- package/dist/src/algorithms/components/connected.d.ts.map +1 -1
- package/dist/src/algorithms/components/connected.js +28 -77
- package/dist/src/algorithms/components/connected.js.map +1 -1
- package/dist/src/algorithms/mst/kruskal.d.ts.map +1 -1
- package/dist/src/algorithms/mst/kruskal.js +59 -3
- package/dist/src/algorithms/mst/kruskal.js.map +1 -1
- package/dist/src/algorithms/shortest-path/bellman-ford.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/bellman-ford.js +46 -0
- package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/dijkstra.js +27 -0
- package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -1
- package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts +15 -5
- package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/floyd-warshall.js +97 -107
- package/dist/src/algorithms/shortest-path/floyd-warshall.js.map +1 -1
- package/dist/src/algorithms/traversal/bfs-unified.d.ts +2 -12
- package/dist/src/algorithms/traversal/bfs-unified.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/bfs-unified.js +47 -308
- package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -1
- package/dist/src/algorithms/traversal/bfs-variants.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/bfs-variants.js +5 -25
- package/dist/src/algorithms/traversal/bfs-variants.js.map +1 -1
- package/dist/src/algorithms/traversal/bfs.d.ts +0 -3
- package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/bfs.js +0 -4
- package/dist/src/algorithms/traversal/bfs.js.map +1 -1
- package/dist/src/algorithms/traversal/dfs.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/dfs.js +33 -154
- package/dist/src/algorithms/traversal/dfs.js.map +1 -1
- package/dist/src/clustering/hierarchical-legacy.d.ts +56 -0
- package/dist/src/clustering/hierarchical-legacy.d.ts.map +1 -0
- package/dist/src/clustering/hierarchical-legacy.js +441 -0
- package/dist/src/clustering/hierarchical-legacy.js.map +1 -0
- package/dist/src/clustering/hierarchical.d.ts +7 -39
- package/dist/src/clustering/hierarchical.d.ts.map +1 -1
- package/dist/src/clustering/hierarchical.js +56 -417
- package/dist/src/clustering/hierarchical.js.map +1 -1
- package/dist/src/clustering/k-core-legacy.d.ts +30 -0
- package/dist/src/clustering/k-core-legacy.d.ts.map +1 -0
- package/dist/src/clustering/k-core-legacy.js +191 -0
- package/dist/src/clustering/k-core-legacy.js.map +1 -0
- package/dist/src/clustering/k-core.d.ts +8 -7
- package/dist/src/clustering/k-core.d.ts.map +1 -1
- package/dist/src/clustering/k-core.js +33 -174
- package/dist/src/clustering/k-core.js.map +1 -1
- package/dist/src/clustering/mcl-legacy.d.ts +42 -0
- package/dist/src/clustering/mcl-legacy.d.ts.map +1 -0
- package/dist/src/clustering/mcl-legacy.js +386 -0
- package/dist/src/clustering/mcl-legacy.js.map +1 -0
- package/dist/src/clustering/mcl.d.ts +9 -32
- package/dist/src/clustering/mcl.d.ts.map +1 -1
- package/dist/src/clustering/mcl.js +48 -374
- package/dist/src/clustering/mcl.js.map +1 -1
- package/dist/src/index.d.ts +29 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexed/accelerator.d.ts +141 -11
- package/dist/src/indexed/accelerator.d.ts.map +1 -1
- package/dist/src/indexed/accelerator.js +319 -5
- package/dist/src/indexed/accelerator.js.map +1 -1
- package/dist/src/indexed/all-pairs.d.ts +59 -0
- package/dist/src/indexed/all-pairs.d.ts.map +1 -0
- package/dist/src/indexed/all-pairs.js +274 -0
- package/dist/src/indexed/all-pairs.js.map +1 -0
- package/dist/src/indexed/bellman-ford.d.ts +25 -0
- package/dist/src/indexed/bellman-ford.d.ts.map +1 -0
- package/dist/src/indexed/bellman-ford.js +59 -0
- package/dist/src/indexed/bellman-ford.js.map +1 -0
- package/dist/src/indexed/betweenness.d.ts +85 -0
- package/dist/src/indexed/betweenness.d.ts.map +1 -0
- package/dist/src/indexed/betweenness.js +188 -0
- package/dist/src/indexed/betweenness.js.map +1 -0
- package/dist/src/indexed/bfs.d.ts +69 -2
- package/dist/src/indexed/bfs.d.ts.map +1 -1
- package/dist/src/indexed/bfs.js +148 -1
- package/dist/src/indexed/bfs.js.map +1 -1
- package/dist/src/indexed/bipartite.d.ts +37 -0
- package/dist/src/indexed/bipartite.d.ts.map +1 -0
- package/dist/src/indexed/bipartite.js +54 -0
- package/dist/src/indexed/bipartite.js.map +1 -0
- package/dist/src/indexed/closeness.d.ts +49 -0
- package/dist/src/indexed/closeness.d.ts.map +1 -0
- package/dist/src/indexed/closeness.js +127 -0
- package/dist/src/indexed/closeness.js.map +1 -0
- package/dist/src/indexed/common-neighbors.d.ts +14 -1
- package/dist/src/indexed/common-neighbors.d.ts.map +1 -1
- package/dist/src/indexed/common-neighbors.js +24 -14
- package/dist/src/indexed/common-neighbors.js.map +1 -1
- package/dist/src/indexed/degree.d.ts +19 -0
- package/dist/src/indexed/degree.d.ts.map +1 -0
- package/dist/src/indexed/degree.js +45 -0
- package/dist/src/indexed/degree.js.map +1 -0
- package/dist/src/indexed/delta-pagerank.d.ts +145 -0
- package/dist/src/indexed/delta-pagerank.d.ts.map +1 -0
- package/dist/src/indexed/delta-pagerank.js +428 -0
- package/dist/src/indexed/delta-pagerank.js.map +1 -0
- package/dist/src/indexed/dfs.d.ts +55 -0
- package/dist/src/indexed/dfs.d.ts.map +1 -0
- package/dist/src/indexed/dfs.js +146 -0
- package/dist/src/indexed/dfs.js.map +1 -0
- package/dist/src/indexed/eigenvector.d.ts +48 -0
- package/dist/src/indexed/eigenvector.d.ts.map +1 -0
- package/dist/src/indexed/eigenvector.js +162 -0
- package/dist/src/indexed/eigenvector.js.map +1 -0
- package/dist/src/indexed/facade.d.ts +109 -0
- package/dist/src/indexed/facade.d.ts.map +1 -0
- package/dist/src/indexed/facade.js +204 -0
- package/dist/src/indexed/facade.js.map +1 -0
- package/dist/src/indexed/flow.d.ts +120 -0
- package/dist/src/indexed/flow.d.ts.map +1 -0
- package/dist/src/indexed/flow.js +377 -0
- package/dist/src/indexed/flow.js.map +1 -0
- package/dist/src/indexed/girvan-newman.d.ts +42 -0
- package/dist/src/indexed/girvan-newman.d.ts.map +1 -0
- package/dist/src/indexed/girvan-newman.js +90 -0
- package/dist/src/indexed/girvan-newman.js.map +1 -0
- package/dist/src/indexed/grsbm.d.ts +85 -0
- package/dist/src/indexed/grsbm.d.ts.map +1 -0
- package/dist/src/indexed/grsbm.js +287 -0
- package/dist/src/indexed/grsbm.js.map +1 -0
- package/dist/src/indexed/hierarchical.d.ts +69 -0
- package/dist/src/indexed/hierarchical.d.ts.map +1 -0
- package/dist/src/indexed/hierarchical.js +245 -0
- package/dist/src/indexed/hierarchical.js.map +1 -0
- package/dist/src/indexed/index.d.ts +29 -3
- package/dist/src/indexed/index.d.ts.map +1 -1
- package/dist/src/indexed/index.js +29 -3
- package/dist/src/indexed/index.js.map +1 -1
- package/dist/src/indexed/isomorphism.d.ts +42 -0
- package/dist/src/indexed/isomorphism.d.ts.map +1 -0
- package/dist/src/indexed/isomorphism.js +269 -0
- package/dist/src/indexed/isomorphism.js.map +1 -0
- package/dist/src/indexed/label-propagation.d.ts +134 -0
- package/dist/src/indexed/label-propagation.d.ts.map +1 -0
- package/dist/src/indexed/label-propagation.js +486 -0
- package/dist/src/indexed/label-propagation.js.map +1 -0
- package/dist/src/indexed/leiden.d.ts +52 -0
- package/dist/src/indexed/leiden.d.ts.map +1 -0
- package/dist/src/indexed/leiden.js +384 -0
- package/dist/src/indexed/leiden.js.map +1 -0
- package/dist/src/indexed/link-prediction.d.ts +147 -0
- package/dist/src/indexed/link-prediction.d.ts.map +1 -0
- package/dist/src/indexed/link-prediction.js +317 -0
- package/dist/src/indexed/link-prediction.js.map +1 -0
- package/dist/src/indexed/markov.d.ts +54 -0
- package/dist/src/indexed/markov.d.ts.map +1 -0
- package/dist/src/indexed/markov.js +284 -0
- package/dist/src/indexed/markov.js.map +1 -0
- package/dist/src/indexed/matching.d.ts +53 -0
- package/dist/src/indexed/matching.d.ts.map +1 -0
- package/dist/src/indexed/matching.js +139 -0
- package/dist/src/indexed/matching.js.map +1 -0
- package/dist/src/indexed/min-cut.d.ts +48 -0
- package/dist/src/indexed/min-cut.d.ts.map +1 -0
- package/dist/src/indexed/min-cut.js +175 -0
- package/dist/src/indexed/min-cut.js.map +1 -0
- package/dist/src/indexed/modularity.d.ts +34 -0
- package/dist/src/indexed/modularity.d.ts.map +1 -0
- package/dist/src/indexed/modularity.js +74 -0
- package/dist/src/indexed/modularity.js.map +1 -0
- package/dist/src/indexed/mst.d.ts +29 -1
- package/dist/src/indexed/mst.d.ts.map +1 -1
- package/dist/src/indexed/mst.js +62 -0
- package/dist/src/indexed/mst.js.map +1 -1
- package/dist/src/indexed/pagerank.d.ts +29 -6
- package/dist/src/indexed/pagerank.d.ts.map +1 -1
- package/dist/src/indexed/pagerank.js +107 -11
- package/dist/src/indexed/pagerank.js.map +1 -1
- package/dist/src/indexed/point-to-point.d.ts +53 -0
- package/dist/src/indexed/point-to-point.d.ts.map +1 -0
- package/dist/src/indexed/point-to-point.js +173 -0
- package/dist/src/indexed/point-to-point.js.map +1 -0
- package/dist/src/indexed/scc.d.ts +53 -0
- package/dist/src/indexed/scc.d.ts.map +1 -0
- package/dist/src/indexed/scc.js +110 -0
- package/dist/src/indexed/scc.js.map +1 -0
- package/dist/src/indexed/spectral.d.ts +61 -0
- package/dist/src/indexed/spectral.d.ts.map +1 -0
- package/dist/src/indexed/spectral.js +476 -0
- package/dist/src/indexed/spectral.js.map +1 -0
- package/dist/src/indexed/structures/bit-set.d.ts +45 -0
- package/dist/src/indexed/structures/bit-set.d.ts.map +1 -0
- package/dist/src/indexed/structures/bit-set.js +57 -0
- package/dist/src/indexed/structures/bit-set.js.map +1 -0
- package/dist/src/indexed/structures/max-heap.d.ts +52 -0
- package/dist/src/indexed/structures/max-heap.d.ts.map +1 -0
- package/dist/src/indexed/structures/max-heap.js +66 -0
- package/dist/src/indexed/structures/max-heap.js.map +1 -0
- package/dist/src/indexed/structures/min-heap.d.ts +30 -1
- package/dist/src/indexed/structures/min-heap.d.ts.map +1 -1
- package/dist/src/indexed/structures/min-heap.js +46 -6
- package/dist/src/indexed/structures/min-heap.js.map +1 -1
- package/dist/src/indexed/structures/ring-queue.d.ts +41 -0
- package/dist/src/indexed/structures/ring-queue.d.ts.map +1 -0
- package/dist/src/indexed/structures/ring-queue.js +64 -0
- package/dist/src/indexed/structures/ring-queue.js.map +1 -0
- package/dist/src/indexed/sync.d.ts +50 -0
- package/dist/src/indexed/sync.d.ts.map +1 -0
- package/dist/src/indexed/sync.js +175 -0
- package/dist/src/indexed/sync.js.map +1 -0
- package/dist/src/indexed/terahac.d.ts +58 -0
- package/dist/src/indexed/terahac.d.ts.map +1 -0
- package/dist/src/indexed/terahac.js +244 -0
- package/dist/src/indexed/terahac.js.map +1 -0
- package/dist/src/indexed/to-snapshot.d.ts +45 -2
- package/dist/src/indexed/to-snapshot.d.ts.map +1 -1
- package/dist/src/indexed/to-snapshot.js +140 -6
- package/dist/src/indexed/to-snapshot.js.map +1 -1
- package/dist/src/link-prediction/common-neighbors-legacy.d.ts +71 -0
- package/dist/src/link-prediction/common-neighbors-legacy.d.ts.map +1 -0
- package/dist/src/link-prediction/common-neighbors-legacy.js +172 -0
- package/dist/src/link-prediction/common-neighbors-legacy.js.map +1 -0
- package/dist/src/link-prediction/common-neighbors.d.ts +11 -19
- package/dist/src/link-prediction/common-neighbors.d.ts.map +1 -1
- package/dist/src/link-prediction/common-neighbors.js +56 -123
- package/dist/src/link-prediction/common-neighbors.js.map +1 -1
- package/dist/src/optimized/direction-optimized-bfs.d.ts +6 -0
- package/dist/src/optimized/direction-optimized-bfs.d.ts.map +1 -1
- package/dist/src/optimized/direction-optimized-bfs.js +6 -0
- package/dist/src/optimized/direction-optimized-bfs.js.map +1 -1
- package/dist/src/research/grsbm-legacy.d.ts +82 -0
- package/dist/src/research/grsbm-legacy.d.ts.map +1 -0
- package/dist/src/research/grsbm-legacy.js +416 -0
- package/dist/src/research/grsbm-legacy.js.map +1 -0
- package/dist/src/research/grsbm.d.ts +9 -66
- package/dist/src/research/grsbm.d.ts.map +1 -1
- package/dist/src/research/grsbm.js +67 -391
- package/dist/src/research/grsbm.js.map +1 -1
- package/dist/src/research/sync-legacy.d.ts +48 -0
- package/dist/src/research/sync-legacy.d.ts.map +1 -0
- package/dist/src/research/sync-legacy.js +337 -0
- package/dist/src/research/sync-legacy.js.map +1 -0
- package/dist/src/research/sync.d.ts +10 -32
- package/dist/src/research/sync.d.ts.map +1 -1
- package/dist/src/research/sync.js +28 -316
- package/dist/src/research/sync.js.map +1 -1
- package/package.json +4 -3
- package/src/algorithms/centrality/betweenness.ts +51 -1
- package/src/algorithms/centrality/closeness.ts +112 -12
- package/src/algorithms/centrality/degree.ts +19 -0
- package/src/algorithms/centrality/eigenvector.ts +34 -0
- package/src/algorithms/centrality/hits.ts +24 -0
- package/src/algorithms/centrality/katz.ts +32 -0
- package/src/algorithms/centrality/pagerank.ts +53 -13
- package/src/algorithms/community/girvan-newman-legacy.ts +414 -0
- package/src/algorithms/community/girvan-newman.ts +36 -386
- package/src/algorithms/community/label-propagation.ts +24 -133
- package/src/algorithms/components/connected.ts +28 -95
- package/src/algorithms/mst/kruskal.ts +65 -4
- package/src/algorithms/shortest-path/bellman-ford.ts +49 -0
- package/src/algorithms/shortest-path/dijkstra.ts +29 -0
- package/src/algorithms/shortest-path/floyd-warshall.ts +106 -136
- package/src/algorithms/traversal/bfs-unified.ts +52 -366
- package/src/algorithms/traversal/bfs-variants.ts +5 -28
- package/src/algorithms/traversal/bfs.ts +0 -4
- package/src/algorithms/traversal/dfs.ts +39 -182
- package/src/clustering/hierarchical-legacy.ts +551 -0
- package/src/clustering/hierarchical.ts +64 -520
- package/src/clustering/k-core-legacy.ts +229 -0
- package/src/clustering/k-core.ts +38 -209
- package/src/clustering/mcl-legacy.ts +498 -0
- package/src/clustering/mcl.ts +46 -479
- package/src/index.ts +90 -3
- package/src/indexed/accelerator.ts +502 -16
- package/src/indexed/all-pairs.ts +342 -0
- package/src/indexed/bellman-ford.ts +72 -0
- package/src/indexed/betweenness.ts +258 -0
- package/src/indexed/bfs.ts +189 -3
- package/src/indexed/bipartite.ts +77 -0
- package/src/indexed/closeness.ts +160 -0
- package/src/indexed/common-neighbors.ts +31 -14
- package/src/indexed/degree.ts +55 -0
- package/src/indexed/delta-pagerank.ts +513 -0
- package/src/indexed/dfs.ts +189 -0
- package/src/indexed/eigenvector.ts +202 -0
- package/src/indexed/facade.ts +229 -0
- package/src/indexed/flow.ts +500 -0
- package/src/indexed/girvan-newman.ts +120 -0
- package/src/indexed/grsbm.ts +390 -0
- package/src/indexed/hierarchical.ts +295 -0
- package/src/indexed/index.ts +94 -3
- package/src/indexed/isomorphism.ts +305 -0
- package/src/indexed/label-propagation.ts +582 -0
- package/src/indexed/leiden.ts +436 -0
- package/src/indexed/link-prediction.ts +399 -0
- package/src/indexed/markov.ts +324 -0
- package/src/indexed/matching.ts +192 -0
- package/src/indexed/min-cut.ts +201 -0
- package/src/indexed/modularity.ts +81 -0
- package/src/indexed/mst.ts +79 -1
- package/src/indexed/pagerank.ts +128 -15
- package/src/indexed/point-to-point.ts +220 -0
- package/src/indexed/scc.ts +132 -0
- package/src/indexed/spectral.ts +550 -0
- package/src/indexed/structures/bit-set.ts +65 -0
- package/src/indexed/structures/max-heap.ts +74 -0
- package/src/indexed/structures/min-heap.ts +51 -6
- package/src/indexed/structures/ring-queue.ts +70 -0
- package/src/indexed/sync.ts +229 -0
- package/src/indexed/terahac.ts +290 -0
- package/src/indexed/to-snapshot.ts +156 -6
- package/src/link-prediction/common-neighbors-legacy.ts +252 -0
- package/src/link-prediction/common-neighbors.ts +65 -168
- package/src/optimized/direction-optimized-bfs.ts +6 -1
- package/src/research/grsbm-legacy.ts +586 -0
- package/src/research/grsbm.ts +76 -555
- package/src/research/sync-legacy.ts +456 -0
- package/src/research/sync.ts +30 -431
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectral.js","sourceRoot":"","sources":["../../../src/indexed/spectral.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type NodeMask } from "@graphty/graph-format";
|
|
2
|
+
/**
|
|
3
|
+
* A fixed-length set of indices over graph-format's packed mask words, so `words` can be handed
|
|
4
|
+
* to anything that takes a `NodeMask` or `EdgeMask` (`maskToIndices`, `filterEdges`,
|
|
5
|
+
* `inducedSubgraph({ mask })`) without a copy.
|
|
6
|
+
*/
|
|
7
|
+
export declare class BitSet {
|
|
8
|
+
readonly length: number;
|
|
9
|
+
/** The packed words, `ceil(length / 32)` of them; shared, not copied. */
|
|
10
|
+
readonly words: NodeMask;
|
|
11
|
+
/**
|
|
12
|
+
* Create an empty set over indices in `[0, length)`.
|
|
13
|
+
* @param length - The number of indices the set covers
|
|
14
|
+
*/
|
|
15
|
+
constructor(length: number);
|
|
16
|
+
/**
|
|
17
|
+
* Whether an index is in the set.
|
|
18
|
+
* @param i - An index below `length`
|
|
19
|
+
* @returns True when present
|
|
20
|
+
*/
|
|
21
|
+
has(i: number): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Include an index.
|
|
24
|
+
* @param i - An index below `length`
|
|
25
|
+
*/
|
|
26
|
+
add(i: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Exclude an index.
|
|
29
|
+
* @param i - An index below `length`
|
|
30
|
+
*/
|
|
31
|
+
delete(i: number): void;
|
|
32
|
+
/** Exclude every index. */
|
|
33
|
+
clear(): void;
|
|
34
|
+
/**
|
|
35
|
+
* The number of included indices.
|
|
36
|
+
* @returns The population count
|
|
37
|
+
*/
|
|
38
|
+
count(): number;
|
|
39
|
+
/**
|
|
40
|
+
* The included indices in ascending order.
|
|
41
|
+
* @returns A fresh array of indices
|
|
42
|
+
*/
|
|
43
|
+
toIndices(): Uint32Array;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=bit-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bit-set.d.ts","sourceRoot":"","sources":["../../../../src/indexed/structures/bit-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE7G;;;;GAIG;AACH,qBAAa,MAAM;IAQH,QAAQ,CAAC,MAAM,EAAE,MAAM;IAPnC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAEzB;;;OAGG;gBACkB,MAAM,EAAE,MAAM;IAInC;;;;OAIG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAIvB;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIpB;;;OAGG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIvB,2BAA2B;IAC3B,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;;OAGG;IACH,SAAS,IAAI,WAAW;CAG3B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { makeMask, maskCount, maskSet, maskTest, maskToIndices } from "@graphty/graph-format";
|
|
2
|
+
/**
|
|
3
|
+
* A fixed-length set of indices over graph-format's packed mask words, so `words` can be handed
|
|
4
|
+
* to anything that takes a `NodeMask` or `EdgeMask` (`maskToIndices`, `filterEdges`,
|
|
5
|
+
* `inducedSubgraph({ mask })`) without a copy.
|
|
6
|
+
*/
|
|
7
|
+
export class BitSet {
|
|
8
|
+
/**
|
|
9
|
+
* Create an empty set over indices in `[0, length)`.
|
|
10
|
+
* @param length - The number of indices the set covers
|
|
11
|
+
*/
|
|
12
|
+
constructor(length) {
|
|
13
|
+
this.length = length;
|
|
14
|
+
this.words = makeMask(length);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Whether an index is in the set.
|
|
18
|
+
* @param i - An index below `length`
|
|
19
|
+
* @returns True when present
|
|
20
|
+
*/
|
|
21
|
+
has(i) {
|
|
22
|
+
return maskTest(this.words, i);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Include an index.
|
|
26
|
+
* @param i - An index below `length`
|
|
27
|
+
*/
|
|
28
|
+
add(i) {
|
|
29
|
+
maskSet(this.words, i, true);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Exclude an index.
|
|
33
|
+
* @param i - An index below `length`
|
|
34
|
+
*/
|
|
35
|
+
delete(i) {
|
|
36
|
+
maskSet(this.words, i, false);
|
|
37
|
+
}
|
|
38
|
+
/** Exclude every index. */
|
|
39
|
+
clear() {
|
|
40
|
+
this.words.fill(0);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The number of included indices.
|
|
44
|
+
* @returns The population count
|
|
45
|
+
*/
|
|
46
|
+
count() {
|
|
47
|
+
return maskCount(this.words, this.length);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The included indices in ascending order.
|
|
51
|
+
* @returns A fresh array of indices
|
|
52
|
+
*/
|
|
53
|
+
toIndices() {
|
|
54
|
+
return maskToIndices(this.words, this.length);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=bit-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bit-set.js","sourceRoot":"","sources":["../../../../src/indexed/structures/bit-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAiB,MAAM,uBAAuB,CAAC;AAE7G;;;;GAIG;AACH,MAAM,OAAO,MAAM;IAIf;;;OAGG;IACH,YAAqB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC/B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,CAAS;QACT,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,CAAS;QACT,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,CAAS;QACZ,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,2BAA2B;IAC3B,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;CACJ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A binary max-heap over node indices with O(log n) increase-key: an {@link IndexedMinHeap} over
|
|
3
|
+
* negated keys. Negation is exact in f64, so keys come back bit-for-bit. Stoer-Wagner's
|
|
4
|
+
* maximum-adjacency ordering is the caller it exists for: every node starts at 0 and gains the
|
|
5
|
+
* weight of each edge to the growing set, `pushOrIncrease(v, keyOf(v) + w)`. Of two equal keys the
|
|
6
|
+
* lower node index pops first, which is the order the legacy Stoer-Wagner scan picks in.
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare class IndexedMaxHeap {
|
|
10
|
+
private readonly min;
|
|
11
|
+
/**
|
|
12
|
+
* Create an empty heap over node indices in `[0, capacity)`.
|
|
13
|
+
* @param capacity - The number of distinct node indices the heap may hold
|
|
14
|
+
*/
|
|
15
|
+
constructor(capacity: number);
|
|
16
|
+
/**
|
|
17
|
+
* Whether the heap holds no entries.
|
|
18
|
+
* @returns True when the heap holds no entries
|
|
19
|
+
*/
|
|
20
|
+
isEmpty(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether a node is currently in the heap.
|
|
23
|
+
* @param node - The node index
|
|
24
|
+
* @returns True when the node was pushed and has not been popped since
|
|
25
|
+
*/
|
|
26
|
+
has(node: number): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* The key a node was last given. Meaningful only while `has(node)` is true.
|
|
29
|
+
* @param node - The node index
|
|
30
|
+
* @returns Its key
|
|
31
|
+
*/
|
|
32
|
+
keyOf(node: number): number;
|
|
33
|
+
/**
|
|
34
|
+
* Insert a node that is not in the heap.
|
|
35
|
+
* @param node - The node index
|
|
36
|
+
* @param key - Its key
|
|
37
|
+
*/
|
|
38
|
+
push(node: number, key: number): void;
|
|
39
|
+
/**
|
|
40
|
+
* Insert the node, or raise its key if it is already present and the new key is larger.
|
|
41
|
+
* @param node - The node index
|
|
42
|
+
* @param key - Its candidate key
|
|
43
|
+
*/
|
|
44
|
+
pushOrIncrease(node: number, key: number): void;
|
|
45
|
+
/**
|
|
46
|
+
* Remove and return the node with the largest key. Undefined behaviour on an empty heap;
|
|
47
|
+
* callers guard with `isEmpty()`.
|
|
48
|
+
* @returns The node index
|
|
49
|
+
*/
|
|
50
|
+
pop(): number;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=max-heap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-heap.d.ts","sourceRoot":"","sources":["../../../../src/indexed/structures/max-heap.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;IAErC;;;OAGG;gBACS,QAAQ,EAAE,MAAM;IAI5B;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI/C;;;;OAIG;IACH,GAAG,IAAI,MAAM;CAGhB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { IndexedMinHeap } from "./min-heap.js";
|
|
2
|
+
/**
|
|
3
|
+
* A binary max-heap over node indices with O(log n) increase-key: an {@link IndexedMinHeap} over
|
|
4
|
+
* negated keys. Negation is exact in f64, so keys come back bit-for-bit. Stoer-Wagner's
|
|
5
|
+
* maximum-adjacency ordering is the caller it exists for: every node starts at 0 and gains the
|
|
6
|
+
* weight of each edge to the growing set, `pushOrIncrease(v, keyOf(v) + w)`. Of two equal keys the
|
|
7
|
+
* lower node index pops first, which is the order the legacy Stoer-Wagner scan picks in.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export class IndexedMaxHeap {
|
|
11
|
+
/**
|
|
12
|
+
* Create an empty heap over node indices in `[0, capacity)`.
|
|
13
|
+
* @param capacity - The number of distinct node indices the heap may hold
|
|
14
|
+
*/
|
|
15
|
+
constructor(capacity) {
|
|
16
|
+
this.min = new IndexedMinHeap(capacity, true);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Whether the heap holds no entries.
|
|
20
|
+
* @returns True when the heap holds no entries
|
|
21
|
+
*/
|
|
22
|
+
isEmpty() {
|
|
23
|
+
return this.min.isEmpty();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Whether a node is currently in the heap.
|
|
27
|
+
* @param node - The node index
|
|
28
|
+
* @returns True when the node was pushed and has not been popped since
|
|
29
|
+
*/
|
|
30
|
+
has(node) {
|
|
31
|
+
return this.min.has(node);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The key a node was last given. Meaningful only while `has(node)` is true.
|
|
35
|
+
* @param node - The node index
|
|
36
|
+
* @returns Its key
|
|
37
|
+
*/
|
|
38
|
+
keyOf(node) {
|
|
39
|
+
return -this.min.keyOf(node);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Insert a node that is not in the heap.
|
|
43
|
+
* @param node - The node index
|
|
44
|
+
* @param key - Its key
|
|
45
|
+
*/
|
|
46
|
+
push(node, key) {
|
|
47
|
+
this.min.push(node, -key);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Insert the node, or raise its key if it is already present and the new key is larger.
|
|
51
|
+
* @param node - The node index
|
|
52
|
+
* @param key - Its candidate key
|
|
53
|
+
*/
|
|
54
|
+
pushOrIncrease(node, key) {
|
|
55
|
+
this.min.pushOrDecrease(node, -key);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Remove and return the node with the largest key. Undefined behaviour on an empty heap;
|
|
59
|
+
* callers guard with `isEmpty()`.
|
|
60
|
+
* @returns The node index
|
|
61
|
+
*/
|
|
62
|
+
pop() {
|
|
63
|
+
return this.min.pop();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=max-heap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-heap.js","sourceRoot":"","sources":["../../../../src/indexed/structures/max-heap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IAGvB;;;OAGG;IACH,YAAY,QAAgB;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAY;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAY;QACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,IAAY,EAAE,GAAW;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,IAAY,EAAE,GAAW;QACpC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,GAAG;QACC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;CACJ"}
|
|
@@ -9,21 +9,43 @@ export declare class IndexedMinHeap {
|
|
|
9
9
|
private readonly heap;
|
|
10
10
|
private readonly slot;
|
|
11
11
|
private readonly key;
|
|
12
|
+
private readonly tieBreakByIndex;
|
|
12
13
|
private size;
|
|
13
14
|
/**
|
|
14
15
|
* Create an empty heap over node indices in `[0, capacity)`.
|
|
15
16
|
* @param capacity - The number of distinct node indices the heap may hold
|
|
17
|
+
* @param tieBreakByIndex - When true, of two equal keys the lower node index pops first, so
|
|
18
|
+
* the pop order is fully determined by the keys; when false (the default) equal keys pop in
|
|
19
|
+
* an order that depends on the push history
|
|
16
20
|
*/
|
|
17
|
-
constructor(capacity: number);
|
|
21
|
+
constructor(capacity: number, tieBreakByIndex?: boolean);
|
|
18
22
|
/**
|
|
19
23
|
* Whether the heap holds no entries.
|
|
20
24
|
* @returns True when the heap holds no entries
|
|
21
25
|
*/
|
|
22
26
|
isEmpty(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Whether a node is currently in the heap.
|
|
29
|
+
* @param node - The node index
|
|
30
|
+
* @returns True when the node was pushed and has not been popped since
|
|
31
|
+
*/
|
|
32
|
+
has(node: number): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The key a node was last given. Meaningful only while `has(node)` is true.
|
|
35
|
+
* @param node - The node index
|
|
36
|
+
* @returns Its key
|
|
37
|
+
*/
|
|
38
|
+
keyOf(node: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* The smallest key in the heap, without removing it.
|
|
41
|
+
* @returns The minimum key, or Infinity when the heap is empty
|
|
42
|
+
*/
|
|
43
|
+
peekKey(): number;
|
|
23
44
|
/**
|
|
24
45
|
* Insert a node that is not in the heap.
|
|
25
46
|
* @param node - The node index
|
|
26
47
|
* @param key - Its key
|
|
48
|
+
* @throws RangeError when the node index is outside `[0, capacity)`
|
|
27
49
|
*/
|
|
28
50
|
push(node: number, key: number): void;
|
|
29
51
|
/**
|
|
@@ -38,6 +60,13 @@ export declare class IndexedMinHeap {
|
|
|
38
60
|
* @returns The node index
|
|
39
61
|
*/
|
|
40
62
|
pop(): number;
|
|
63
|
+
/**
|
|
64
|
+
* Whether node `a` pops before node `b`.
|
|
65
|
+
* @param a - A node index in the heap
|
|
66
|
+
* @param b - A node index in the heap
|
|
67
|
+
* @returns True when a's key is smaller, or equal with the tie-break on and a lower index
|
|
68
|
+
*/
|
|
69
|
+
private before;
|
|
41
70
|
private siftUp;
|
|
42
71
|
private siftDown;
|
|
43
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min-heap.d.ts","sourceRoot":"","sources":["../../../../src/indexed/structures/min-heap.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,IAAI,CAAK;IAEjB
|
|
1
|
+
{"version":3,"file":"min-heap.d.ts","sourceRoot":"","sources":["../../../../src/indexed/structures/min-heap.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,IAAI,CAAK;IAEjB;;;;;;OAMG;gBACS,QAAQ,EAAE,MAAM,EAAE,eAAe,UAAQ;IAOrD;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B;;;OAGG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAWrC;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAY/C;;;;OAIG;IACH,GAAG,IAAI,MAAM;IAab;;;;;OAKG;IACH,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,QAAQ;CAqBnB"}
|
|
@@ -10,9 +10,13 @@ export class IndexedMinHeap {
|
|
|
10
10
|
/**
|
|
11
11
|
* Create an empty heap over node indices in `[0, capacity)`.
|
|
12
12
|
* @param capacity - The number of distinct node indices the heap may hold
|
|
13
|
+
* @param tieBreakByIndex - When true, of two equal keys the lower node index pops first, so
|
|
14
|
+
* the pop order is fully determined by the keys; when false (the default) equal keys pop in
|
|
15
|
+
* an order that depends on the push history
|
|
13
16
|
*/
|
|
14
|
-
constructor(capacity) {
|
|
17
|
+
constructor(capacity, tieBreakByIndex = false) {
|
|
15
18
|
this.size = 0;
|
|
19
|
+
this.tieBreakByIndex = tieBreakByIndex;
|
|
16
20
|
this.heap = new Uint32Array(capacity);
|
|
17
21
|
this.slot = new Uint32Array(capacity).fill(INVALID_INDEX);
|
|
18
22
|
this.key = new Float64Array(capacity);
|
|
@@ -24,12 +28,39 @@ export class IndexedMinHeap {
|
|
|
24
28
|
isEmpty() {
|
|
25
29
|
return this.size === 0;
|
|
26
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Whether a node is currently in the heap.
|
|
33
|
+
* @param node - The node index
|
|
34
|
+
* @returns True when the node was pushed and has not been popped since
|
|
35
|
+
*/
|
|
36
|
+
has(node) {
|
|
37
|
+
return this.slot[node] !== INVALID_INDEX;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The key a node was last given. Meaningful only while `has(node)` is true.
|
|
41
|
+
* @param node - The node index
|
|
42
|
+
* @returns Its key
|
|
43
|
+
*/
|
|
44
|
+
keyOf(node) {
|
|
45
|
+
return this.key[node];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The smallest key in the heap, without removing it.
|
|
49
|
+
* @returns The minimum key, or Infinity when the heap is empty
|
|
50
|
+
*/
|
|
51
|
+
peekKey() {
|
|
52
|
+
return this.size === 0 ? Infinity : this.key[this.heap[0]];
|
|
53
|
+
}
|
|
27
54
|
/**
|
|
28
55
|
* Insert a node that is not in the heap.
|
|
29
56
|
* @param node - The node index
|
|
30
57
|
* @param key - Its key
|
|
58
|
+
* @throws RangeError when the node index is outside `[0, capacity)`
|
|
31
59
|
*/
|
|
32
60
|
push(node, key) {
|
|
61
|
+
if (!(node >= 0 && node < this.slot.length)) {
|
|
62
|
+
throw new RangeError(`Node index ${String(node)} is outside the heap's ${String(this.slot.length)} nodes`);
|
|
63
|
+
}
|
|
33
64
|
this.key[node] = key;
|
|
34
65
|
this.heap[this.size] = node;
|
|
35
66
|
this.slot[node] = this.size;
|
|
@@ -69,14 +100,24 @@ export class IndexedMinHeap {
|
|
|
69
100
|
}
|
|
70
101
|
return top;
|
|
71
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Whether node `a` pops before node `b`.
|
|
105
|
+
* @param a - A node index in the heap
|
|
106
|
+
* @param b - A node index in the heap
|
|
107
|
+
* @returns True when a's key is smaller, or equal with the tie-break on and a lower index
|
|
108
|
+
*/
|
|
109
|
+
before(a, b) {
|
|
110
|
+
const ka = this.key[a];
|
|
111
|
+
const kb = this.key[b];
|
|
112
|
+
return ka < kb || (this.tieBreakByIndex && ka === kb && a < b);
|
|
113
|
+
}
|
|
72
114
|
siftUp(from) {
|
|
73
115
|
let at = from;
|
|
74
116
|
const node = this.heap[at];
|
|
75
|
-
const key = this.key[node];
|
|
76
117
|
while (at > 0) {
|
|
77
118
|
const parent = (at - 1) >> 1;
|
|
78
119
|
const parentNode = this.heap[parent];
|
|
79
|
-
if (this.
|
|
120
|
+
if (!this.before(node, parentNode)) {
|
|
80
121
|
break;
|
|
81
122
|
}
|
|
82
123
|
this.heap[at] = parentNode;
|
|
@@ -89,16 +130,15 @@ export class IndexedMinHeap {
|
|
|
89
130
|
siftDown(from) {
|
|
90
131
|
let at = from;
|
|
91
132
|
const node = this.heap[at];
|
|
92
|
-
const key = this.key[node];
|
|
93
133
|
for (;;) {
|
|
94
134
|
const left = 2 * at + 1;
|
|
95
135
|
if (left >= this.size) {
|
|
96
136
|
break;
|
|
97
137
|
}
|
|
98
138
|
const right = left + 1;
|
|
99
|
-
const child = right < this.size && this.
|
|
139
|
+
const child = right < this.size && this.before(this.heap[right], this.heap[left]) ? right : left;
|
|
100
140
|
const childNode = this.heap[child];
|
|
101
|
-
if (
|
|
141
|
+
if (!this.before(childNode, node)) {
|
|
102
142
|
break;
|
|
103
143
|
}
|
|
104
144
|
this.heap[at] = childNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min-heap.js","sourceRoot":"","sources":["../../../../src/indexed/structures/min-heap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAY,MAAM,uBAAuB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"min-heap.js","sourceRoot":"","sources":["../../../../src/indexed/structures/min-heap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fixed-capacity FIFO queue of node indices over one `Uint32Array`, for the frontier of a
|
|
3
|
+
* breadth-first sweep that may re-enqueue a node (label propagation, SPFA-style relaxation) and so
|
|
4
|
+
* cannot use the one-pass `order` array plain BFS does. Overflow and underflow throw rather than
|
|
5
|
+
* silently overwrite: a wrong capacity is a bug in the caller.
|
|
6
|
+
*/
|
|
7
|
+
export declare class RingQueue {
|
|
8
|
+
private readonly buffer;
|
|
9
|
+
private head;
|
|
10
|
+
private count;
|
|
11
|
+
/**
|
|
12
|
+
* Create an empty queue.
|
|
13
|
+
* @param capacity - The most entries the queue holds at once
|
|
14
|
+
*/
|
|
15
|
+
constructor(capacity: number);
|
|
16
|
+
/**
|
|
17
|
+
* The number of queued entries.
|
|
18
|
+
* @returns The entry count
|
|
19
|
+
*/
|
|
20
|
+
get size(): number;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the queue holds no entries.
|
|
23
|
+
* @returns True when empty
|
|
24
|
+
*/
|
|
25
|
+
isEmpty(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Append a value at the tail.
|
|
28
|
+
* @param value - A node index
|
|
29
|
+
* @throws RangeError when the queue is full
|
|
30
|
+
*/
|
|
31
|
+
push(value: number): void;
|
|
32
|
+
/**
|
|
33
|
+
* Remove and return the value at the head.
|
|
34
|
+
* @returns The oldest queued node index
|
|
35
|
+
* @throws RangeError when the queue is empty
|
|
36
|
+
*/
|
|
37
|
+
shift(): number;
|
|
38
|
+
/** Drop every entry, keeping the buffer for reuse. */
|
|
39
|
+
clear(): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ring-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ring-queue.d.ts","sourceRoot":"","sources":["../../../../src/indexed/structures/ring-queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAAK;IAElB;;;OAGG;gBACS,QAAQ,EAAE,MAAM;IAI5B;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASzB;;;;OAIG;IACH,KAAK,IAAI,MAAM;IAUf,sDAAsD;IACtD,KAAK,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fixed-capacity FIFO queue of node indices over one `Uint32Array`, for the frontier of a
|
|
3
|
+
* breadth-first sweep that may re-enqueue a node (label propagation, SPFA-style relaxation) and so
|
|
4
|
+
* cannot use the one-pass `order` array plain BFS does. Overflow and underflow throw rather than
|
|
5
|
+
* silently overwrite: a wrong capacity is a bug in the caller.
|
|
6
|
+
*/
|
|
7
|
+
export class RingQueue {
|
|
8
|
+
/**
|
|
9
|
+
* Create an empty queue.
|
|
10
|
+
* @param capacity - The most entries the queue holds at once
|
|
11
|
+
*/
|
|
12
|
+
constructor(capacity) {
|
|
13
|
+
this.head = 0;
|
|
14
|
+
this.count = 0;
|
|
15
|
+
this.buffer = new Uint32Array(capacity);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The number of queued entries.
|
|
19
|
+
* @returns The entry count
|
|
20
|
+
*/
|
|
21
|
+
get size() {
|
|
22
|
+
return this.count;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Whether the queue holds no entries.
|
|
26
|
+
* @returns True when empty
|
|
27
|
+
*/
|
|
28
|
+
isEmpty() {
|
|
29
|
+
return this.count === 0;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Append a value at the tail.
|
|
33
|
+
* @param value - A node index
|
|
34
|
+
* @throws RangeError when the queue is full
|
|
35
|
+
*/
|
|
36
|
+
push(value) {
|
|
37
|
+
const capacity = this.buffer.length;
|
|
38
|
+
if (this.count === capacity) {
|
|
39
|
+
throw new RangeError(`RingQueue: full at capacity ${String(capacity)}`);
|
|
40
|
+
}
|
|
41
|
+
this.buffer[(this.head + this.count) % capacity] = value;
|
|
42
|
+
this.count++;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Remove and return the value at the head.
|
|
46
|
+
* @returns The oldest queued node index
|
|
47
|
+
* @throws RangeError when the queue is empty
|
|
48
|
+
*/
|
|
49
|
+
shift() {
|
|
50
|
+
if (this.count === 0) {
|
|
51
|
+
throw new RangeError("RingQueue: shift on an empty queue");
|
|
52
|
+
}
|
|
53
|
+
const value = this.buffer[this.head];
|
|
54
|
+
this.head = (this.head + 1) % this.buffer.length;
|
|
55
|
+
this.count--;
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
/** Drop every entry, keeping the buffer for reuse. */
|
|
59
|
+
clear() {
|
|
60
|
+
this.head = 0;
|
|
61
|
+
this.count = 0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=ring-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ring-queue.js","sourceRoot":"","sources":["../../../../src/indexed/structures/ring-queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,SAAS;IAKlB;;;OAGG;IACH,YAAY,QAAgB;QAPpB,SAAI,GAAG,CAAC,CAAC;QACT,UAAK,GAAG,CAAC,CAAC;QAOd,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAa;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAAC,+BAA+B,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sDAAsD;IACtD,KAAK;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;CACJ"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { F64, GraphSnapshot, U32 } from "@graphty/graph-format";
|
|
2
|
+
/** Options of the index-based SynC clustering, matching the legacy `syncClustering`. @public */
|
|
3
|
+
export interface SyncClusteringOptions {
|
|
4
|
+
/** Number of cluster centres: an integer in `[1, nodeCount]` (legacy rounds a fraction up; the port throws). */
|
|
5
|
+
readonly numClusters: number;
|
|
6
|
+
/** Iteration cap; default 100. */
|
|
7
|
+
readonly maxIterations?: number | undefined;
|
|
8
|
+
/** Stop when the loss changes by less than this between iterations; default 1e-6. */
|
|
9
|
+
readonly tolerance?: number | undefined;
|
|
10
|
+
/** Seed of the embedding initialisation and the centre draws; default 42. */
|
|
11
|
+
readonly seed?: number | undefined;
|
|
12
|
+
/** Gradient step; default 0.01. */
|
|
13
|
+
readonly learningRate?: number | undefined;
|
|
14
|
+
/** Weight of the neighbour-reconstruction and regularisation terms; default 0.1. */
|
|
15
|
+
readonly lambda?: number | undefined;
|
|
16
|
+
}
|
|
17
|
+
/** Result of the index-based SynC clustering. @public */
|
|
18
|
+
export interface SyncClusteringResult {
|
|
19
|
+
/** The centre each node is closest to, in `[0, count)`. A centre may end up with no node. */
|
|
20
|
+
readonly labels: U32;
|
|
21
|
+
/** Number of cluster centres: `numClusters`. */
|
|
22
|
+
readonly count: number;
|
|
23
|
+
/** Node embeddings, row-major: node i is `embeddings.subarray(i * dimensions, (i + 1) * dimensions)`. */
|
|
24
|
+
readonly embeddings: F64;
|
|
25
|
+
/** Embedding length: `min(64, nodeCount)`. */
|
|
26
|
+
readonly dimensions: number;
|
|
27
|
+
/** Loss of the last iteration run (Infinity when none ran). */
|
|
28
|
+
readonly loss: number;
|
|
29
|
+
/** Loss of the iteration before the last (Infinity when fewer than two ran). */
|
|
30
|
+
readonly previousLoss: number;
|
|
31
|
+
/** Iterations run. */
|
|
32
|
+
readonly iterations: number;
|
|
33
|
+
/** Whether the loss settled within the tolerance before the cap. */
|
|
34
|
+
readonly converged: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* SynC over a snapshot: node embeddings seeded from degree and a seeded generator, pulled toward
|
|
38
|
+
* their out-neighbours by gradient steps, and clustered by k-means with k-means++ centres. The
|
|
39
|
+
* arithmetic, and the order of every random draw, are the legacy `syncClustering`'s, so for the same
|
|
40
|
+
* seed the labels and embeddings agree with it to rounding; the port draws from its own generator
|
|
41
|
+
* instead of replacing `Math.random` for the duration of the call.
|
|
42
|
+
*
|
|
43
|
+
* Weights are ignored and a parallel arc pulls once per arc. The seeding degree is legacy's: in plus
|
|
44
|
+
* out when directed, the stored arc count when undirected, so an undirected self-loop counts once.
|
|
45
|
+
* @param s - The snapshot
|
|
46
|
+
* @param options - {@link SyncClusteringOptions}
|
|
47
|
+
* @returns Assignments, embeddings and convergence
|
|
48
|
+
*/
|
|
49
|
+
export declare function syncClustering(s: GraphSnapshot, options: SyncClusteringOptions): SyncClusteringResult;
|
|
50
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/indexed/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAIrE,gGAAgG;AAChG,MAAM,WAAW,qBAAqB;IAClC,gHAAgH;IAChH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qFAAqF;IACrF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,mCAAmC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,oFAAoF;IACpF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACjC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yGAAyG;IACzG,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AAoBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA6JrG"}
|