@graphty/algorithms 1.3.1 → 1.4.2
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 +358 -413
- package/dist/algorithms.js +564 -261
- package/dist/algorithms.js.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.d.ts +10 -0
- package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.js +27 -6
- package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
- package/dist/src/algorithms/centrality/closeness.d.ts +11 -2
- package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/closeness.js +17 -3
- package/dist/src/algorithms/centrality/closeness.js.map +1 -1
- package/dist/src/algorithms/centrality/degree.d.ts +7 -0
- package/dist/src/algorithms/centrality/degree.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/degree.js +9 -6
- package/dist/src/algorithms/centrality/degree.js.map +1 -1
- package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts +21 -3
- package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/delta-pagerank-simple.js +25 -7
- package/dist/src/algorithms/centrality/delta-pagerank-simple.js.map +1 -1
- package/dist/src/algorithms/centrality/delta-pagerank.d.ts +28 -2
- package/dist/src/algorithms/centrality/delta-pagerank.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/delta-pagerank.js +30 -4
- package/dist/src/algorithms/centrality/delta-pagerank.js.map +1 -1
- package/dist/src/algorithms/centrality/eigenvector.d.ts +10 -3
- package/dist/src/algorithms/centrality/eigenvector.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/eigenvector.js +11 -4
- package/dist/src/algorithms/centrality/eigenvector.js.map +1 -1
- package/dist/src/algorithms/centrality/hits.d.ts +10 -3
- package/dist/src/algorithms/centrality/hits.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/hits.js +11 -4
- package/dist/src/algorithms/centrality/hits.js.map +1 -1
- package/dist/src/algorithms/centrality/index.d.ts +1 -1
- package/dist/src/algorithms/centrality/index.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/index.js +1 -1
- package/dist/src/algorithms/centrality/index.js.map +1 -1
- package/dist/src/algorithms/centrality/katz.d.ts +10 -3
- package/dist/src/algorithms/centrality/katz.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/katz.js +13 -8
- package/dist/src/algorithms/centrality/katz.js.map +1 -1
- package/dist/src/algorithms/centrality/pagerank.d.ts +14 -0
- package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/pagerank.js +16 -1
- package/dist/src/algorithms/centrality/pagerank.js.map +1 -1
- package/dist/src/algorithms/community/girvan-newman.d.ts +2 -3
- package/dist/src/algorithms/community/girvan-newman.d.ts.map +1 -1
- package/dist/src/algorithms/community/girvan-newman.js +21 -4
- package/dist/src/algorithms/community/girvan-newman.js.map +1 -1
- package/dist/src/algorithms/community/index.d.ts.map +1 -1
- package/dist/src/algorithms/community/index.js.map +1 -1
- package/dist/src/algorithms/community/label-propagation.d.ts +0 -3
- package/dist/src/algorithms/community/label-propagation.d.ts.map +1 -1
- package/dist/src/algorithms/community/label-propagation.js +13 -6
- package/dist/src/algorithms/community/label-propagation.js.map +1 -1
- package/dist/src/algorithms/community/leiden.d.ts +0 -1
- package/dist/src/algorithms/community/leiden.d.ts.map +1 -1
- package/dist/src/algorithms/community/leiden.js +37 -6
- package/dist/src/algorithms/community/leiden.js.map +1 -1
- package/dist/src/algorithms/community/louvain-optimized.d.ts +37 -0
- package/dist/src/algorithms/community/louvain-optimized.d.ts.map +1 -1
- package/dist/src/algorithms/community/louvain-optimized.js +42 -7
- package/dist/src/algorithms/community/louvain-optimized.js.map +1 -1
- package/dist/src/algorithms/community/louvain.d.ts +2 -3
- package/dist/src/algorithms/community/louvain.d.ts.map +1 -1
- package/dist/src/algorithms/community/louvain.js +19 -6
- package/dist/src/algorithms/community/louvain.js.map +1 -1
- package/dist/src/algorithms/community/modularity-utils.d.ts +0 -4
- package/dist/src/algorithms/community/modularity-utils.d.ts.map +1 -1
- package/dist/src/algorithms/community/modularity-utils.js +1 -5
- package/dist/src/algorithms/community/modularity-utils.js.map +1 -1
- package/dist/src/algorithms/components/connected.d.ts +23 -0
- package/dist/src/algorithms/components/connected.d.ts.map +1 -1
- package/dist/src/algorithms/components/connected.js +29 -3
- package/dist/src/algorithms/components/connected.js.map +1 -1
- package/dist/src/algorithms/matching/bipartite.d.ts +10 -0
- package/dist/src/algorithms/matching/bipartite.d.ts.map +1 -1
- package/dist/src/algorithms/matching/bipartite.js +10 -0
- package/dist/src/algorithms/matching/bipartite.js.map +1 -1
- package/dist/src/algorithms/matching/index.d.ts.map +1 -1
- package/dist/src/algorithms/matching/index.js.map +1 -1
- package/dist/src/algorithms/matching/isomorphism.d.ts +8 -0
- package/dist/src/algorithms/matching/isomorphism.d.ts.map +1 -1
- package/dist/src/algorithms/matching/isomorphism.js +36 -2
- package/dist/src/algorithms/matching/isomorphism.js.map +1 -1
- package/dist/src/algorithms/mst/index.d.ts.map +1 -1
- package/dist/src/algorithms/mst/index.js.map +1 -1
- package/dist/src/algorithms/mst/kruskal.d.ts +14 -0
- package/dist/src/algorithms/mst/kruskal.d.ts.map +1 -1
- package/dist/src/algorithms/mst/kruskal.js +17 -3
- package/dist/src/algorithms/mst/kruskal.js.map +1 -1
- package/dist/src/algorithms/mst/prim.d.ts +9 -0
- package/dist/src/algorithms/mst/prim.d.ts.map +1 -1
- package/dist/src/algorithms/mst/prim.js +9 -0
- package/dist/src/algorithms/mst/prim.js.map +1 -1
- package/dist/src/algorithms/shortest-path/bellman-ford.d.ts +10 -0
- package/dist/src/algorithms/shortest-path/bellman-ford.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/bellman-ford.js +10 -0
- package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts +11 -4
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js +18 -16
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js.map +1 -1
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts +15 -0
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/dijkstra.js +15 -0
- package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -1
- package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts +17 -0
- package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/floyd-warshall.js +17 -0
- package/dist/src/algorithms/shortest-path/floyd-warshall.js.map +1 -1
- package/dist/src/algorithms/shortest-path/index.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/index.js.map +1 -1
- package/dist/src/algorithms/traversal/bfs-unified.d.ts +13 -0
- package/dist/src/algorithms/traversal/bfs-unified.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/bfs-unified.js +37 -0
- package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -1
- package/dist/src/algorithms/traversal/bfs-variants.d.ts +23 -0
- package/dist/src/algorithms/traversal/bfs-variants.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/bfs-variants.js +34 -0
- package/dist/src/algorithms/traversal/bfs-variants.js.map +1 -1
- package/dist/src/algorithms/traversal/bfs.d.ts +1 -1
- package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/bfs.js +1 -1
- package/dist/src/algorithms/traversal/bfs.js.map +1 -1
- package/dist/src/algorithms/traversal/dfs.d.ts +10 -0
- package/dist/src/algorithms/traversal/dfs.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/dfs.js +48 -0
- package/dist/src/algorithms/traversal/dfs.js.map +1 -1
- package/dist/src/algorithms/traversal/index.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/index.js.map +1 -1
- package/dist/src/benchmark-all-algorithms.d.ts +2 -0
- package/dist/src/benchmark-all-algorithms.d.ts.map +1 -1
- package/dist/src/benchmark-all-algorithms.js +32 -3
- package/dist/src/benchmark-all-algorithms.js.map +1 -1
- package/dist/src/clustering/hierarchical.d.ts +8 -1
- package/dist/src/clustering/hierarchical.d.ts.map +1 -1
- package/dist/src/clustering/hierarchical.js +22 -6
- package/dist/src/clustering/hierarchical.js.map +1 -1
- package/dist/src/clustering/index.d.ts.map +1 -1
- package/dist/src/clustering/index.js.map +1 -1
- package/dist/src/clustering/k-core.d.ts +2 -5
- package/dist/src/clustering/k-core.d.ts.map +1 -1
- package/dist/src/clustering/k-core.js +14 -12
- package/dist/src/clustering/k-core.js.map +1 -1
- package/dist/src/clustering/mcl.d.ts +6 -0
- package/dist/src/clustering/mcl.d.ts.map +1 -1
- package/dist/src/clustering/mcl.js +34 -3
- package/dist/src/clustering/mcl.js.map +1 -1
- package/dist/src/clustering/spectral.d.ts +4 -1
- package/dist/src/clustering/spectral.d.ts.map +1 -1
- package/dist/src/clustering/spectral.js +61 -28
- package/dist/src/clustering/spectral.js.map +1 -1
- package/dist/src/core/graph.d.ts +45 -0
- package/dist/src/core/graph.d.ts.map +1 -1
- package/dist/src/core/graph.js +45 -1
- package/dist/src/core/graph.js.map +1 -1
- package/dist/src/data-structures/index.d.ts.map +1 -1
- package/dist/src/data-structures/index.js.map +1 -1
- package/dist/src/data-structures/priority-queue.d.ts +18 -1
- package/dist/src/data-structures/priority-queue.d.ts.map +1 -1
- package/dist/src/data-structures/priority-queue.js +26 -5
- package/dist/src/data-structures/priority-queue.js.map +1 -1
- package/dist/src/data-structures/union-find.d.ts +21 -0
- package/dist/src/data-structures/union-find.d.ts.map +1 -1
- package/dist/src/data-structures/union-find.js +21 -0
- package/dist/src/data-structures/union-find.js.map +1 -1
- package/dist/src/flow/ford-fulkerson.d.ts +4 -2
- package/dist/src/flow/ford-fulkerson.d.ts.map +1 -1
- package/dist/src/flow/ford-fulkerson.js +31 -2
- package/dist/src/flow/ford-fulkerson.js.map +1 -1
- package/dist/src/flow/min-cut.d.ts +0 -3
- package/dist/src/flow/min-cut.d.ts.map +1 -1
- package/dist/src/flow/min-cut.js +17 -4
- package/dist/src/flow/min-cut.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- 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/link-prediction/adamic-adar.d.ts +26 -0
- package/dist/src/link-prediction/adamic-adar.d.ts.map +1 -1
- package/dist/src/link-prediction/adamic-adar.js +36 -10
- package/dist/src/link-prediction/adamic-adar.js.map +1 -1
- package/dist/src/link-prediction/common-neighbors.d.ts +21 -0
- package/dist/src/link-prediction/common-neighbors.d.ts.map +1 -1
- package/dist/src/link-prediction/common-neighbors.js +27 -6
- package/dist/src/link-prediction/common-neighbors.js.map +1 -1
- package/dist/src/link-prediction/index.d.ts.map +1 -1
- package/dist/src/optimized/bit-packed.d.ts +103 -53
- package/dist/src/optimized/bit-packed.d.ts.map +1 -1
- package/dist/src/optimized/bit-packed.js +104 -54
- package/dist/src/optimized/bit-packed.js.map +1 -1
- package/dist/src/optimized/csr-graph.d.ts +87 -24
- package/dist/src/optimized/csr-graph.d.ts.map +1 -1
- package/dist/src/optimized/csr-graph.js +87 -24
- package/dist/src/optimized/csr-graph.js.map +1 -1
- package/dist/src/optimized/direction-optimized-bfs.d.ts +37 -16
- package/dist/src/optimized/direction-optimized-bfs.d.ts.map +1 -1
- package/dist/src/optimized/direction-optimized-bfs.js +39 -20
- package/dist/src/optimized/direction-optimized-bfs.js.map +1 -1
- package/dist/src/optimized/graph-adapter.d.ts +58 -9
- package/dist/src/optimized/graph-adapter.d.ts.map +1 -1
- package/dist/src/optimized/graph-adapter.js +58 -10
- package/dist/src/optimized/graph-adapter.js.map +1 -1
- package/dist/src/optimized/index.d.ts +1 -1
- package/dist/src/optimized/index.d.ts.map +1 -1
- package/dist/src/optimized/index.js +3 -1
- package/dist/src/optimized/index.js.map +1 -1
- package/dist/src/pathfinding/astar.d.ts +25 -9
- package/dist/src/pathfinding/astar.d.ts.map +1 -1
- package/dist/src/pathfinding/astar.js +25 -10
- package/dist/src/pathfinding/astar.js.map +1 -1
- package/dist/src/pathfinding/utils.d.ts +15 -6
- package/dist/src/pathfinding/utils.d.ts.map +1 -1
- package/dist/src/pathfinding/utils.js +19 -7
- package/dist/src/pathfinding/utils.js.map +1 -1
- package/dist/src/research/grsbm.d.ts +0 -1
- package/dist/src/research/grsbm.d.ts.map +1 -1
- package/dist/src/research/grsbm.js +22 -9
- package/dist/src/research/grsbm.js.map +1 -1
- package/dist/src/research/index.d.ts.map +1 -1
- package/dist/src/research/index.js.map +1 -1
- package/dist/src/research/sync.d.ts +0 -1
- package/dist/src/research/sync.d.ts.map +1 -1
- package/dist/src/research/sync.js +28 -7
- package/dist/src/research/sync.js.map +1 -1
- package/dist/src/research/terahac.d.ts +0 -1
- package/dist/src/research/terahac.d.ts.map +1 -1
- package/dist/src/research/terahac.js +32 -4
- package/dist/src/research/terahac.js.map +1 -1
- package/dist/src/utils/graph-converters.d.ts +31 -0
- package/dist/src/utils/graph-converters.d.ts.map +1 -1
- package/dist/src/utils/graph-converters.js +31 -0
- package/dist/src/utils/graph-converters.js.map +1 -1
- package/dist/src/utils/graph-utilities.d.ts.map +1 -1
- package/dist/src/utils/graph-utilities.js.map +1 -1
- package/dist/src/utils/math-utilities.d.ts +11 -0
- package/dist/src/utils/math-utilities.d.ts.map +1 -1
- package/dist/src/utils/math-utilities.js +14 -5
- package/dist/src/utils/math-utilities.js.map +1 -1
- package/dist/src/utils/optimization-helpers.d.ts +9 -0
- package/dist/src/utils/optimization-helpers.d.ts.map +1 -1
- package/dist/src/utils/optimization-helpers.js +12 -0
- package/dist/src/utils/optimization-helpers.js.map +1 -1
- package/dist/src/utils/priorityQueue.d.ts +24 -0
- package/dist/src/utils/priorityQueue.d.ts.map +1 -1
- package/dist/src/utils/priorityQueue.js +34 -4
- package/dist/src/utils/priorityQueue.js.map +1 -1
- package/package.json +49 -45
- package/src/algorithms/centrality/betweenness.ts +34 -17
- package/src/algorithms/centrality/closeness.ts +34 -17
- package/src/algorithms/centrality/degree.ts +15 -19
- package/src/algorithms/centrality/delta-pagerank-simple.ts +36 -28
- package/src/algorithms/centrality/delta-pagerank.ts +34 -11
- package/src/algorithms/centrality/eigenvector.ts +14 -15
- package/src/algorithms/centrality/hits.ts +17 -17
- package/src/algorithms/centrality/index.ts +20 -15
- package/src/algorithms/centrality/katz.ts +17 -25
- package/src/algorithms/centrality/pagerank.ts +26 -17
- package/src/algorithms/community/girvan-newman.ts +39 -28
- package/src/algorithms/community/index.ts +6 -7
- package/src/algorithms/community/label-propagation.ts +20 -28
- package/src/algorithms/community/leiden.ts +61 -37
- package/src/algorithms/community/louvain-optimized.ts +49 -20
- package/src/algorithms/community/louvain.ts +35 -25
- package/src/algorithms/community/modularity-utils.ts +5 -17
- package/src/algorithms/components/connected.ts +40 -17
- package/src/algorithms/matching/bipartite.ts +17 -10
- package/src/algorithms/matching/index.ts +4 -4
- package/src/algorithms/matching/isomorphism.ts +53 -23
- package/src/algorithms/mst/index.ts +3 -4
- package/src/algorithms/mst/kruskal.ts +21 -6
- package/src/algorithms/mst/prim.ts +13 -4
- package/src/algorithms/shortest-path/bellman-ford.ts +16 -15
- package/src/algorithms/shortest-path/bidirectional-dijkstra.ts +28 -28
- package/src/algorithms/shortest-path/dijkstra.ts +23 -17
- package/src/algorithms/shortest-path/floyd-warshall.ts +21 -4
- package/src/algorithms/shortest-path/index.ts +5 -5
- package/src/algorithms/traversal/bfs-unified.ts +64 -60
- package/src/algorithms/traversal/bfs-variants.ts +61 -37
- package/src/algorithms/traversal/bfs.ts +1 -7
- package/src/algorithms/traversal/dfs.ts +61 -42
- package/src/algorithms/traversal/index.ts +3 -3
- package/src/benchmark-all-algorithms.ts +57 -25
- package/src/clustering/hierarchical.ts +40 -34
- package/src/clustering/index.ts +8 -8
- package/src/clustering/k-core.ts +26 -42
- package/src/clustering/mcl.ts +53 -23
- package/src/clustering/spectral.ts +91 -57
- package/src/core/graph.ts +54 -14
- package/src/data-structures/index.ts +2 -2
- package/src/data-structures/priority-queue.ts +36 -11
- package/src/data-structures/union-find.ts +22 -1
- package/src/flow/ford-fulkerson.ts +62 -35
- package/src/flow/min-cut.ts +43 -45
- package/src/index.ts +3 -2
- package/src/link-prediction/adamic-adar.ts +65 -51
- package/src/link-prediction/common-neighbors.ts +45 -36
- package/src/link-prediction/index.ts +1 -1
- package/src/optimized/bit-packed.ts +106 -56
- package/src/optimized/csr-graph.ts +93 -30
- package/src/optimized/direction-optimized-bfs.ts +44 -25
- package/src/optimized/graph-adapter.ts +64 -16
- package/src/optimized/index.ts +7 -9
- package/src/pathfinding/astar.ts +40 -25
- package/src/pathfinding/utils.ts +20 -13
- package/src/research/grsbm.ts +30 -24
- package/src/research/index.ts +4 -4
- package/src/research/sync.ts +39 -23
- package/src/research/terahac.ts +54 -20
- package/src/utils/graph-converters.ts +42 -14
- package/src/utils/graph-utilities.ts +11 -37
- package/src/utils/math-utilities.ts +17 -8
- package/src/utils/optimization-helpers.ts +27 -21
- package/src/utils/priorityQueue.ts +40 -6
|
@@ -5,12 +5,22 @@
|
|
|
5
5
|
* Optimized for traversal operations and sparse graphs.
|
|
6
6
|
*/
|
|
7
7
|
export class CSRGraph {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new CSRGraph from an adjacency list representation.
|
|
10
|
+
* @param adjacencyList - Map of node IDs to arrays of neighbor node IDs
|
|
11
|
+
* @param weights - Optional map of edge weights keyed by "source-target" strings
|
|
12
|
+
* @param buildReverse - Whether to build reverse edges for bottom-up BFS (default true)
|
|
13
|
+
*/
|
|
8
14
|
constructor(adjacencyList, weights, buildReverse = true) {
|
|
9
15
|
this.data = this.buildCSR(adjacencyList, weights, buildReverse);
|
|
10
16
|
}
|
|
11
17
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
* Build CSR structure from adjacency list.
|
|
19
|
+
* @param adjacencyList - Map of node IDs to arrays of neighbor node IDs
|
|
20
|
+
* @param weights - Optional map of edge weights keyed by "source-target" strings
|
|
21
|
+
* @param buildReverse - Whether to build reverse edges for bottom-up BFS
|
|
22
|
+
* @returns The constructed CSR graph data structure
|
|
23
|
+
*/
|
|
14
24
|
buildCSR(adjacencyList, weights, buildReverse = true) {
|
|
15
25
|
// Collect all unique nodes (both sources and targets)
|
|
16
26
|
const allNodes = new Set();
|
|
@@ -127,15 +137,34 @@ export class CSRGraph {
|
|
|
127
137
|
return result;
|
|
128
138
|
}
|
|
129
139
|
// Core API methods
|
|
140
|
+
/**
|
|
141
|
+
* Get the total number of nodes in the graph.
|
|
142
|
+
* @returns The number of nodes
|
|
143
|
+
*/
|
|
130
144
|
nodeCount() {
|
|
131
145
|
return this.data.indexToNodeId.length;
|
|
132
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Get the total number of edges in the graph.
|
|
149
|
+
* @returns The number of edges
|
|
150
|
+
*/
|
|
133
151
|
edgeCount() {
|
|
134
152
|
return this.data.columnIndices.length;
|
|
135
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Check if a node exists in the graph.
|
|
156
|
+
* @param nodeId - The node ID to check
|
|
157
|
+
* @returns True if the node exists, false otherwise
|
|
158
|
+
*/
|
|
136
159
|
hasNode(nodeId) {
|
|
137
160
|
return this.data.nodeIdToIndex.has(nodeId);
|
|
138
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Check if an edge exists between two nodes.
|
|
164
|
+
* @param source - The source node ID
|
|
165
|
+
* @param target - The target node ID
|
|
166
|
+
* @returns True if the edge exists, false otherwise
|
|
167
|
+
*/
|
|
139
168
|
hasEdge(source, target) {
|
|
140
169
|
const sourceIndex = this.data.nodeIdToIndex.get(source);
|
|
141
170
|
const targetIndex = this.data.nodeIdToIndex.get(target);
|
|
@@ -151,8 +180,10 @@ export class CSRGraph {
|
|
|
151
180
|
return this.binarySearch(this.data.columnIndices, targetIndex, start, end) !== -1;
|
|
152
181
|
}
|
|
153
182
|
/**
|
|
154
|
-
|
|
155
|
-
|
|
183
|
+
* Get neighbors of a node as node IDs.
|
|
184
|
+
* @param nodeId - The node ID to get neighbors for
|
|
185
|
+
* @returns An iterator over neighbor node IDs
|
|
186
|
+
*/
|
|
156
187
|
neighbors(nodeId) {
|
|
157
188
|
const nodeIndex = this.data.nodeIdToIndex.get(nodeId);
|
|
158
189
|
if (nodeIndex === undefined) {
|
|
@@ -177,14 +208,17 @@ export class CSRGraph {
|
|
|
177
208
|
return generateNeighbors();
|
|
178
209
|
}
|
|
179
210
|
/**
|
|
180
|
-
|
|
181
|
-
|
|
211
|
+
* Get all nodes in the graph.
|
|
212
|
+
* @returns An iterator over all node IDs
|
|
213
|
+
*/
|
|
182
214
|
nodes() {
|
|
183
215
|
return this.data.indexToNodeId.values();
|
|
184
216
|
}
|
|
185
217
|
/**
|
|
186
|
-
|
|
187
|
-
|
|
218
|
+
* Get neighbors as indices (internal use).
|
|
219
|
+
* @param nodeIndex - The internal index of the node
|
|
220
|
+
* @returns Array of neighbor indices
|
|
221
|
+
*/
|
|
188
222
|
getNeighborIndices(nodeIndex) {
|
|
189
223
|
if (nodeIndex < 0 || nodeIndex >= this.data.indexToNodeId.length) {
|
|
190
224
|
return [];
|
|
@@ -196,6 +230,11 @@ export class CSRGraph {
|
|
|
196
230
|
}
|
|
197
231
|
return Array.from(this.data.columnIndices.subarray(start, end));
|
|
198
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Get the out-degree (number of outgoing edges) of a node.
|
|
235
|
+
* @param nodeId - The node ID to get the out-degree for
|
|
236
|
+
* @returns The number of outgoing edges from the node
|
|
237
|
+
*/
|
|
199
238
|
outDegree(nodeId) {
|
|
200
239
|
const nodeIndex = this.data.nodeIdToIndex.get(nodeId);
|
|
201
240
|
if (nodeIndex === undefined) {
|
|
@@ -204,8 +243,10 @@ export class CSRGraph {
|
|
|
204
243
|
return this.outDegreeByIndex(nodeIndex);
|
|
205
244
|
}
|
|
206
245
|
/**
|
|
207
|
-
|
|
208
|
-
|
|
246
|
+
* Get out-degree by index (internal use).
|
|
247
|
+
* @param nodeIndex - The internal index of the node
|
|
248
|
+
* @returns The number of outgoing edges from the node
|
|
249
|
+
*/
|
|
209
250
|
outDegreeByIndex(nodeIndex) {
|
|
210
251
|
const start = this.data.rowPointers[nodeIndex];
|
|
211
252
|
const end = this.data.rowPointers[nodeIndex + 1];
|
|
@@ -215,8 +256,10 @@ export class CSRGraph {
|
|
|
215
256
|
return 0;
|
|
216
257
|
}
|
|
217
258
|
/**
|
|
218
|
-
|
|
219
|
-
|
|
259
|
+
* Iterator support for neighbor indices.
|
|
260
|
+
* @param nodeIndex - The internal index of the node
|
|
261
|
+
* @yields The indices of neighboring nodes
|
|
262
|
+
*/
|
|
220
263
|
*iterateNeighborIndices(nodeIndex) {
|
|
221
264
|
const start = this.data.rowPointers[nodeIndex];
|
|
222
265
|
const end = this.data.rowPointers[nodeIndex + 1];
|
|
@@ -230,8 +273,10 @@ export class CSRGraph {
|
|
|
230
273
|
}
|
|
231
274
|
}
|
|
232
275
|
/**
|
|
233
|
-
|
|
234
|
-
|
|
276
|
+
* Iterator support for incoming neighbor indices (for bottom-up BFS).
|
|
277
|
+
* @param nodeIndex - The internal index of the node
|
|
278
|
+
* @yields The indices of nodes with edges pointing to this node
|
|
279
|
+
*/
|
|
235
280
|
*iterateIncomingNeighborIndices(nodeIndex) {
|
|
236
281
|
if (!this.data.reverseRowPointers || !this.data.reverseColumnIndices) {
|
|
237
282
|
return;
|
|
@@ -248,8 +293,10 @@ export class CSRGraph {
|
|
|
248
293
|
}
|
|
249
294
|
}
|
|
250
295
|
/**
|
|
251
|
-
|
|
252
|
-
|
|
296
|
+
* Convert node ID to internal index.
|
|
297
|
+
* @param nodeId - The node ID to convert
|
|
298
|
+
* @returns The internal index for the node
|
|
299
|
+
*/
|
|
253
300
|
nodeToIndex(nodeId) {
|
|
254
301
|
const index = this.data.nodeIdToIndex.get(nodeId);
|
|
255
302
|
if (index === undefined) {
|
|
@@ -258,8 +305,10 @@ export class CSRGraph {
|
|
|
258
305
|
return index;
|
|
259
306
|
}
|
|
260
307
|
/**
|
|
261
|
-
|
|
262
|
-
|
|
308
|
+
* Convert internal index to node ID.
|
|
309
|
+
* @param index - The internal index to convert
|
|
310
|
+
* @returns The node ID for the given index
|
|
311
|
+
*/
|
|
263
312
|
indexToNodeId(index) {
|
|
264
313
|
const nodeId = this.data.indexToNodeId[index];
|
|
265
314
|
if (nodeId === undefined) {
|
|
@@ -268,8 +317,11 @@ export class CSRGraph {
|
|
|
268
317
|
return nodeId;
|
|
269
318
|
}
|
|
270
319
|
/**
|
|
271
|
-
|
|
272
|
-
|
|
320
|
+
* Get edge weight between two nodes.
|
|
321
|
+
* @param source - The source node ID
|
|
322
|
+
* @param target - The target node ID
|
|
323
|
+
* @returns The edge weight, or undefined if the edge doesn't exist or has no weight
|
|
324
|
+
*/
|
|
273
325
|
getEdgeWeight(source, target) {
|
|
274
326
|
if (!this.data.edgeWeights) {
|
|
275
327
|
return undefined;
|
|
@@ -291,8 +343,13 @@ export class CSRGraph {
|
|
|
291
343
|
return this.data.edgeWeights[edgeIndex];
|
|
292
344
|
}
|
|
293
345
|
/**
|
|
294
|
-
|
|
295
|
-
|
|
346
|
+
* Binary search for target in sorted array.
|
|
347
|
+
* @param arr - The typed array to search in
|
|
348
|
+
* @param target - The value to search for
|
|
349
|
+
* @param start - The starting index (inclusive)
|
|
350
|
+
* @param end - The ending index (exclusive)
|
|
351
|
+
* @returns The index of the target, or -1 if not found
|
|
352
|
+
*/
|
|
296
353
|
binarySearch(arr, target, start, end) {
|
|
297
354
|
let left = start;
|
|
298
355
|
let right = end - 1;
|
|
@@ -315,8 +372,14 @@ export class CSRGraph {
|
|
|
315
372
|
return -1;
|
|
316
373
|
}
|
|
317
374
|
/**
|
|
318
|
-
|
|
319
|
-
|
|
375
|
+
* Create CSR graph from standard Graph interface.
|
|
376
|
+
* @param graph - The graph object to convert, must implement nodes, neighbors, hasNode, and optionally getEdge
|
|
377
|
+
* @param graph.nodes - Function that returns an iterator over node objects with id property
|
|
378
|
+
* @param graph.neighbors - Function that returns an iterator over neighbor node IDs
|
|
379
|
+
* @param graph.hasNode - Function that checks if a node exists in the graph
|
|
380
|
+
* @param graph.getEdge - Optional function that returns edge data including weight
|
|
381
|
+
* @returns A new CSRGraph instance
|
|
382
|
+
*/
|
|
320
383
|
static fromGraph(graph) {
|
|
321
384
|
const adjacencyList = new Map();
|
|
322
385
|
const weights = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csr-graph.js","sourceRoot":"","sources":["../../../src/optimized/csr-graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"csr-graph.js","sourceRoot":"","sources":["../../../src/optimized/csr-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,42 +33,63 @@ export declare class DirectionOptimizedBFS<TNodeId = NodeId> {
|
|
|
33
33
|
private frontier;
|
|
34
34
|
private nextFrontier;
|
|
35
35
|
private distances;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new DirectionOptimizedBFS instance.
|
|
38
|
+
* @param graph - The CSR graph to perform BFS on
|
|
39
|
+
* @param options - Optional configuration for switching thresholds
|
|
40
|
+
*/
|
|
36
41
|
constructor(graph: CSRGraph<TNodeId>, options?: DirectionOptimizedBFSOptions);
|
|
37
42
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
* Perform BFS from a single source node.
|
|
44
|
+
* @param source - The source node ID to start the BFS from
|
|
45
|
+
* @returns The BFS result containing distances and parent pointers
|
|
46
|
+
*/
|
|
40
47
|
search(source: TNodeId): BFSResult<TNodeId>;
|
|
41
48
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
* Top-down BFS step - explore from frontier.
|
|
50
|
+
* @returns The scout count (total degree of newly discovered nodes)
|
|
51
|
+
*/
|
|
44
52
|
private topDownStep;
|
|
45
53
|
/**
|
|
46
|
-
|
|
47
|
-
|
|
54
|
+
* Bottom-up BFS step - check unvisited nodes for frontier neighbors.
|
|
55
|
+
* @returns The number of newly discovered nodes
|
|
56
|
+
*/
|
|
48
57
|
private bottomUpStep;
|
|
49
58
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
59
|
+
* Calculate edges to check for switching heuristic.
|
|
60
|
+
* @returns The total number of outgoing edges from frontier nodes
|
|
61
|
+
*/
|
|
52
62
|
private calculateEdgesToCheck;
|
|
53
63
|
/**
|
|
54
|
-
|
|
55
|
-
|
|
64
|
+
* Build result map from internal data structures.
|
|
65
|
+
* @returns The BFS result containing distances and parent pointers
|
|
66
|
+
*/
|
|
56
67
|
private buildResult;
|
|
57
68
|
/**
|
|
58
|
-
|
|
59
|
-
|
|
69
|
+
* Perform multi-source BFS from multiple source nodes.
|
|
70
|
+
* @param sources - Array of source node IDs to start the BFS from
|
|
71
|
+
* @returns The BFS result containing distances and parent pointers
|
|
72
|
+
*/
|
|
60
73
|
searchMultiple(sources: TNodeId[]): BFSResult<TNodeId>;
|
|
61
74
|
/**
|
|
62
|
-
|
|
63
|
-
|
|
75
|
+
* Reset internal state for reuse
|
|
76
|
+
*/
|
|
64
77
|
reset(): void;
|
|
65
78
|
}
|
|
66
79
|
/**
|
|
67
|
-
* Convenience function for single-source BFS
|
|
80
|
+
* Convenience function for single-source BFS.
|
|
81
|
+
* @param graph - The CSR graph to perform BFS on
|
|
82
|
+
* @param source - The source node ID to start the BFS from
|
|
83
|
+
* @param options - Optional configuration for switching thresholds
|
|
84
|
+
* @returns The BFS result containing distances and parent pointers
|
|
68
85
|
*/
|
|
69
86
|
export declare function directionOptimizedBFS<TNodeId = NodeId>(graph: CSRGraph<TNodeId>, source: TNodeId, options?: DirectionOptimizedBFSOptions): BFSResult<TNodeId>;
|
|
70
87
|
/**
|
|
71
|
-
* Convenience function for multi-source BFS
|
|
88
|
+
* Convenience function for multi-source BFS.
|
|
89
|
+
* @param graph - The CSR graph to perform BFS on
|
|
90
|
+
* @param sources - Array of source node IDs to start the BFS from
|
|
91
|
+
* @param options - Optional configuration for switching thresholds
|
|
92
|
+
* @returns The BFS result containing distances and parent pointers
|
|
72
93
|
*/
|
|
73
94
|
export declare function directionOptimizedBFSMultiple<TNodeId = NodeId>(graph: CSRGraph<TNodeId>, sources: TNodeId[], options?: DirectionOptimizedBFSOptions): BFSResult<TNodeId>;
|
|
74
95
|
//# sourceMappingURL=direction-optimized-bfs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direction-optimized-bfs.d.ts","sourceRoot":"","sources":["../../../src/optimized/direction-optimized-bfs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"direction-optimized-bfs.d.ts","sourceRoot":"","sources":["../../../src/optimized/direction-optimized-bfs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,OAAO;IAC9B,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,qBAAa,qBAAqB,CAAC,OAAO,GAAG,MAAM;IAC/C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IAGrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,SAAS,CAAuB;IAExC;;;;OAIG;gBACS,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,4BAA4B;IAY5E;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAiD3C;;;OAGG;IACH,OAAO,CAAC,WAAW;IAoBnB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAwBpB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;OAGG;IACH,OAAO,CAAC,WAAW;IA4BnB;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;IAsDtD;;OAEG;IACH,KAAK,IAAI,IAAI;CAMhB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAG,MAAM,EAClD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,4BAA4B,GACvC,SAAS,CAAC,OAAO,CAAC,CAGpB;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,GAAG,MAAM,EAC1D,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,CAAC,EAAE,4BAA4B,GACvC,SAAS,CAAC,OAAO,CAAC,CAGpB"}
|
|
@@ -10,6 +10,11 @@ import { CompactDistanceArray, GraphBitSet } from "./bit-packed.js";
|
|
|
10
10
|
* "Direction-optimizing breadth-first search." SC'12.
|
|
11
11
|
*/
|
|
12
12
|
export class DirectionOptimizedBFS {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new DirectionOptimizedBFS instance.
|
|
15
|
+
* @param graph - The CSR graph to perform BFS on
|
|
16
|
+
* @param options - Optional configuration for switching thresholds
|
|
17
|
+
*/
|
|
13
18
|
constructor(graph, options) {
|
|
14
19
|
this.graph = graph;
|
|
15
20
|
this.alpha = options?.alpha ?? 15;
|
|
@@ -21,8 +26,10 @@ export class DirectionOptimizedBFS {
|
|
|
21
26
|
this.distances = new CompactDistanceArray(nodeCount);
|
|
22
27
|
}
|
|
23
28
|
/**
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
* Perform BFS from a single source node.
|
|
30
|
+
* @param source - The source node ID to start the BFS from
|
|
31
|
+
* @returns The BFS result containing distances and parent pointers
|
|
32
|
+
*/
|
|
26
33
|
search(source) {
|
|
27
34
|
const sourceIndex = this.graph.nodeToIndex(source);
|
|
28
35
|
this.parent[sourceIndex] = -2; // Mark as source
|
|
@@ -40,8 +47,7 @@ export class DirectionOptimizedBFS {
|
|
|
40
47
|
oldAwakeCount = awakeCount;
|
|
41
48
|
if (useBottomUp) {
|
|
42
49
|
// Check if we should switch back to top-down
|
|
43
|
-
if (awakeCount >= oldAwakeCount ||
|
|
44
|
-
awakeCount > this.graph.nodeCount() / this.beta) {
|
|
50
|
+
if (awakeCount >= oldAwakeCount || awakeCount > this.graph.nodeCount() / this.beta) {
|
|
45
51
|
useBottomUp = false;
|
|
46
52
|
}
|
|
47
53
|
}
|
|
@@ -67,8 +73,9 @@ export class DirectionOptimizedBFS {
|
|
|
67
73
|
return this.buildResult();
|
|
68
74
|
}
|
|
69
75
|
/**
|
|
70
|
-
|
|
71
|
-
|
|
76
|
+
* Top-down BFS step - explore from frontier.
|
|
77
|
+
* @returns The scout count (total degree of newly discovered nodes)
|
|
78
|
+
*/
|
|
72
79
|
topDownStep() {
|
|
73
80
|
let scoutCount = 0;
|
|
74
81
|
// Iterate through frontier nodes
|
|
@@ -86,8 +93,9 @@ export class DirectionOptimizedBFS {
|
|
|
86
93
|
return scoutCount;
|
|
87
94
|
}
|
|
88
95
|
/**
|
|
89
|
-
|
|
90
|
-
|
|
96
|
+
* Bottom-up BFS step - check unvisited nodes for frontier neighbors.
|
|
97
|
+
* @returns The number of newly discovered nodes
|
|
98
|
+
*/
|
|
91
99
|
bottomUpStep() {
|
|
92
100
|
const nodeCount = this.graph.nodeCount();
|
|
93
101
|
let awakeCount = 0;
|
|
@@ -110,8 +118,9 @@ export class DirectionOptimizedBFS {
|
|
|
110
118
|
return awakeCount;
|
|
111
119
|
}
|
|
112
120
|
/**
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
* Calculate edges to check for switching heuristic.
|
|
122
|
+
* @returns The total number of outgoing edges from frontier nodes
|
|
123
|
+
*/
|
|
115
124
|
calculateEdgesToCheck() {
|
|
116
125
|
let count = 0;
|
|
117
126
|
for (const node of this.frontier) {
|
|
@@ -120,8 +129,9 @@ export class DirectionOptimizedBFS {
|
|
|
120
129
|
return count;
|
|
121
130
|
}
|
|
122
131
|
/**
|
|
123
|
-
|
|
124
|
-
|
|
132
|
+
* Build result map from internal data structures.
|
|
133
|
+
* @returns The BFS result containing distances and parent pointers
|
|
134
|
+
*/
|
|
125
135
|
buildResult() {
|
|
126
136
|
const distances = new Map();
|
|
127
137
|
const parents = new Map();
|
|
@@ -147,8 +157,10 @@ export class DirectionOptimizedBFS {
|
|
|
147
157
|
return { distances, parents, visitedCount };
|
|
148
158
|
}
|
|
149
159
|
/**
|
|
150
|
-
|
|
151
|
-
|
|
160
|
+
* Perform multi-source BFS from multiple source nodes.
|
|
161
|
+
* @param sources - Array of source node IDs to start the BFS from
|
|
162
|
+
* @returns The BFS result containing distances and parent pointers
|
|
163
|
+
*/
|
|
152
164
|
searchMultiple(sources) {
|
|
153
165
|
// Initialize multiple sources
|
|
154
166
|
for (const source of sources) {
|
|
@@ -172,8 +184,7 @@ export class DirectionOptimizedBFS {
|
|
|
172
184
|
while (!this.frontier.isEmpty()) {
|
|
173
185
|
oldAwakeCount = awakeCount;
|
|
174
186
|
if (useBottomUp) {
|
|
175
|
-
if (awakeCount >= oldAwakeCount ||
|
|
176
|
-
awakeCount > this.graph.nodeCount() / this.beta) {
|
|
187
|
+
if (awakeCount >= oldAwakeCount || awakeCount > this.graph.nodeCount() / this.beta) {
|
|
177
188
|
useBottomUp = false;
|
|
178
189
|
}
|
|
179
190
|
}
|
|
@@ -197,8 +208,8 @@ export class DirectionOptimizedBFS {
|
|
|
197
208
|
return this.buildResult();
|
|
198
209
|
}
|
|
199
210
|
/**
|
|
200
|
-
|
|
201
|
-
|
|
211
|
+
* Reset internal state for reuse
|
|
212
|
+
*/
|
|
202
213
|
reset() {
|
|
203
214
|
this.parent.fill(-1);
|
|
204
215
|
this.frontier.clear();
|
|
@@ -207,14 +218,22 @@ export class DirectionOptimizedBFS {
|
|
|
207
218
|
}
|
|
208
219
|
}
|
|
209
220
|
/**
|
|
210
|
-
* Convenience function for single-source BFS
|
|
221
|
+
* Convenience function for single-source BFS.
|
|
222
|
+
* @param graph - The CSR graph to perform BFS on
|
|
223
|
+
* @param source - The source node ID to start the BFS from
|
|
224
|
+
* @param options - Optional configuration for switching thresholds
|
|
225
|
+
* @returns The BFS result containing distances and parent pointers
|
|
211
226
|
*/
|
|
212
227
|
export function directionOptimizedBFS(graph, source, options) {
|
|
213
228
|
const bfs = new DirectionOptimizedBFS(graph, options);
|
|
214
229
|
return bfs.search(source);
|
|
215
230
|
}
|
|
216
231
|
/**
|
|
217
|
-
* Convenience function for multi-source BFS
|
|
232
|
+
* Convenience function for multi-source BFS.
|
|
233
|
+
* @param graph - The CSR graph to perform BFS on
|
|
234
|
+
* @param sources - Array of source node IDs to start the BFS from
|
|
235
|
+
* @param options - Optional configuration for switching thresholds
|
|
236
|
+
* @returns The BFS result containing distances and parent pointers
|
|
218
237
|
*/
|
|
219
238
|
export function directionOptimizedBFSMultiple(graph, sources, options) {
|
|
220
239
|
const bfs = new DirectionOptimizedBFS(graph, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direction-optimized-bfs.js","sourceRoot":"","sources":["../../../src/optimized/direction-optimized-bfs.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"direction-optimized-bfs.js","sourceRoot":"","sources":["../../../src/optimized/direction-optimized-bfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,21 +8,61 @@ import { CSRGraph, type ReadonlyGraph } from "./csr-graph.js";
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class GraphAdapter<TNodeId = NodeId> implements ReadonlyGraph<TNodeId> {
|
|
10
10
|
private csrGraph;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new GraphAdapter that wraps or converts a graph to CSR format.
|
|
13
|
+
* @param graph - The graph to adapt (either standard Graph or ReadonlyGraph)
|
|
14
|
+
*/
|
|
11
15
|
constructor(graph: Graph | ReadonlyGraph<TNodeId>);
|
|
12
16
|
/**
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
* Convert standard graph to CSR format.
|
|
18
|
+
* @param graph - The graph to convert
|
|
19
|
+
* @returns A new CSRGraph instance
|
|
20
|
+
*/
|
|
15
21
|
private convertToCSR;
|
|
22
|
+
/**
|
|
23
|
+
* Get the total number of nodes in the graph.
|
|
24
|
+
* @returns The number of nodes
|
|
25
|
+
*/
|
|
16
26
|
nodeCount(): number;
|
|
27
|
+
/**
|
|
28
|
+
* Get the total number of edges in the graph.
|
|
29
|
+
* @returns The number of edges
|
|
30
|
+
*/
|
|
17
31
|
edgeCount(): number;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a node exists in the graph.
|
|
34
|
+
* @param nodeId - The node ID to check
|
|
35
|
+
* @returns True if the node exists, false otherwise
|
|
36
|
+
*/
|
|
18
37
|
hasNode(nodeId: TNodeId): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Check if an edge exists between two nodes.
|
|
40
|
+
* @param source - The source node ID
|
|
41
|
+
* @param target - The target node ID
|
|
42
|
+
* @returns True if the edge exists, false otherwise
|
|
43
|
+
*/
|
|
19
44
|
hasEdge(source: TNodeId, target: TNodeId): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get neighbors of a node as node IDs.
|
|
47
|
+
* @param nodeId - The node ID to get neighbors for
|
|
48
|
+
* @returns An iterator over neighbor node IDs
|
|
49
|
+
*/
|
|
20
50
|
neighbors(nodeId: TNodeId): IterableIterator<TNodeId>;
|
|
51
|
+
/**
|
|
52
|
+
* Get the out-degree (number of outgoing edges) of a node.
|
|
53
|
+
* @param nodeId - The node ID to get the out-degree for
|
|
54
|
+
* @returns The number of outgoing edges from the node
|
|
55
|
+
*/
|
|
21
56
|
outDegree(nodeId: TNodeId): number;
|
|
57
|
+
/**
|
|
58
|
+
* Get all nodes in the graph.
|
|
59
|
+
* @returns An iterator over all node IDs
|
|
60
|
+
*/
|
|
22
61
|
nodes(): IterableIterator<TNodeId>;
|
|
23
62
|
/**
|
|
24
|
-
|
|
25
|
-
|
|
63
|
+
* Get the underlying CSR graph.
|
|
64
|
+
* @returns The CSRGraph instance used internally
|
|
65
|
+
*/
|
|
26
66
|
getCSRGraph(): CSRGraph<TNodeId>;
|
|
27
67
|
}
|
|
28
68
|
/**
|
|
@@ -38,25 +78,34 @@ export interface GraphAlgorithmConfig {
|
|
|
38
78
|
enableCaching?: boolean;
|
|
39
79
|
}
|
|
40
80
|
/**
|
|
41
|
-
* Configure optimizations globally
|
|
81
|
+
* Configure optimizations globally.
|
|
42
82
|
* @deprecated This function is a no-op and will be removed in a future version
|
|
83
|
+
* @param _config - The configuration object (ignored)
|
|
43
84
|
*/
|
|
44
85
|
export declare function configureOptimizations(_config: GraphAlgorithmConfig): void;
|
|
45
86
|
/**
|
|
46
|
-
* Get current configuration
|
|
87
|
+
* Get current configuration.
|
|
47
88
|
* @deprecated This function returns empty config and will be removed in a future version
|
|
89
|
+
* @returns An empty configuration object
|
|
48
90
|
*/
|
|
49
91
|
export declare function getOptimizationConfig(): GraphAlgorithmConfig;
|
|
50
92
|
/**
|
|
51
|
-
* Check if a graph is already in CSR format
|
|
93
|
+
* Check if a graph is already in CSR format.
|
|
94
|
+
* @param graph - The graph to check
|
|
95
|
+
* @returns True if the graph is a CSRGraph instance
|
|
52
96
|
*/
|
|
53
97
|
export declare function isCSRGraph<TNodeId = NodeId>(graph: unknown): graph is CSRGraph<TNodeId>;
|
|
54
98
|
/**
|
|
55
|
-
* Convert any graph to CSR format
|
|
99
|
+
* Convert any graph to CSR format.
|
|
100
|
+
* @param graph - The graph to convert
|
|
101
|
+
* @returns A CSRGraph instance (either the original if already CSR, or a new converted one)
|
|
56
102
|
*/
|
|
57
103
|
export declare function toCSRGraph<TNodeId = NodeId>(graph: Graph | ReadonlyGraph<TNodeId> | CSRGraph<TNodeId>): CSRGraph<TNodeId>;
|
|
58
104
|
/**
|
|
59
|
-
* Create an optimized graph from nodes and edges
|
|
105
|
+
* Create an optimized graph from nodes and edges.
|
|
106
|
+
* @param nodes - Array of node IDs
|
|
107
|
+
* @param edges - Array of edge tuples [source, target, weight?]
|
|
108
|
+
* @returns A new CSRGraph instance
|
|
60
109
|
*/
|
|
61
110
|
export declare function createOptimizedGraph<TNodeId = NodeId>(nodes: TNodeId[], edges: [TNodeId, TNodeId, number?][]): CSRGraph<TNodeId>;
|
|
62
111
|
//# sourceMappingURL=graph-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-adapter.d.ts","sourceRoot":"","sources":["../../../src/optimized/graph-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"graph-adapter.d.ts","sourceRoot":"","sources":["../../../src/optimized/graph-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;;;GAIG;AACH,qBAAa,YAAY,CAAC,OAAO,GAAG,MAAM,CAAE,YAAW,aAAa,CAAC,OAAO,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAoB;IAEpC;;;OAGG;gBACS,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;IAUjD;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAuDpB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAIjC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAIlD;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAIrD;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAIlC;;;OAGG;IACH,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAIlC;;;OAGG;IACH,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC;CAGnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAGjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,oBAAoB,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAG,MAAM,EACvC,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAC1D,QAAQ,CAAC,OAAO,CAAC,CAOnB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAG,MAAM,EACjD,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,GACrC,QAAQ,CAAC,OAAO,CAAC,CAqBnB"}
|