@graphty/algorithms 1.1.0 → 1.3.1
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 +820 -235
- package/dist/algorithms.d.ts +42 -2
- package/dist/algorithms.js +11099 -2
- package/dist/algorithms.js.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.d.ts +4 -0
- package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/betweenness.js +124 -170
- package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
- package/dist/src/algorithms/centrality/closeness.d.ts +26 -1
- package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/closeness.js +56 -149
- package/dist/src/algorithms/centrality/closeness.js.map +1 -1
- package/dist/src/algorithms/centrality/degree.js +3 -3
- package/dist/src/algorithms/centrality/degree.js.map +1 -1
- package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts +39 -0
- package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/delta-pagerank-simple.js +286 -0
- package/dist/src/algorithms/centrality/delta-pagerank-simple.js.map +1 -0
- package/dist/src/algorithms/centrality/delta-pagerank.d.ts +80 -0
- package/dist/src/algorithms/centrality/delta-pagerank.d.ts.map +1 -0
- package/dist/src/algorithms/centrality/delta-pagerank.js +294 -0
- package/dist/src/algorithms/centrality/delta-pagerank.js.map +1 -0
- package/dist/src/algorithms/centrality/index.d.ts +2 -0
- package/dist/src/algorithms/centrality/index.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/index.js +1 -0
- package/dist/src/algorithms/centrality/index.js.map +1 -1
- package/dist/src/algorithms/centrality/pagerank.d.ts +17 -0
- package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -1
- package/dist/src/algorithms/centrality/pagerank.js +45 -0
- package/dist/src/algorithms/centrality/pagerank.js.map +1 -1
- package/dist/src/algorithms/community/girvan-newman.d.ts.map +1 -1
- package/dist/src/algorithms/community/girvan-newman.js +47 -54
- 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 +13 -3
- package/dist/src/algorithms/community/label-propagation.d.ts.map +1 -1
- package/dist/src/algorithms/community/label-propagation.js +50 -35
- package/dist/src/algorithms/community/label-propagation.js.map +1 -1
- package/dist/src/algorithms/community/leiden.d.ts +3 -2
- package/dist/src/algorithms/community/leiden.d.ts.map +1 -1
- package/dist/src/algorithms/community/leiden.js +34 -39
- package/dist/src/algorithms/community/leiden.js.map +1 -1
- package/dist/src/algorithms/community/louvain-optimized.d.ts +112 -0
- package/dist/src/algorithms/community/louvain-optimized.d.ts.map +1 -0
- package/dist/src/algorithms/community/louvain-optimized.js +303 -0
- package/dist/src/algorithms/community/louvain-optimized.js.map +1 -0
- package/dist/src/algorithms/community/louvain.d.ts.map +1 -1
- package/dist/src/algorithms/community/louvain.js +17 -76
- package/dist/src/algorithms/community/louvain.js.map +1 -1
- package/dist/src/algorithms/community/modularity-utils.d.ts +59 -0
- package/dist/src/algorithms/community/modularity-utils.d.ts.map +1 -0
- package/dist/src/algorithms/community/modularity-utils.js +112 -0
- package/dist/src/algorithms/community/modularity-utils.js.map +1 -0
- package/dist/src/algorithms/matching/bipartite.d.ts.map +1 -1
- package/dist/src/algorithms/matching/bipartite.js +8 -40
- package/dist/src/algorithms/matching/bipartite.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 +1 -12
- package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts +37 -0
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts.map +1 -0
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js +193 -0
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js.map +1 -0
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts +5 -2
- package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/dijkstra.js +15 -14
- package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -1
- package/dist/src/algorithms/traversal/bfs-unified.d.ts +29 -0
- package/dist/src/algorithms/traversal/bfs-unified.d.ts.map +1 -0
- package/dist/src/algorithms/traversal/bfs-unified.js +333 -0
- package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -0
- package/dist/src/algorithms/traversal/bfs-variants.d.ts +54 -0
- package/dist/src/algorithms/traversal/bfs-variants.d.ts.map +1 -0
- package/dist/src/algorithms/traversal/bfs-variants.js +368 -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/benchmark-all-algorithms.d.ts +23 -0
- package/dist/src/benchmark-all-algorithms.d.ts.map +1 -0
- package/dist/src/benchmark-all-algorithms.js +462 -0
- package/dist/src/benchmark-all-algorithms.js.map +1 -0
- package/dist/src/clustering/hierarchical.d.ts +16 -15
- package/dist/src/clustering/hierarchical.d.ts.map +1 -1
- package/dist/src/clustering/hierarchical.js +209 -223
- 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 +16 -15
- package/dist/src/clustering/k-core.d.ts.map +1 -1
- package/dist/src/clustering/k-core.js +57 -21
- package/dist/src/clustering/k-core.js.map +1 -1
- package/dist/src/clustering/spectral.d.ts +8 -0
- package/dist/src/clustering/spectral.d.ts.map +1 -1
- package/dist/src/clustering/spectral.js +158 -35
- package/dist/src/clustering/spectral.js.map +1 -1
- package/dist/src/core/graph.js +4 -4
- package/dist/src/core/graph.js.map +1 -1
- package/dist/src/flow/ford-fulkerson.d.ts +17 -11
- package/dist/src/flow/ford-fulkerson.d.ts.map +1 -1
- package/dist/src/flow/ford-fulkerson.js +141 -217
- package/dist/src/flow/ford-fulkerson.js.map +1 -1
- package/dist/src/flow/min-cut.d.ts +6 -5
- package/dist/src/flow/min-cut.d.ts.map +1 -1
- package/dist/src/flow/min-cut.js +17 -8
- package/dist/src/flow/min-cut.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/link-prediction/adamic-adar.d.ts.map +1 -1
- package/dist/src/link-prediction/adamic-adar.js +17 -26
- package/dist/src/link-prediction/adamic-adar.js.map +1 -1
- package/dist/src/link-prediction/common-neighbors.d.ts.map +1 -1
- package/dist/src/link-prediction/common-neighbors.js +7 -11
- package/dist/src/link-prediction/common-neighbors.js.map +1 -1
- package/dist/src/optimized/bit-packed.d.ts +143 -0
- package/dist/src/optimized/bit-packed.d.ts.map +1 -0
- package/dist/src/optimized/bit-packed.js +292 -0
- package/dist/src/optimized/bit-packed.js.map +1 -0
- package/dist/src/optimized/csr-graph.d.ts +86 -0
- package/dist/src/optimized/csr-graph.d.ts.map +1 -0
- package/dist/src/optimized/csr-graph.js +341 -0
- package/dist/src/optimized/csr-graph.js.map +1 -0
- package/dist/src/optimized/direction-optimized-bfs.d.ts +74 -0
- package/dist/src/optimized/direction-optimized-bfs.d.ts.map +1 -0
- package/dist/src/optimized/direction-optimized-bfs.js +223 -0
- package/dist/src/optimized/direction-optimized-bfs.js.map +1 -0
- package/dist/src/optimized/graph-adapter.d.ts +62 -0
- package/dist/src/optimized/graph-adapter.d.ts.map +1 -0
- package/dist/src/optimized/graph-adapter.js +146 -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 +28 -0
- package/dist/src/optimized/index.js.map +1 -0
- package/dist/src/research/grsbm.d.ts +83 -0
- package/dist/src/research/grsbm.d.ts.map +1 -0
- package/dist/src/research/grsbm.js +403 -0
- package/dist/src/research/grsbm.js.map +1 -0
- package/dist/src/research/index.d.ts +12 -0
- package/dist/src/research/index.d.ts.map +1 -0
- package/dist/src/research/index.js +14 -0
- package/dist/src/research/index.js.map +1 -0
- package/dist/src/research/sync.d.ts +49 -0
- package/dist/src/research/sync.d.ts.map +1 -0
- package/dist/src/research/sync.js +316 -0
- package/dist/src/research/sync.js.map +1 -0
- package/dist/src/research/terahac.d.ts +65 -0
- package/dist/src/research/terahac.d.ts.map +1 -0
- package/dist/src/research/terahac.js +379 -0
- package/dist/src/research/terahac.js.map +1 -0
- 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 +79 -0
- package/dist/src/utils/graph-converters.d.ts.map +1 -0
- package/dist/src/utils/graph-converters.js +196 -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 +52 -0
- package/dist/src/utils/math-utilities.d.ts.map +1 -0
- package/dist/src/utils/math-utilities.js +123 -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 +33 -0
- package/dist/src/utils/optimization-helpers.d.ts.map +1 -0
- package/dist/src/utils/optimization-helpers.js +47 -0
- package/dist/src/utils/optimization-helpers.js.map +1 -0
- package/package.json +28 -4
- package/src/algorithms/centrality/betweenness.ts +167 -199
- package/src/algorithms/centrality/closeness.ts +73 -191
- package/src/algorithms/centrality/degree.ts +3 -3
- package/src/algorithms/centrality/delta-pagerank-simple.ts +366 -0
- package/src/algorithms/centrality/delta-pagerank.ts +435 -0
- package/src/algorithms/centrality/index.ts +2 -0
- package/src/algorithms/centrality/pagerank.ts +66 -0
- package/src/algorithms/community/girvan-newman.ts +52 -59
- package/src/algorithms/community/index.ts +2 -0
- package/src/algorithms/community/label-propagation.ts +64 -35
- package/src/algorithms/community/leiden.ts +40 -41
- package/src/algorithms/community/louvain-optimized.ts +445 -0
- package/src/algorithms/community/louvain.ts +24 -104
- package/src/algorithms/community/modularity-utils.ts +146 -0
- package/src/algorithms/matching/bipartite.ts +8 -44
- package/src/algorithms/shortest-path/bellman-ford.ts +1 -14
- package/src/algorithms/shortest-path/bidirectional-dijkstra.ts +248 -0
- package/src/algorithms/shortest-path/dijkstra.ts +17 -15
- package/src/algorithms/traversal/bfs-unified.ts +433 -0
- package/src/algorithms/traversal/bfs-variants.ts +496 -0
- package/src/algorithms/traversal/bfs.ts +10 -228
- package/src/benchmark-all-algorithms.ts +548 -0
- package/src/clustering/hierarchical.ts +241 -251
- package/src/clustering/index.ts +4 -2
- package/src/clustering/k-core.ts +87 -39
- package/src/clustering/spectral.ts +185 -34
- package/src/core/graph.ts +4 -4
- package/src/flow/ford-fulkerson.ts +186 -254
- package/src/flow/min-cut.ts +21 -11
- package/src/index.ts +9 -0
- package/src/link-prediction/adamic-adar.ts +17 -30
- package/src/link-prediction/common-neighbors.ts +7 -16
- package/src/optimized/bit-packed.ts +340 -0
- package/src/optimized/csr-graph.ts +455 -0
- package/src/optimized/direction-optimized-bfs.ts +291 -0
- package/src/optimized/graph-adapter.ts +200 -0
- package/src/optimized/index.ts +36 -0
- package/src/research/grsbm.ts +580 -0
- package/src/research/index.ts +17 -0
- package/src/research/sync.ts +440 -0
- package/src/research/terahac.ts +514 -0
- package/src/types/index.ts +8 -0
- package/src/utils/algorithm-utilities.ts +2 -0
- package/src/utils/graph-converters.ts +241 -0
- package/src/utils/graph-utilities.ts +199 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/math-utilities.ts +140 -0
- package/src/utils/matrix-utilities.ts +2 -0
- package/src/utils/optimization-helpers.ts +81 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { Graph } from "../../core/graph.js";
|
|
2
|
+
import type { NodeId } from "../../types/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Delta-based PageRank implementation for faster convergence
|
|
5
|
+
*
|
|
6
|
+
* This algorithm tracks changes (deltas) between iterations and only processes
|
|
7
|
+
* nodes with significant changes, dramatically reducing computation for graphs
|
|
8
|
+
* where only some nodes are actively changing their PageRank values.
|
|
9
|
+
*
|
|
10
|
+
* Key optimizations:
|
|
11
|
+
* - Only active nodes (with significant deltas) are processed
|
|
12
|
+
* - Early termination for converged vertices
|
|
13
|
+
* - Priority queue processing for high-impact updates
|
|
14
|
+
* - Adaptive convergence detection per vertex
|
|
15
|
+
*
|
|
16
|
+
* Expected speedup: 10-100x for incremental updates on large graphs
|
|
17
|
+
*/
|
|
18
|
+
export interface DeltaPageRankOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Damping factor (probability of following a link) (default: 0.85)
|
|
21
|
+
*/
|
|
22
|
+
dampingFactor?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Convergence tolerance (default: 1e-6)
|
|
25
|
+
*/
|
|
26
|
+
tolerance?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Maximum number of iterations (default: 100)
|
|
29
|
+
*/
|
|
30
|
+
maxIterations?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Minimum delta to keep vertex active (default: tolerance / 10)
|
|
33
|
+
*/
|
|
34
|
+
deltaThreshold?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Personalization vector for Personalized PageRank (default: null)
|
|
37
|
+
*/
|
|
38
|
+
personalization?: Map<NodeId, number>;
|
|
39
|
+
/**
|
|
40
|
+
* Weight attribute for weighted PageRank (default: null = unweighted)
|
|
41
|
+
*/
|
|
42
|
+
weight?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare class DeltaPageRank {
|
|
45
|
+
private graph;
|
|
46
|
+
private scores;
|
|
47
|
+
private deltas;
|
|
48
|
+
private activeNodes;
|
|
49
|
+
private outDegrees;
|
|
50
|
+
private outWeights;
|
|
51
|
+
private danglingNodes;
|
|
52
|
+
private nodeCount;
|
|
53
|
+
constructor(graph: Graph);
|
|
54
|
+
private initialize;
|
|
55
|
+
compute(options?: DeltaPageRankOptions): Map<NodeId, number>;
|
|
56
|
+
/**
|
|
57
|
+
* Update PageRank scores after graph modification
|
|
58
|
+
* This is where delta-based approach really shines
|
|
59
|
+
*/
|
|
60
|
+
update(modifiedNodes: Set<NodeId>, options?: DeltaPageRankOptions): Map<NodeId, number>;
|
|
61
|
+
private normalizeMap;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Priority queue based implementation for even better performance
|
|
65
|
+
* Processes nodes in order of their delta magnitude
|
|
66
|
+
*/
|
|
67
|
+
export declare class PriorityDeltaPageRank {
|
|
68
|
+
private graph;
|
|
69
|
+
private scores;
|
|
70
|
+
private priorityQueue;
|
|
71
|
+
private nodeDeltas;
|
|
72
|
+
private outWeights;
|
|
73
|
+
private danglingNodes;
|
|
74
|
+
private nodeCount;
|
|
75
|
+
constructor(graph: Graph);
|
|
76
|
+
private initialize;
|
|
77
|
+
computeWithPriority(options?: DeltaPageRankOptions): Map<NodeId, number>;
|
|
78
|
+
private normalizeMap;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=delta-pagerank.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-pagerank.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/centrality/delta-pagerank.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAE/C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,oBAAoB;IACjC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,SAAS,CAAS;gBAEd,KAAK,EAAE,KAAK;IAiBxB,OAAO,CAAC,UAAU;IA6BX,OAAO,CAAC,OAAO,GAAE,oBAAyB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAiIvE;;;OAGG;IACI,MAAM,CACT,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,OAAO,GAAE,oBAAyB,GACnC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAsBtB,OAAO,CAAC,YAAY;CAYvB;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,SAAS,CAAS;gBAEd,KAAK,EAAE,KAAK;IAkBxB,OAAO,CAAC,UAAU;IA4BX,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAwFnF,OAAO,CAAC,YAAY;CAYvB"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { PriorityQueue } from "../../data-structures/priority-queue.js";
|
|
2
|
+
export class DeltaPageRank {
|
|
3
|
+
constructor(graph) {
|
|
4
|
+
if (!graph.isDirected) {
|
|
5
|
+
throw new Error("DeltaPageRank requires a directed graph");
|
|
6
|
+
}
|
|
7
|
+
this.graph = graph;
|
|
8
|
+
this.scores = new Map();
|
|
9
|
+
this.deltas = new Map();
|
|
10
|
+
this.activeNodes = new Set();
|
|
11
|
+
this.outDegrees = new Map();
|
|
12
|
+
this.outWeights = new Map();
|
|
13
|
+
this.danglingNodes = new Set();
|
|
14
|
+
this.nodeCount = graph.nodeCount;
|
|
15
|
+
this.initialize();
|
|
16
|
+
}
|
|
17
|
+
initialize() {
|
|
18
|
+
const initialValue = 1.0 / this.nodeCount;
|
|
19
|
+
// Initialize data structures
|
|
20
|
+
for (const node of this.graph.nodes()) {
|
|
21
|
+
const nodeId = node.id;
|
|
22
|
+
this.scores.set(nodeId, 0); // Start with zero, will add initial value as delta
|
|
23
|
+
this.deltas.set(nodeId, initialValue);
|
|
24
|
+
this.activeNodes.add(nodeId);
|
|
25
|
+
// Precompute out-degrees and weights
|
|
26
|
+
let outDegree = 0;
|
|
27
|
+
let totalOutWeight = 0;
|
|
28
|
+
for (const neighbor of Array.from(this.graph.neighbors(nodeId))) {
|
|
29
|
+
outDegree++;
|
|
30
|
+
const edge = this.graph.getEdge(nodeId, neighbor);
|
|
31
|
+
totalOutWeight += edge?.weight ?? 1;
|
|
32
|
+
}
|
|
33
|
+
this.outDegrees.set(nodeId, outDegree);
|
|
34
|
+
this.outWeights.set(nodeId, totalOutWeight);
|
|
35
|
+
if (outDegree === 0) {
|
|
36
|
+
this.danglingNodes.add(nodeId);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
compute(options = {}) {
|
|
41
|
+
const { dampingFactor = 0.85, tolerance = 1e-6, maxIterations = 100, deltaThreshold = tolerance / 10, personalization, weight, } = options;
|
|
42
|
+
if (dampingFactor < 0 || dampingFactor > 1) {
|
|
43
|
+
throw new Error("Damping factor must be between 0 and 1");
|
|
44
|
+
}
|
|
45
|
+
if (this.nodeCount === 0) {
|
|
46
|
+
return new Map();
|
|
47
|
+
}
|
|
48
|
+
// Normalize personalization vector if provided
|
|
49
|
+
let personalVector = null;
|
|
50
|
+
if (personalization) {
|
|
51
|
+
personalVector = new Map(personalization);
|
|
52
|
+
this.normalizeMap(personalVector);
|
|
53
|
+
}
|
|
54
|
+
const randomJump = (1 - dampingFactor) / this.nodeCount;
|
|
55
|
+
let iteration = 0;
|
|
56
|
+
while (this.activeNodes.size > 0 && iteration < maxIterations) {
|
|
57
|
+
iteration++;
|
|
58
|
+
// Create next iteration's deltas
|
|
59
|
+
const nextDeltas = new Map();
|
|
60
|
+
// Initialize all nodes with zero delta
|
|
61
|
+
for (const node of this.graph.nodes()) {
|
|
62
|
+
nextDeltas.set(node.id, 0);
|
|
63
|
+
}
|
|
64
|
+
// Handle dangling nodes contribution
|
|
65
|
+
let danglingSum = 0;
|
|
66
|
+
for (const danglingNode of this.danglingNodes) {
|
|
67
|
+
const currentScore = this.scores.get(danglingNode) ?? 0;
|
|
68
|
+
const delta = this.deltas.get(danglingNode) ?? 0;
|
|
69
|
+
danglingSum += currentScore + delta;
|
|
70
|
+
}
|
|
71
|
+
if (danglingSum > 0) {
|
|
72
|
+
const danglingContribution = dampingFactor * danglingSum / this.nodeCount;
|
|
73
|
+
for (const node of this.graph.nodes()) {
|
|
74
|
+
const nodeId = node.id;
|
|
75
|
+
const currentDelta = nextDeltas.get(nodeId) ?? 0;
|
|
76
|
+
if (personalVector) {
|
|
77
|
+
const personalContrib = danglingContribution * (personalVector.get(nodeId) ?? 0);
|
|
78
|
+
nextDeltas.set(nodeId, currentDelta + personalContrib);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
nextDeltas.set(nodeId, currentDelta + danglingContribution);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Process only active nodes
|
|
86
|
+
for (const nodeId of this.activeNodes) {
|
|
87
|
+
const delta = this.deltas.get(nodeId) ?? 0;
|
|
88
|
+
// Skip if delta is too small
|
|
89
|
+
if (Math.abs(delta) < deltaThreshold) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// Apply delta to score
|
|
93
|
+
const currentScore = this.scores.get(nodeId) ?? 0;
|
|
94
|
+
this.scores.set(nodeId, currentScore + delta);
|
|
95
|
+
const outWeight = this.outWeights.get(nodeId) ?? 0;
|
|
96
|
+
if (outWeight > 0) {
|
|
97
|
+
// Distribute delta to neighbors
|
|
98
|
+
for (const neighbor of Array.from(this.graph.neighbors(nodeId))) {
|
|
99
|
+
let edgeWeight = 1;
|
|
100
|
+
if (weight) {
|
|
101
|
+
const edge = this.graph.getEdge(nodeId, neighbor);
|
|
102
|
+
edgeWeight = edge?.weight ?? 1;
|
|
103
|
+
}
|
|
104
|
+
const contribution = dampingFactor * delta * (edgeWeight / outWeight);
|
|
105
|
+
const currentDelta = nextDeltas.get(neighbor) ?? 0;
|
|
106
|
+
nextDeltas.set(neighbor, currentDelta + contribution);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Add teleportation probability as delta
|
|
111
|
+
for (const node of this.graph.nodes()) {
|
|
112
|
+
const nodeId = node.id;
|
|
113
|
+
const currentDelta = nextDeltas.get(nodeId) ?? 0;
|
|
114
|
+
if (personalVector) {
|
|
115
|
+
nextDeltas.set(nodeId, currentDelta + ((1 - dampingFactor) * (personalVector.get(nodeId) ?? 0)));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
nextDeltas.set(nodeId, currentDelta + randomJump);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Find active nodes for next iteration
|
|
122
|
+
const nextActive = new Set();
|
|
123
|
+
let maxDelta = 0;
|
|
124
|
+
for (const [nodeId, delta] of nextDeltas) {
|
|
125
|
+
maxDelta = Math.max(maxDelta, Math.abs(delta));
|
|
126
|
+
if (Math.abs(delta) >= deltaThreshold) {
|
|
127
|
+
nextActive.add(nodeId);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Update for next iteration
|
|
131
|
+
this.deltas = nextDeltas;
|
|
132
|
+
this.activeNodes = nextActive;
|
|
133
|
+
// Global convergence check
|
|
134
|
+
if (maxDelta < tolerance) {
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Normalize final scores
|
|
139
|
+
this.normalizeMap(this.scores);
|
|
140
|
+
return new Map(this.scores);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Update PageRank scores after graph modification
|
|
144
|
+
* This is where delta-based approach really shines
|
|
145
|
+
*/
|
|
146
|
+
update(modifiedNodes, options = {}) {
|
|
147
|
+
// Mark modified nodes and their neighbors as active
|
|
148
|
+
this.activeNodes.clear();
|
|
149
|
+
for (const nodeId of modifiedNodes) {
|
|
150
|
+
this.activeNodes.add(nodeId);
|
|
151
|
+
// Add incoming neighbors
|
|
152
|
+
for (const neighbor of Array.from(this.graph.inNeighbors(nodeId))) {
|
|
153
|
+
this.activeNodes.add(neighbor);
|
|
154
|
+
}
|
|
155
|
+
// Add outgoing neighbors
|
|
156
|
+
for (const neighbor of Array.from(this.graph.neighbors(nodeId))) {
|
|
157
|
+
this.activeNodes.add(neighbor);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Recompute only for active nodes
|
|
161
|
+
return this.compute(options);
|
|
162
|
+
}
|
|
163
|
+
normalizeMap(map) {
|
|
164
|
+
let sum = 0;
|
|
165
|
+
for (const value of map.values()) {
|
|
166
|
+
sum += value;
|
|
167
|
+
}
|
|
168
|
+
if (sum > 0) {
|
|
169
|
+
for (const [key, value] of Array.from(map)) {
|
|
170
|
+
map.set(key, value / sum);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Priority queue based implementation for even better performance
|
|
177
|
+
* Processes nodes in order of their delta magnitude
|
|
178
|
+
*/
|
|
179
|
+
export class PriorityDeltaPageRank {
|
|
180
|
+
constructor(graph) {
|
|
181
|
+
if (!graph.isDirected) {
|
|
182
|
+
throw new Error("PriorityDeltaPageRank requires a directed graph");
|
|
183
|
+
}
|
|
184
|
+
this.graph = graph;
|
|
185
|
+
this.scores = new Map();
|
|
186
|
+
this.nodeDeltas = new Map();
|
|
187
|
+
this.outWeights = new Map();
|
|
188
|
+
this.danglingNodes = new Set();
|
|
189
|
+
this.nodeCount = graph.nodeCount;
|
|
190
|
+
// Priority queue ordered by delta magnitude (larger deltas have higher priority)
|
|
191
|
+
this.priorityQueue = new PriorityQueue((a, b) => b - a);
|
|
192
|
+
this.initialize();
|
|
193
|
+
}
|
|
194
|
+
initialize() {
|
|
195
|
+
const initialValue = 1.0 / this.nodeCount;
|
|
196
|
+
// Initialize all nodes with initial delta
|
|
197
|
+
for (const node of this.graph.nodes()) {
|
|
198
|
+
const nodeId = node.id;
|
|
199
|
+
this.scores.set(nodeId, 0); // Start with zero scores
|
|
200
|
+
this.nodeDeltas.set(nodeId, initialValue);
|
|
201
|
+
this.priorityQueue.enqueue(nodeId, initialValue);
|
|
202
|
+
// Precompute out-weights
|
|
203
|
+
let totalOutWeight = 0;
|
|
204
|
+
let outDegree = 0;
|
|
205
|
+
for (const neighbor of Array.from(this.graph.neighbors(nodeId))) {
|
|
206
|
+
outDegree++;
|
|
207
|
+
const edge = this.graph.getEdge(nodeId, neighbor);
|
|
208
|
+
totalOutWeight += edge?.weight ?? 1;
|
|
209
|
+
}
|
|
210
|
+
this.outWeights.set(nodeId, totalOutWeight);
|
|
211
|
+
if (outDegree === 0) {
|
|
212
|
+
this.danglingNodes.add(nodeId);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
computeWithPriority(options = {}) {
|
|
217
|
+
const { dampingFactor = 0.85, tolerance = 1e-6, maxIterations = 100, deltaThreshold = tolerance / 10, weight, } = options;
|
|
218
|
+
let iteration = 0;
|
|
219
|
+
let processedCount = 0;
|
|
220
|
+
while (!this.priorityQueue.isEmpty() && iteration < maxIterations) {
|
|
221
|
+
const nodeId = this.priorityQueue.dequeue();
|
|
222
|
+
if (nodeId === undefined) {
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
const delta = this.nodeDeltas.get(nodeId) ?? 0;
|
|
226
|
+
// Skip if delta is too small
|
|
227
|
+
if (Math.abs(delta) < deltaThreshold) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
// Apply delta to node's score
|
|
231
|
+
const currentScore = this.scores.get(nodeId) ?? 0;
|
|
232
|
+
this.scores.set(nodeId, currentScore + delta);
|
|
233
|
+
this.nodeDeltas.set(nodeId, 0);
|
|
234
|
+
// Distribute delta to neighbors
|
|
235
|
+
const outWeight = this.outWeights.get(nodeId) ?? 0;
|
|
236
|
+
if (outWeight > 0) {
|
|
237
|
+
for (const neighbor of Array.from(this.graph.neighbors(nodeId))) {
|
|
238
|
+
let edgeWeight = 1;
|
|
239
|
+
if (weight) {
|
|
240
|
+
const edge = this.graph.getEdge(nodeId, neighbor);
|
|
241
|
+
edgeWeight = edge?.weight ?? 1;
|
|
242
|
+
}
|
|
243
|
+
const contribution = dampingFactor * delta * (edgeWeight / outWeight);
|
|
244
|
+
const currentNeighborDelta = this.nodeDeltas.get(neighbor) ?? 0;
|
|
245
|
+
const newDelta = currentNeighborDelta + contribution;
|
|
246
|
+
this.nodeDeltas.set(neighbor, newDelta);
|
|
247
|
+
// Re-enqueue neighbor with updated priority
|
|
248
|
+
if (Math.abs(newDelta) >= deltaThreshold) {
|
|
249
|
+
this.priorityQueue.enqueue(neighbor, Math.abs(newDelta));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
processedCount++;
|
|
254
|
+
// Periodic convergence check
|
|
255
|
+
if (processedCount % 1000 === 0) {
|
|
256
|
+
let maxDelta = 0;
|
|
257
|
+
for (const d of this.nodeDeltas.values()) {
|
|
258
|
+
maxDelta = Math.max(maxDelta, Math.abs(d));
|
|
259
|
+
}
|
|
260
|
+
if (maxDelta < tolerance) {
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
iteration++;
|
|
265
|
+
}
|
|
266
|
+
// Apply any remaining deltas
|
|
267
|
+
for (const [nodeId, delta] of this.nodeDeltas) {
|
|
268
|
+
if (Math.abs(delta) >= deltaThreshold) {
|
|
269
|
+
const currentScore = this.scores.get(nodeId) ?? 0;
|
|
270
|
+
this.scores.set(nodeId, currentScore + delta);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Add teleportation probability
|
|
274
|
+
const teleport = (1 - dampingFactor) / this.nodeCount;
|
|
275
|
+
for (const [nodeId, score] of this.scores) {
|
|
276
|
+
this.scores.set(nodeId, score + teleport);
|
|
277
|
+
}
|
|
278
|
+
// Normalize final scores
|
|
279
|
+
this.normalizeMap(this.scores);
|
|
280
|
+
return new Map(this.scores);
|
|
281
|
+
}
|
|
282
|
+
normalizeMap(map) {
|
|
283
|
+
let sum = 0;
|
|
284
|
+
for (const value of map.values()) {
|
|
285
|
+
sum += value;
|
|
286
|
+
}
|
|
287
|
+
if (sum > 0) {
|
|
288
|
+
for (const [key, value] of Array.from(map)) {
|
|
289
|
+
map.set(key, value / sum);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=delta-pagerank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-pagerank.js","sourceRoot":"","sources":["../../../../src/algorithms/centrality/delta-pagerank.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ export { betweennessCentrality, edgeBetweennessCentrality, nodeBetweennessCentra
|
|
|
6
6
|
export type { ClosenessCentralityOptions } from "./closeness.js";
|
|
7
7
|
export { closenessCentrality, nodeClosenessCentrality, nodeWeightedClosenessCentrality, weightedClosenessCentrality } from "./closeness.js";
|
|
8
8
|
export { degreeCentrality, nodeDegreeCentrality } from "./degree.js";
|
|
9
|
+
export type { DeltaPageRankOptions } from "./delta-pagerank.js";
|
|
10
|
+
export { DeltaPageRank, PriorityDeltaPageRank } from "./delta-pagerank.js";
|
|
9
11
|
export type { EigenvectorCentralityOptions } from "./eigenvector.js";
|
|
10
12
|
export { eigenvectorCentrality, nodeEigenvectorCentrality } from "./eigenvector.js";
|
|
11
13
|
export type { HITSOptions, HITSResult } from "./hits.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/centrality/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAC,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAC7G,YAAY,EAAC,0BAA0B,EAAC,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAC,mBAAmB,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,2BAA2B,EAAC,MAAM,gBAAgB,CAAC;AAC1I,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACnE,YAAY,EAAC,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAClF,YAAY,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AACvD,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AACzC,YAAY,EAAC,qBAAqB,EAAC,MAAM,WAAW,CAAC;AACrD,OAAO,EAAC,cAAc,EAAE,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAC7D,YAAY,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/centrality/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAC,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAC7G,YAAY,EAAC,0BAA0B,EAAC,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAC,mBAAmB,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,2BAA2B,EAAC,MAAM,gBAAgB,CAAC;AAC1I,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACnE,YAAY,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAC,aAAa,EAAE,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AACzE,YAAY,EAAC,4BAA4B,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAClF,YAAY,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AACvD,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AACzC,YAAY,EAAC,qBAAqB,EAAC,MAAM,WAAW,CAAC;AACrD,OAAO,EAAC,cAAc,EAAE,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAC7D,YAAY,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
export { betweennessCentrality, edgeBetweennessCentrality, nodeBetweennessCentrality } from "./betweenness.js";
|
|
5
5
|
export { closenessCentrality, nodeClosenessCentrality, nodeWeightedClosenessCentrality, weightedClosenessCentrality } from "./closeness.js";
|
|
6
6
|
export { degreeCentrality, nodeDegreeCentrality } from "./degree.js";
|
|
7
|
+
export { DeltaPageRank, PriorityDeltaPageRank } from "./delta-pagerank.js";
|
|
7
8
|
export { eigenvectorCentrality, nodeEigenvectorCentrality } from "./eigenvector.js";
|
|
8
9
|
export { hits, nodeHITS } from "./hits.js";
|
|
9
10
|
export { katzCentrality, nodeKatzCentrality } from "./katz.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/algorithms/centrality/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAE7G,OAAO,EAAC,mBAAmB,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,2BAA2B,EAAC,MAAM,gBAAgB,CAAC;AAC1I,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAC,cAAc,EAAE,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/algorithms/centrality/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAE7G,OAAO,EAAC,mBAAmB,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,2BAA2B,EAAC,MAAM,gBAAgB,CAAC;AAC1I,OAAO,EAAC,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAC,aAAa,EAAE,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAEzE,OAAO,EAAC,qBAAqB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAC,cAAc,EAAE,kBAAkB,EAAC,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC"}
|
|
@@ -34,6 +34,12 @@ export interface PageRankOptions {
|
|
|
34
34
|
* Weight attribute for weighted PageRank (default: null = unweighted)
|
|
35
35
|
*/
|
|
36
36
|
weight?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Use delta-based optimization for faster convergence.
|
|
39
|
+
* Defaults to true for graphs with >100 nodes, false for smaller graphs.
|
|
40
|
+
* Set explicitly to override automatic heuristic.
|
|
41
|
+
*/
|
|
42
|
+
useDelta?: boolean;
|
|
37
43
|
}
|
|
38
44
|
/**
|
|
39
45
|
* PageRank algorithm result
|
|
@@ -54,6 +60,17 @@ export interface PageRankResult {
|
|
|
54
60
|
}
|
|
55
61
|
/**
|
|
56
62
|
* Calculate PageRank for all nodes in the graph
|
|
63
|
+
*
|
|
64
|
+
* Uses delta-based optimization by default for improved performance on larger graphs.
|
|
65
|
+
* Automatically falls back to standard algorithm for very small graphs.
|
|
66
|
+
*
|
|
67
|
+
* The delta-based approach provides significant speedup for:
|
|
68
|
+
* - Incremental updates after graph modifications
|
|
69
|
+
* - Graphs with localized changes
|
|
70
|
+
* - Early convergence detection per vertex
|
|
71
|
+
*
|
|
72
|
+
* For initial computation on small-medium graphs, standard algorithm may be faster
|
|
73
|
+
* due to lower overhead.
|
|
57
74
|
*/
|
|
58
75
|
export declare function pageRank(graph: Graph, options?: PageRankOptions): PageRankResult;
|
|
59
76
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagerank.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/centrality/pagerank.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"pagerank.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/centrality/pagerank.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAGjD;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;OAEG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CACpB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,eAAoB,GAC9B,cAAc,CAwMhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,GAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAM,GACvD,cAAc,CA4BhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,eAAoB,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,KAAK,EAAE,KAAK,EACZ,CAAC,EAAE,MAAM,EACT,OAAO,GAAE,eAAoB,GAC9B;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EAAE,CAYhC"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
+
import { SimpleDeltaPageRank } from "./delta-pagerank-simple.js";
|
|
1
2
|
/**
|
|
2
3
|
* Calculate PageRank for all nodes in the graph
|
|
4
|
+
*
|
|
5
|
+
* Uses delta-based optimization by default for improved performance on larger graphs.
|
|
6
|
+
* Automatically falls back to standard algorithm for very small graphs.
|
|
7
|
+
*
|
|
8
|
+
* The delta-based approach provides significant speedup for:
|
|
9
|
+
* - Incremental updates after graph modifications
|
|
10
|
+
* - Graphs with localized changes
|
|
11
|
+
* - Early convergence detection per vertex
|
|
12
|
+
*
|
|
13
|
+
* For initial computation on small-medium graphs, standard algorithm may be faster
|
|
14
|
+
* due to lower overhead.
|
|
3
15
|
*/
|
|
4
16
|
export function pageRank(graph, options = {}) {
|
|
5
17
|
const { dampingFactor = 0.85, maxIterations = 100, tolerance = 1e-6, initialRanks, personalization, weight, } = options;
|
|
@@ -14,6 +26,35 @@ export function pageRank(graph, options = {}) {
|
|
|
14
26
|
if (n === 0) {
|
|
15
27
|
return { ranks: {}, iterations: 0, converged: true };
|
|
16
28
|
}
|
|
29
|
+
// Use delta-based optimization by default for larger graphs
|
|
30
|
+
// Only disable if explicitly requested or graph is very small (overhead dominates)
|
|
31
|
+
const shouldUseDelta = options.useDelta !== false && n > 100;
|
|
32
|
+
if (shouldUseDelta) {
|
|
33
|
+
// Use optimized delta-based implementation
|
|
34
|
+
const deltaOptions = {
|
|
35
|
+
dampingFactor,
|
|
36
|
+
tolerance,
|
|
37
|
+
maxIterations,
|
|
38
|
+
};
|
|
39
|
+
if (personalization) {
|
|
40
|
+
deltaOptions.personalization = personalization;
|
|
41
|
+
}
|
|
42
|
+
if (weight) {
|
|
43
|
+
deltaOptions.weight = weight;
|
|
44
|
+
}
|
|
45
|
+
const deltaPageRank = new SimpleDeltaPageRank(graph);
|
|
46
|
+
const deltaRanks = deltaPageRank.compute(deltaOptions);
|
|
47
|
+
// Convert to string-keyed record
|
|
48
|
+
const result = {};
|
|
49
|
+
for (const [nodeId, rank] of deltaRanks) {
|
|
50
|
+
result[String(nodeId)] = rank;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
ranks: result,
|
|
54
|
+
iterations: maxIterations, // For now, assume we used all iterations
|
|
55
|
+
converged: true,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
17
58
|
// Initialize PageRank values
|
|
18
59
|
let ranks = new Map();
|
|
19
60
|
if (initialRanks) {
|
|
@@ -135,6 +176,10 @@ export function pageRank(graph, options = {}) {
|
|
|
135
176
|
* Calculate Personalized PageRank for a specific set of source nodes
|
|
136
177
|
*/
|
|
137
178
|
export function personalizedPageRank(graph, personalNodes, options = {}) {
|
|
179
|
+
// Handle empty personal nodes by falling back to standard PageRank
|
|
180
|
+
if (personalNodes.length === 0) {
|
|
181
|
+
return pageRank(graph, options);
|
|
182
|
+
}
|
|
138
183
|
const nodes = Array.from(graph.nodes()).map((node) => node.id);
|
|
139
184
|
const personalization = new Map();
|
|
140
185
|
// Initialize personalization vector
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagerank.js","sourceRoot":"","sources":["../../../../src/algorithms/centrality/pagerank.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pagerank.js","sourceRoot":"","sources":["../../../../src/algorithms/centrality/pagerank.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AA+D/D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CACpB,KAAY,EACZ,UAA2B,EAAE;IAE7B,MAAM,EACF,aAAa,GAAG,IAAI,EACpB,aAAa,GAAG,GAAG,EACnB,SAAS,GAAG,IAAI,EAChB,YAAY,EACZ,eAAe,EACf,MAAM,GACT,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAEvB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACV,OAAO,EAAC,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;IACvD,CAAC;IAED,4DAA4D;IAC5D,mFAAmF;IACnF,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC;IAE7D,IAAI,cAAc,EAAE,CAAC;QACjB,2CAA2C;QAE3C,MAAM,YAAY,GAMd;YACA,aAAa;YACb,SAAS;YACT,aAAa;SAChB,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YAClB,YAAY,CAAC,eAAe,GAAG,eAAe,CAAC;QACnD,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACT,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;QACjC,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEvD,iCAAiC;QACjC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;QAClC,CAAC;QAED,OAAO;YACH,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,aAAa,EAAE,yCAAyC;YACpE,SAAS,EAAE,IAAI;SAClB,CAAC;IACN,CAAC;IAED,6BAA6B;IAC7B,IAAI,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,IAAI,YAAY,EAAE,CAAC;QACf,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,cAAc,CAAC,KAAK,CAAC,CAAC;IAEtB,kDAAkD;IAClD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACzD,SAAS,EAAE,CAAC;YACZ,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC7C,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;gBACrC,cAAc,IAAI,UAAU,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,cAAc,IAAI,CAAC,CAAC;YACxB,CAAC;QACL,CAAC;QAED,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAClC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAEvC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,IAAI,cAAc,GAA+B,IAAI,CAAC;IACtD,IAAI,eAAe,EAAE,CAAC;QAClB,cAAc,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;QAC1C,cAAc,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,kBAAkB;IAClB,KAAK,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE3C,4CAA4C;QAC5C,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,cAAc,EAAE,CAAC;gBACjB,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,CAAC,CAAC;YAC7D,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,eAAe,GAAG,oBAAoB,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjF,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACJ,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC;QACL,CAAC;QAED,iDAAiD;QACjD,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACpB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBACzD,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,IAAI,MAAM,EAAE,CAAC;wBACT,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;wBAC7C,UAAU,GAAG,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;oBACnC,CAAC;oBAED,MAAM,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC;oBAChF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACjD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,GAAG,QAAQ,CAAC;QAEjB,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACV,CAAC;IACL,CAAC;IAED,iCAAiC;IACjC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACH,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,SAAS,GAAG,CAAC;QACzB,SAAS;KACZ,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAChC,KAAY,EACZ,aAAuB,EACvB,UAAoD,EAAE;IAEtD,mEAAmE;IACnE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD,oCAAoC;IACpC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QACzB,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,2CAA2C;IAC3C,MAAM,aAAa,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;IAC/C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAChF,CAAC;QAED,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,EAAE;QACnB,GAAI,OAAO;QACX,eAAe;KAClB,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAC9B,KAAY,EACZ,UAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC5B,KAAY,EACZ,CAAS,EACT,UAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAExC,MAAM,SAAS,GAAmC,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,SAAS,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAiB,EAAE,IAAI,EAAC,CAAC,CAAC;IACpD,CAAC;IAED,mCAAmC;IACnC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAA0B;IAC9C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAChC,GAAG,IAAI,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"girvan-newman.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/community/girvan-newman.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,EAAC,eAAe,EAAmB,mBAAmB,EAAS,MAAM,sBAAsB,CAAC;AAGxG;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,mBAAwB,GAClC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"girvan-newman.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/community/girvan-newman.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,EAAC,eAAe,EAAmB,mBAAmB,EAAS,MAAM,sBAAsB,CAAC;AAGxG;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,mBAAwB,GAClC,eAAe,EAAE,CAuEnB"}
|