@graphty/algorithms 1.2.0 → 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 +375 -276
- package/dist/algorithms.d.ts +42 -2
- package/dist/algorithms.js +11402 -2
- package/dist/algorithms.js.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.d.ts +14 -0
- package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.js +144 -169
- package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
- package/dist/src/algorithms/centrality/closeness.d.ts +35 -1
- package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/closeness.js +70 -149
- 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 +12 -9
- package/dist/src/algorithms/centrality/degree.js.map +1 -1
- package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts +57 -0
- package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/delta-pagerank-simple.js +304 -0
- package/dist/src/algorithms/centrality/delta-pagerank-simple.js.map +1 -0
- package/dist/src/algorithms/centrality/delta-pagerank.d.ts +106 -0
- package/dist/src/algorithms/centrality/delta-pagerank.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/delta-pagerank.js +320 -0
- package/dist/src/algorithms/centrality/delta-pagerank.js.map +1 -0
- 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 +3 -1
- package/dist/src/algorithms/centrality/index.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/index.js +2 -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 +31 -0
- package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/pagerank.js +61 -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 +67 -57
- package/dist/src/algorithms/community/girvan-newman.js.map +1 -1
- package/dist/src/algorithms/community/index.d.ts +2 -0
- 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 +11 -4
- package/dist/src/algorithms/community/label-propagation.d.ts.map +1 -1
- package/dist/src/algorithms/community/label-propagation.js +60 -38
- package/dist/src/algorithms/community/label-propagation.js.map +1 -1
- package/dist/src/algorithms/community/leiden.d.ts +3 -3
- package/dist/src/algorithms/community/leiden.d.ts.map +1 -1
- package/dist/src/algorithms/community/leiden.js +70 -44
- package/dist/src/algorithms/community/leiden.js.map +1 -1
- package/dist/src/algorithms/community/louvain-optimized.d.ts +149 -0
- package/dist/src/algorithms/community/louvain-optimized.d.ts.map +1 -0
- package/dist/src/algorithms/community/louvain-optimized.js +338 -0
- package/dist/src/algorithms/community/louvain-optimized.js.map +1 -0
- 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 +35 -81
- package/dist/src/algorithms/community/louvain.js.map +1 -1
- package/dist/src/algorithms/community/modularity-utils.d.ts +55 -0
- package/dist/src/algorithms/community/modularity-utils.d.ts.map +1 -0
- package/dist/src/algorithms/community/modularity-utils.js +108 -0
- package/dist/src/algorithms/community/modularity-utils.js.map +1 -0
- 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 +18 -40
- 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 +11 -12
- package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts +44 -0
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts.map +1 -0
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js +195 -0
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js.map +1 -0
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts +20 -2
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/dijkstra.js +30 -14
- 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 +42 -0
- package/dist/src/algorithms/traversal/bfs-unified.d.ts.map +1 -0
- package/dist/src/algorithms/traversal/bfs-unified.js +370 -0
- package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -0
- package/dist/src/algorithms/traversal/bfs-variants.d.ts +77 -0
- package/dist/src/algorithms/traversal/bfs-variants.d.ts.map +1 -0
- package/dist/src/algorithms/traversal/bfs-variants.js +402 -0
- package/dist/src/algorithms/traversal/bfs-variants.js.map +1 -0
- package/dist/src/algorithms/traversal/bfs.d.ts +4 -18
- package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -1
- package/dist/src/algorithms/traversal/bfs.js +5 -182
- 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 +25 -0
- package/dist/src/benchmark-all-algorithms.d.ts.map +1 -0
- package/dist/src/benchmark-all-algorithms.js +491 -0
- package/dist/src/benchmark-all-algorithms.js.map +1 -0
- package/dist/src/clustering/hierarchical.d.ts +23 -15
- package/dist/src/clustering/hierarchical.d.ts.map +1 -1
- package/dist/src/clustering/hierarchical.js +226 -224
- package/dist/src/clustering/hierarchical.js.map +1 -1
- package/dist/src/clustering/index.d.ts +4 -2
- package/dist/src/clustering/index.d.ts.map +1 -1
- package/dist/src/clustering/index.js +2 -2
- package/dist/src/clustering/index.js.map +1 -1
- package/dist/src/clustering/k-core.d.ts +17 -19
- package/dist/src/clustering/k-core.d.ts.map +1 -1
- package/dist/src/clustering/k-core.js +68 -30
- 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 +11 -0
- package/dist/src/clustering/spectral.d.ts.map +1 -1
- package/dist/src/clustering/spectral.js +99 -47
- 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 +49 -5
- 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 +20 -12
- package/dist/src/flow/ford-fulkerson.d.ts.map +1 -1
- package/dist/src/flow/ford-fulkerson.js +170 -217
- package/dist/src/flow/ford-fulkerson.js.map +1 -1
- package/dist/src/flow/min-cut.d.ts +6 -8
- package/dist/src/flow/min-cut.d.ts.map +1 -1
- package/dist/src/flow/min-cut.js +34 -12
- package/dist/src/flow/min-cut.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -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 +47 -30
- 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 +31 -14
- 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 +193 -0
- package/dist/src/optimized/bit-packed.d.ts.map +1 -0
- package/dist/src/optimized/bit-packed.js +342 -0
- package/dist/src/optimized/bit-packed.js.map +1 -0
- package/dist/src/optimized/csr-graph.d.ts +149 -0
- package/dist/src/optimized/csr-graph.d.ts.map +1 -0
- package/dist/src/optimized/csr-graph.js +404 -0
- package/dist/src/optimized/csr-graph.js.map +1 -0
- package/dist/src/optimized/direction-optimized-bfs.d.ts +95 -0
- package/dist/src/optimized/direction-optimized-bfs.d.ts.map +1 -0
- package/dist/src/optimized/direction-optimized-bfs.js +242 -0
- package/dist/src/optimized/direction-optimized-bfs.js.map +1 -0
- package/dist/src/optimized/graph-adapter.d.ts +111 -0
- package/dist/src/optimized/graph-adapter.d.ts.map +1 -0
- package/dist/src/optimized/graph-adapter.js +194 -0
- package/dist/src/optimized/graph-adapter.js.map +1 -0
- package/dist/src/optimized/index.d.ts +14 -0
- package/dist/src/optimized/index.d.ts.map +1 -0
- package/dist/src/optimized/index.js +30 -0
- package/dist/src/optimized/index.js.map +1 -0
- 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 +28 -23
- 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 +31 -36
- package/dist/src/research/sync.js.map +1 -1
- package/dist/src/research/terahac.d.ts +2 -1
- package/dist/src/research/terahac.d.ts.map +1 -1
- package/dist/src/research/terahac.js +39 -7
- package/dist/src/research/terahac.js.map +1 -1
- package/dist/src/types/index.d.ts +8 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/algorithm-utilities.d.ts +2 -0
- package/dist/src/utils/algorithm-utilities.d.ts.map +1 -0
- package/dist/src/utils/algorithm-utilities.js +2 -0
- package/dist/src/utils/algorithm-utilities.js.map +1 -0
- package/dist/src/utils/graph-converters.d.ts +110 -0
- package/dist/src/utils/graph-converters.d.ts.map +1 -0
- package/dist/src/utils/graph-converters.js +227 -0
- package/dist/src/utils/graph-converters.js.map +1 -0
- package/dist/src/utils/graph-utilities.d.ts +62 -0
- package/dist/src/utils/graph-utilities.d.ts.map +1 -0
- package/dist/src/utils/graph-utilities.js +148 -0
- package/dist/src/utils/graph-utilities.js.map +1 -0
- package/dist/src/utils/index.d.ts +5 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +5 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/math-utilities.d.ts +63 -0
- package/dist/src/utils/math-utilities.d.ts.map +1 -0
- package/dist/src/utils/math-utilities.js +132 -0
- package/dist/src/utils/math-utilities.js.map +1 -0
- package/dist/src/utils/matrix-utilities.d.ts +2 -0
- package/dist/src/utils/matrix-utilities.d.ts.map +1 -0
- package/dist/src/utils/matrix-utilities.js +2 -0
- package/dist/src/utils/matrix-utilities.js.map +1 -0
- package/dist/src/utils/optimization-helpers.d.ts +42 -0
- package/dist/src/utils/optimization-helpers.d.ts.map +1 -0
- package/dist/src/utils/optimization-helpers.js +59 -0
- package/dist/src/utils/optimization-helpers.js.map +1 -0
- 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 +58 -39
- package/src/algorithms/centrality/betweenness.ts +185 -200
- package/src/algorithms/centrality/closeness.ts +93 -194
- package/src/algorithms/centrality/degree.ts +18 -22
- package/src/algorithms/centrality/delta-pagerank-simple.ts +374 -0
- package/src/algorithms/centrality/delta-pagerank.ts +458 -0
- package/src/algorithms/centrality/eigenvector.ts +14 -15
- package/src/algorithms/centrality/hits.ts +17 -17
- package/src/algorithms/centrality/index.ts +20 -13
- package/src/algorithms/centrality/katz.ts +17 -25
- package/src/algorithms/centrality/pagerank.ts +91 -16
- package/src/algorithms/community/girvan-newman.ts +90 -86
- package/src/algorithms/community/index.ts +6 -5
- package/src/algorithms/community/label-propagation.ts +69 -48
- package/src/algorithms/community/leiden.ts +88 -65
- package/src/algorithms/community/louvain-optimized.ts +474 -0
- package/src/algorithms/community/louvain.ts +52 -122
- package/src/algorithms/community/modularity-utils.ts +134 -0
- package/src/algorithms/components/connected.ts +40 -17
- package/src/algorithms/matching/bipartite.ts +24 -53
- 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 -28
- package/src/algorithms/shortest-path/bidirectional-dijkstra.ts +248 -0
- package/src/algorithms/shortest-path/dijkstra.ts +38 -30
- 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 +437 -0
- package/src/algorithms/traversal/bfs-variants.ts +520 -0
- package/src/algorithms/traversal/bfs.ts +5 -229
- package/src/algorithms/traversal/dfs.ts +61 -42
- package/src/algorithms/traversal/index.ts +3 -3
- package/src/benchmark-all-algorithms.ts +580 -0
- package/src/clustering/hierarchical.ts +268 -272
- package/src/clustering/index.ts +8 -6
- package/src/clustering/k-core.ts +93 -61
- package/src/clustering/mcl.ts +53 -23
- package/src/clustering/spectral.ts +130 -72
- package/src/core/graph.ts +58 -18
- 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 +221 -262
- package/src/flow/min-cut.ts +59 -51
- package/src/index.ts +9 -2
- package/src/link-prediction/adamic-adar.ts +75 -74
- package/src/link-prediction/common-neighbors.ts +49 -49
- package/src/link-prediction/index.ts +1 -1
- package/src/optimized/bit-packed.ts +390 -0
- package/src/optimized/csr-graph.ts +518 -0
- package/src/optimized/direction-optimized-bfs.ts +310 -0
- package/src/optimized/graph-adapter.ts +248 -0
- package/src/optimized/index.ts +34 -0
- package/src/pathfinding/astar.ts +40 -25
- package/src/pathfinding/utils.ts +20 -13
- package/src/research/grsbm.ts +36 -39
- package/src/research/index.ts +4 -4
- package/src/research/sync.ts +41 -54
- package/src/research/terahac.ts +63 -21
- package/src/types/index.ts +8 -0
- package/src/utils/algorithm-utilities.ts +2 -0
- package/src/utils/graph-converters.ts +269 -0
- package/src/utils/graph-utilities.ts +173 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/math-utilities.ts +149 -0
- package/src/utils/matrix-utilities.ts +2 -0
- package/src/utils/optimization-helpers.ts +87 -0
- package/src/utils/priorityQueue.ts +40 -6
|
@@ -8,19 +8,16 @@
|
|
|
8
8
|
* Reference: Raghavan et al. (2007) "Near linear time algorithm to
|
|
9
9
|
* detect community structures in large-scale networks"
|
|
10
10
|
*/
|
|
11
|
+
import { graphToMap } from "../../utils/graph-converters.js";
|
|
12
|
+
import { SeededRandom, shuffle } from "../../utils/math-utilities.js";
|
|
11
13
|
/**
|
|
12
|
-
* Label Propagation Algorithm
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
16
|
-
* @param options - Algorithm options
|
|
17
|
-
* @returns Community assignments
|
|
18
|
-
*
|
|
19
|
-
* Time Complexity: O(m) per iteration, typically O(km) for k iterations
|
|
20
|
-
* Space Complexity: O(n)
|
|
14
|
+
* Internal implementation of Label Propagation Algorithm
|
|
15
|
+
* @param graph - Map representation of the graph (node to neighbors with weights)
|
|
16
|
+
* @param options - Algorithm configuration options
|
|
17
|
+
* @returns Community assignments, iteration count, and convergence status
|
|
21
18
|
*/
|
|
22
|
-
|
|
23
|
-
const { maxIterations = 100, randomSeed = 42
|
|
19
|
+
function labelPropagationImpl(graph, options = {}) {
|
|
20
|
+
const { maxIterations = 100, randomSeed = 42 } = options;
|
|
24
21
|
if (graph.size === 0) {
|
|
25
22
|
return {
|
|
26
23
|
communities: new Map(),
|
|
@@ -29,11 +26,7 @@ export function labelPropagation(graph, options = {}) {
|
|
|
29
26
|
};
|
|
30
27
|
}
|
|
31
28
|
// Initialize random number generator
|
|
32
|
-
|
|
33
|
-
const random = () => {
|
|
34
|
-
seed = ((seed * 1664525) + 1013904223) % 2147483647;
|
|
35
|
-
return seed / 2147483647;
|
|
36
|
-
};
|
|
29
|
+
const random = SeededRandom.createGenerator(randomSeed);
|
|
37
30
|
// Initialize labels - each node gets its own label
|
|
38
31
|
const labels = new Map();
|
|
39
32
|
const nodes = Array.from(graph.keys());
|
|
@@ -119,11 +112,14 @@ export function labelPropagation(graph, options = {}) {
|
|
|
119
112
|
};
|
|
120
113
|
}
|
|
121
114
|
/**
|
|
122
|
-
* Asynchronous Label Propagation
|
|
115
|
+
* Internal implementation of Asynchronous Label Propagation
|
|
123
116
|
* Updates all nodes simultaneously (can lead to oscillations)
|
|
117
|
+
* @param graph - Map representation of the graph (node to neighbors with weights)
|
|
118
|
+
* @param options - Algorithm configuration options
|
|
119
|
+
* @returns Community assignments, iteration count, and convergence status
|
|
124
120
|
*/
|
|
125
|
-
|
|
126
|
-
const { maxIterations = 100
|
|
121
|
+
function labelPropagationAsyncImpl(graph, options = {}) {
|
|
122
|
+
const { maxIterations = 100 } = options;
|
|
127
123
|
if (graph.size === 0) {
|
|
128
124
|
return {
|
|
129
125
|
communities: new Map(),
|
|
@@ -204,17 +200,17 @@ export function labelPropagationAsync(graph, options = {}) {
|
|
|
204
200
|
};
|
|
205
201
|
}
|
|
206
202
|
/**
|
|
207
|
-
* Semi-supervised Label Propagation
|
|
203
|
+
* Internal implementation of Semi-supervised Label Propagation
|
|
208
204
|
* Some nodes have fixed labels that don't change
|
|
205
|
+
* @param graph - Map representation of the graph (node to neighbors with weights)
|
|
206
|
+
* @param seedLabels - Map of node IDs to their fixed community labels
|
|
207
|
+
* @param options - Algorithm configuration options
|
|
208
|
+
* @returns Community assignments, iteration count, and convergence status
|
|
209
209
|
*/
|
|
210
|
-
|
|
211
|
-
const { maxIterations = 100, randomSeed = 42
|
|
210
|
+
function labelPropagationSemiSupervisedImpl(graph, seedLabels, options = {}) {
|
|
211
|
+
const { maxIterations = 100, randomSeed = 42 } = options;
|
|
212
212
|
// Initialize random number generator
|
|
213
|
-
|
|
214
|
-
const random = () => {
|
|
215
|
-
seed = ((seed * 1664525) + 1013904223) % 2147483647;
|
|
216
|
-
return seed / 2147483647;
|
|
217
|
-
};
|
|
213
|
+
const random = SeededRandom.createGenerator(randomSeed);
|
|
218
214
|
// Initialize labels
|
|
219
215
|
const labels = new Map();
|
|
220
216
|
const nodes = Array.from(graph.keys());
|
|
@@ -291,17 +287,43 @@ export function labelPropagationSemiSupervised(graph, seedLabels, options = {})
|
|
|
291
287
|
};
|
|
292
288
|
}
|
|
293
289
|
/**
|
|
294
|
-
*
|
|
290
|
+
* Label Propagation Algorithm
|
|
291
|
+
* Each node adopts the most frequent label among its neighbors
|
|
292
|
+
* @param graph - Undirected graph (can be weighted)
|
|
293
|
+
* @param options - Algorithm options
|
|
294
|
+
* @returns Community assignments
|
|
295
|
+
*
|
|
296
|
+
* Time Complexity: O(m) per iteration, typically O(km) for k iterations
|
|
297
|
+
* Space Complexity: O(n)
|
|
295
298
|
*/
|
|
296
|
-
function
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
299
|
+
export function labelPropagation(graph, options = {}) {
|
|
300
|
+
// Convert Graph to Map representation
|
|
301
|
+
const graphMap = graphToMap(graph);
|
|
302
|
+
return labelPropagationImpl(graphMap, options);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Asynchronous Label Propagation
|
|
306
|
+
* Updates all nodes simultaneously (can lead to oscillations)
|
|
307
|
+
* @param graph - Undirected graph (can be weighted)
|
|
308
|
+
* @param options - Algorithm options
|
|
309
|
+
* @returns Community assignments
|
|
310
|
+
*/
|
|
311
|
+
export function labelPropagationAsync(graph, options = {}) {
|
|
312
|
+
// Convert Graph to Map representation
|
|
313
|
+
const graphMap = graphToMap(graph);
|
|
314
|
+
return labelPropagationAsyncImpl(graphMap, options);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Semi-supervised Label Propagation
|
|
318
|
+
* Some nodes have fixed labels that don't change
|
|
319
|
+
* @param graph - Undirected graph (can be weighted)
|
|
320
|
+
* @param seedLabels - Initial fixed labels for some nodes
|
|
321
|
+
* @param options - Algorithm options
|
|
322
|
+
* @returns Community assignments
|
|
323
|
+
*/
|
|
324
|
+
export function labelPropagationSemiSupervised(graph, seedLabels, options = {}) {
|
|
325
|
+
// Convert Graph to Map representation
|
|
326
|
+
const graphMap = graphToMap(graph);
|
|
327
|
+
return labelPropagationSemiSupervisedImpl(graphMap, seedLabels, options);
|
|
306
328
|
}
|
|
307
329
|
//# sourceMappingURL=label-propagation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label-propagation.js","sourceRoot":"","sources":["../../../../src/algorithms/community/label-propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"label-propagation.js","sourceRoot":"","sources":["../../../../src/algorithms/community/label-propagation.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* Reference: Traag, V.A., Waltman, L. & van Eck, N.J. (2019)
|
|
8
8
|
* "From Louvain to Leiden: guaranteeing well-connected communities"
|
|
9
9
|
*/
|
|
10
|
+
import type { Graph } from "../../core/graph.js";
|
|
10
11
|
export interface LeidenOptions {
|
|
11
12
|
resolution?: number;
|
|
12
13
|
randomSeed?: number;
|
|
@@ -21,13 +22,12 @@ export interface LeidenResult {
|
|
|
21
22
|
/**
|
|
22
23
|
* Leiden algorithm for community detection
|
|
23
24
|
* Improves upon Louvain by ensuring well-connected communities
|
|
24
|
-
*
|
|
25
|
-
* @param graph - Undirected weighted graph
|
|
25
|
+
* @param graph - Undirected weighted graph - accepts Graph class or Map representation
|
|
26
26
|
* @param options - Algorithm options
|
|
27
27
|
* @returns Community assignments and modularity
|
|
28
28
|
*
|
|
29
29
|
* Time Complexity: O(m) per iteration, typically O(m log m) total
|
|
30
30
|
* Space Complexity: O(n + m)
|
|
31
31
|
*/
|
|
32
|
-
export declare function leiden(graph:
|
|
32
|
+
export declare function leiden(graph: Graph, options?: LeidenOptions): LeidenResult;
|
|
33
33
|
//# sourceMappingURL=leiden.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leiden.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/community/leiden.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"leiden.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/community/leiden.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIjD,MAAM,WAAW,aAAa;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AA2iBD;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CAI9E"}
|
|
@@ -7,37 +7,33 @@
|
|
|
7
7
|
* Reference: Traag, V.A., Waltman, L. & van Eck, N.J. (2019)
|
|
8
8
|
* "From Louvain to Leiden: guaranteeing well-connected communities"
|
|
9
9
|
*/
|
|
10
|
+
import { graphToMap } from "../../utils/graph-converters.js";
|
|
11
|
+
import { SeededRandom, shuffle } from "../../utils/math-utilities.js";
|
|
10
12
|
/**
|
|
11
|
-
* Leiden algorithm for community detection
|
|
13
|
+
* Internal implementation of Leiden algorithm for community detection
|
|
12
14
|
* Improves upon Louvain by ensuring well-connected communities
|
|
13
|
-
*
|
|
14
|
-
* @param
|
|
15
|
-
* @
|
|
16
|
-
* @returns Community assignments and modularity
|
|
17
|
-
*
|
|
18
|
-
* Time Complexity: O(m) per iteration, typically O(m log m) total
|
|
19
|
-
* Space Complexity: O(n + m)
|
|
15
|
+
* @param inputGraph - Map representation of the graph (node to neighbors with weights)
|
|
16
|
+
* @param options - Algorithm configuration options
|
|
17
|
+
* @returns Community assignments, modularity score, and iteration count
|
|
20
18
|
*/
|
|
21
|
-
|
|
22
|
-
const { resolution = 1.0, randomSeed = 42, maxIterations = 100, threshold = 1e-7
|
|
19
|
+
function leidenImpl(inputGraph, options = {}) {
|
|
20
|
+
const { resolution = 1.0, randomSeed = 42, maxIterations = 100, threshold = 1e-7 } = options;
|
|
23
21
|
// Handle empty graph
|
|
24
|
-
if (
|
|
22
|
+
if (inputGraph.size === 0) {
|
|
25
23
|
return {
|
|
26
24
|
communities: new Map(),
|
|
27
25
|
modularity: 0,
|
|
28
26
|
iterations: 0,
|
|
29
27
|
};
|
|
30
28
|
}
|
|
29
|
+
// Use a mutable variable for the current graph state
|
|
30
|
+
let currentGraph = inputGraph;
|
|
31
31
|
// Initialize random number generator
|
|
32
|
-
|
|
33
|
-
const random = () => {
|
|
34
|
-
seed = ((seed * 1664525) + 1013904223) % 2147483647;
|
|
35
|
-
return seed / 2147483647;
|
|
36
|
-
};
|
|
32
|
+
const random = SeededRandom.createGenerator(randomSeed);
|
|
37
33
|
// Calculate total weight
|
|
38
34
|
let totalWeight = 0;
|
|
39
35
|
const degrees = new Map();
|
|
40
|
-
for (const [node, neighbors] of
|
|
36
|
+
for (const [node, neighbors] of currentGraph) {
|
|
41
37
|
let degree = 0;
|
|
42
38
|
for (const weight of neighbors.values()) {
|
|
43
39
|
degree += weight;
|
|
@@ -48,9 +44,9 @@ export function leiden(graph, options = {}) {
|
|
|
48
44
|
totalWeight /= 2; // Each edge counted twice
|
|
49
45
|
// Initialize communities - each node in its own community
|
|
50
46
|
const communities = new Map();
|
|
51
|
-
const nodes = Array.from(
|
|
47
|
+
const nodes = Array.from(currentGraph.keys());
|
|
52
48
|
nodes.forEach((node, i) => communities.set(node, i));
|
|
53
|
-
let modularity = calculateModularity(
|
|
49
|
+
let modularity = calculateModularity(currentGraph, communities, degrees, totalWeight, resolution);
|
|
54
50
|
let bestModularity = modularity;
|
|
55
51
|
let bestCommunities = new Map(communities);
|
|
56
52
|
let iterations = 0;
|
|
@@ -66,7 +62,7 @@ export function leiden(graph, options = {}) {
|
|
|
66
62
|
if (currentCommunity === undefined) {
|
|
67
63
|
continue;
|
|
68
64
|
}
|
|
69
|
-
const neighborCommunities = getNeighborCommunities(node,
|
|
65
|
+
const neighborCommunities = getNeighborCommunities(node, currentGraph, communities);
|
|
70
66
|
let bestCommunity = currentCommunity;
|
|
71
67
|
let bestGain = 0;
|
|
72
68
|
// Try moving to each neighbor community
|
|
@@ -74,7 +70,7 @@ export function leiden(graph, options = {}) {
|
|
|
74
70
|
if (community === currentCommunity) {
|
|
75
71
|
continue;
|
|
76
72
|
}
|
|
77
|
-
const gain = calculateModularityGain(node, community,
|
|
73
|
+
const gain = calculateModularityGain(node, community, currentGraph, communities, degrees, totalWeight, resolution);
|
|
78
74
|
if (gain > bestGain) {
|
|
79
75
|
bestGain = gain;
|
|
80
76
|
bestCommunity = community;
|
|
@@ -89,15 +85,15 @@ export function leiden(graph, options = {}) {
|
|
|
89
85
|
}
|
|
90
86
|
// Phase 2: Refinement (Leiden improvement over Louvain)
|
|
91
87
|
// Create aggregate network based on current partition
|
|
92
|
-
createAggregateNetwork(
|
|
88
|
+
createAggregateNetwork(currentGraph, communities);
|
|
93
89
|
// Refine partition using aggregate network
|
|
94
|
-
const subsetPartition = refinePartition(
|
|
90
|
+
const subsetPartition = refinePartition(currentGraph, communities);
|
|
95
91
|
// Apply refined partition
|
|
96
92
|
for (const [node, newCommunity] of subsetPartition) {
|
|
97
93
|
communities.set(node, newCommunity);
|
|
98
94
|
}
|
|
99
95
|
// Recalculate modularity
|
|
100
|
-
modularity = calculateModularity(
|
|
96
|
+
modularity = calculateModularity(currentGraph, communities, degrees, totalWeight, resolution);
|
|
101
97
|
// Check if we've improved
|
|
102
98
|
if (modularity > bestModularity + threshold) {
|
|
103
99
|
bestModularity = modularity;
|
|
@@ -108,16 +104,16 @@ export function leiden(graph, options = {}) {
|
|
|
108
104
|
break;
|
|
109
105
|
}
|
|
110
106
|
// Phase 3: Aggregate network (create super-nodes)
|
|
111
|
-
const aggregated = aggregateCommunities(
|
|
112
|
-
if (aggregated.graph.size ===
|
|
107
|
+
const aggregated = aggregateCommunities(currentGraph, communities);
|
|
108
|
+
if (aggregated.graph.size === currentGraph.size) {
|
|
113
109
|
break;
|
|
114
110
|
} // No aggregation possible
|
|
115
111
|
// Continue with aggregated network
|
|
116
|
-
const { graph:
|
|
117
|
-
|
|
112
|
+
const { graph: aggregatedGraph } = aggregated;
|
|
113
|
+
currentGraph = aggregatedGraph;
|
|
118
114
|
communities.clear();
|
|
119
115
|
let communityId = 0;
|
|
120
|
-
for (const node of
|
|
116
|
+
for (const node of currentGraph.keys()) {
|
|
121
117
|
communities.set(node, communityId++);
|
|
122
118
|
}
|
|
123
119
|
}
|
|
@@ -146,6 +142,12 @@ export function leiden(graph, options = {}) {
|
|
|
146
142
|
}
|
|
147
143
|
/**
|
|
148
144
|
* Calculate modularity of a partition
|
|
145
|
+
* @param graph - Map representation of the graph
|
|
146
|
+
* @param communities - Map of node IDs to community IDs
|
|
147
|
+
* @param degrees - Map of node IDs to their weighted degrees
|
|
148
|
+
* @param totalWeight - Total weight of all edges in the graph
|
|
149
|
+
* @param resolution - Resolution parameter for modularity calculation
|
|
150
|
+
* @returns The modularity score of the partition
|
|
149
151
|
*/
|
|
150
152
|
function calculateModularity(graph, communities, degrees, totalWeight, resolution) {
|
|
151
153
|
let modularity = 0;
|
|
@@ -175,15 +177,19 @@ function calculateModularity(graph, communities, degrees, totalWeight, resolutio
|
|
|
175
177
|
return 0;
|
|
176
178
|
}
|
|
177
179
|
// Normalize and apply resolution
|
|
178
|
-
modularity /=
|
|
180
|
+
modularity /= 2 * totalWeight;
|
|
179
181
|
// Subtract expected edges
|
|
180
182
|
for (const weight of communityWeights.values()) {
|
|
181
|
-
modularity -= resolution * (
|
|
183
|
+
modularity -= resolution * (weight / (2 * totalWeight)) ** 2;
|
|
182
184
|
}
|
|
183
185
|
return modularity;
|
|
184
186
|
}
|
|
185
187
|
/**
|
|
186
188
|
* Get communities of neighbors
|
|
189
|
+
* @param node - The node ID to get neighbor communities for
|
|
190
|
+
* @param graph - Map representation of the graph
|
|
191
|
+
* @param communities - Map of node IDs to community IDs
|
|
192
|
+
* @returns Map of community IDs to total edge weight connecting to that community
|
|
187
193
|
*/
|
|
188
194
|
function getNeighborCommunities(node, graph, communities) {
|
|
189
195
|
const neighborCommunities = new Map();
|
|
@@ -200,6 +206,14 @@ function getNeighborCommunities(node, graph, communities) {
|
|
|
200
206
|
}
|
|
201
207
|
/**
|
|
202
208
|
* Calculate modularity gain from moving a node to a community
|
|
209
|
+
* @param node - The node ID to move
|
|
210
|
+
* @param targetCommunity - The target community ID
|
|
211
|
+
* @param graph - Map representation of the graph
|
|
212
|
+
* @param communities - Map of node IDs to community IDs
|
|
213
|
+
* @param degrees - Map of node IDs to their weighted degrees
|
|
214
|
+
* @param totalWeight - Total weight of all edges in the graph
|
|
215
|
+
* @param resolution - Resolution parameter for modularity calculation
|
|
216
|
+
* @returns The modularity gain from moving the node to the target community
|
|
203
217
|
*/
|
|
204
218
|
function calculateModularityGain(node, targetCommunity, graph, communities, degrees, totalWeight, resolution) {
|
|
205
219
|
const currentCommunity = communities.get(node);
|
|
@@ -244,12 +258,15 @@ function calculateModularityGain(node, targetCommunity, graph, communities, degr
|
|
|
244
258
|
}
|
|
245
259
|
// Modularity gain calculation
|
|
246
260
|
const m2 = 2 * totalWeight;
|
|
247
|
-
const gain = (
|
|
248
|
-
(resolution * nodeDegree * (targetDegree - currentDegree) / (m2 * m2)
|
|
261
|
+
const gain = (weightToTarget - weightToCurrent) / totalWeight -
|
|
262
|
+
(resolution * nodeDegree * (targetDegree - currentDegree)) / (m2 * m2);
|
|
249
263
|
return gain;
|
|
250
264
|
}
|
|
251
265
|
/**
|
|
252
266
|
* Create aggregate network where each community becomes a super-node
|
|
267
|
+
* @param graph - Map representation of the graph
|
|
268
|
+
* @param communities - Map of node IDs to community IDs
|
|
269
|
+
* @returns Object with aggregate graph and node-to-community mapping
|
|
253
270
|
*/
|
|
254
271
|
function createAggregateNetwork(graph, communities) {
|
|
255
272
|
const aggregateGraph = new Map();
|
|
@@ -284,6 +301,9 @@ function createAggregateNetwork(graph, communities) {
|
|
|
284
301
|
/**
|
|
285
302
|
* Refine partition (Leiden-specific improvement)
|
|
286
303
|
* Ensures well-connected communities by considering subsets
|
|
304
|
+
* @param originalGraph - Map representation of the original graph
|
|
305
|
+
* @param communities - Map of node IDs to community IDs
|
|
306
|
+
* @returns Refined community assignments with well-connected communities
|
|
287
307
|
*/
|
|
288
308
|
function refinePartition(originalGraph, communities) {
|
|
289
309
|
const refined = new Map();
|
|
@@ -338,6 +358,8 @@ function refinePartition(originalGraph, communities) {
|
|
|
338
358
|
}
|
|
339
359
|
/**
|
|
340
360
|
* Find connected components in undirected graph
|
|
361
|
+
* @param graph - Map representation of the graph (node to set of neighbors)
|
|
362
|
+
* @returns Array of connected components (each is a set of node IDs)
|
|
341
363
|
*/
|
|
342
364
|
function findConnectedComponents(graph) {
|
|
343
365
|
const visited = new Set();
|
|
@@ -369,6 +391,9 @@ function findConnectedComponents(graph) {
|
|
|
369
391
|
}
|
|
370
392
|
/**
|
|
371
393
|
* Aggregate communities into super-nodes
|
|
394
|
+
* @param graph - Map representation of the graph
|
|
395
|
+
* @param communities - Map of node IDs to community IDs
|
|
396
|
+
* @returns Object with aggregated graph and node-to-supernode mapping
|
|
372
397
|
*/
|
|
373
398
|
function aggregateCommunities(graph, communities) {
|
|
374
399
|
const aggregated = new Map();
|
|
@@ -418,17 +443,18 @@ function aggregateCommunities(graph, communities) {
|
|
|
418
443
|
return { graph: aggregated, mapping };
|
|
419
444
|
}
|
|
420
445
|
/**
|
|
421
|
-
*
|
|
446
|
+
* Leiden algorithm for community detection
|
|
447
|
+
* Improves upon Louvain by ensuring well-connected communities
|
|
448
|
+
* @param graph - Undirected weighted graph - accepts Graph class or Map representation
|
|
449
|
+
* @param options - Algorithm options
|
|
450
|
+
* @returns Community assignments and modularity
|
|
451
|
+
*
|
|
452
|
+
* Time Complexity: O(m) per iteration, typically O(m log m) total
|
|
453
|
+
* Space Complexity: O(n + m)
|
|
422
454
|
*/
|
|
423
|
-
function
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
const swapItem = array[j];
|
|
428
|
-
if (temp !== undefined && swapItem !== undefined) {
|
|
429
|
-
array[i] = swapItem;
|
|
430
|
-
array[j] = temp;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
455
|
+
export function leiden(graph, options = {}) {
|
|
456
|
+
// Convert Graph to Map representation
|
|
457
|
+
const graphMap = graphToMap(graph);
|
|
458
|
+
return leidenImpl(graphMap, options);
|
|
433
459
|
}
|
|
434
460
|
//# sourceMappingURL=leiden.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leiden.js","sourceRoot":"","sources":["../../../../src/algorithms/community/leiden.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leiden.js","sourceRoot":"","sources":["../../../../src/algorithms/community/leiden.ts"],"names":[],"mappings":"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"}
|