@graphty/algorithms 1.3.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +368 -422
- package/dist/algorithms.js +567 -264
- 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 +12 -5
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts.map +1 -1
- package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js +19 -17
- 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 +23 -10
- 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 +29 -8
- 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/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +56 -65
- 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 +29 -29
- 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 +31 -25
- package/src/research/index.ts +4 -4
- package/src/research/sync.ts +40 -24
- 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
|
@@ -26,6 +26,10 @@ export interface MaxFlowResult {
|
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Utility function to create a flow network for bipartite matching
|
|
29
|
+
* @param leftNodes - Array of left partition node identifiers
|
|
30
|
+
* @param rightNodes - Array of right partition node identifiers
|
|
31
|
+
* @param edges - Array of edges connecting left nodes to right nodes
|
|
32
|
+
* @returns The flow network graph with source and sink nodes
|
|
29
33
|
*/
|
|
30
34
|
export declare function createBipartiteFlowNetwork(leftNodes: string[], rightNodes: string[], edges: [string, string][]): {
|
|
31
35
|
graph: Map<string, Map<string, number>>;
|
|
@@ -34,7 +38,6 @@ export declare function createBipartiteFlowNetwork(leftNodes: string[], rightNod
|
|
|
34
38
|
};
|
|
35
39
|
/**
|
|
36
40
|
* Ford-Fulkerson algorithm using DFS for finding augmenting paths
|
|
37
|
-
*
|
|
38
41
|
* @param graph - Adjacency list representation with capacities - accepts Graph class or Map
|
|
39
42
|
* @param source - Source node
|
|
40
43
|
* @param sink - Sink node
|
|
@@ -47,7 +50,6 @@ export declare function fordFulkerson(graph: Graph, source: string, sink: string
|
|
|
47
50
|
/**
|
|
48
51
|
* Edmonds-Karp algorithm (Ford-Fulkerson with BFS)
|
|
49
52
|
* More efficient implementation with better time complexity
|
|
50
|
-
*
|
|
51
53
|
* @param graph - Adjacency list representation with capacities - accepts Graph class or Map
|
|
52
54
|
* @param source - Source node
|
|
53
55
|
* @param sink - Sink node
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ford-fulkerson.d.ts","sourceRoot":"","sources":["../../../src/flow/ford-fulkerson.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ford-fulkerson.d.ts","sourceRoot":"","sources":["../../../src/flow/ford-fulkerson.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,CAAC;CAClF;AA4SD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAC1B;IAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA2C3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAIvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACvB,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC/C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACb,aAAa,CAIf"}
|
|
@@ -2,6 +2,8 @@ import { bfsAugmentingPath } from "../algorithms/traversal/bfs-variants.js";
|
|
|
2
2
|
import { graphToMap } from "../utils/graph-converters.js";
|
|
3
3
|
/**
|
|
4
4
|
* Create residual graph from original graph
|
|
5
|
+
* @param graph - The original graph with capacity values
|
|
6
|
+
* @returns A residual graph initialized with the original capacities
|
|
5
7
|
*/
|
|
6
8
|
function createResidualGraph(graph) {
|
|
7
9
|
const residual = new Map();
|
|
@@ -18,6 +20,10 @@ function createResidualGraph(graph) {
|
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* Find augmenting path using DFS
|
|
23
|
+
* @param residualGraph - The residual graph with remaining capacities
|
|
24
|
+
* @param source - The source node
|
|
25
|
+
* @param sink - The sink node
|
|
26
|
+
* @returns An array of nodes forming the path, or null if no path exists
|
|
21
27
|
*/
|
|
22
28
|
function findAugmentingPathDFS(residualGraph, source, sink) {
|
|
23
29
|
const visited = new Set();
|
|
@@ -49,6 +55,11 @@ function findAugmentingPathDFS(residualGraph, source, sink) {
|
|
|
49
55
|
}
|
|
50
56
|
/**
|
|
51
57
|
* Update flow along an augmenting path
|
|
58
|
+
* @param residualGraph - The residual graph to update
|
|
59
|
+
* @param flowGraph - The flow graph to update with new flow values
|
|
60
|
+
* @param originalGraph - The original graph for edge direction reference
|
|
61
|
+
* @param path - The augmenting path to update flow along
|
|
62
|
+
* @param pathFlow - The amount of flow to push through the path
|
|
52
63
|
*/
|
|
53
64
|
function updateFlow(residualGraph, flowGraph, originalGraph, path, pathFlow) {
|
|
54
65
|
for (let i = 0; i < path.length - 1; i++) {
|
|
@@ -93,6 +104,9 @@ function updateFlow(residualGraph, flowGraph, originalGraph, path, pathFlow) {
|
|
|
93
104
|
}
|
|
94
105
|
/**
|
|
95
106
|
* Find minimum cut from source side
|
|
107
|
+
* @param residualGraph - The residual graph after max flow computation
|
|
108
|
+
* @param source - The source node
|
|
109
|
+
* @returns The minimum cut partition with source and sink sets and cut edges
|
|
96
110
|
*/
|
|
97
111
|
function findMinCut(residualGraph, source) {
|
|
98
112
|
// Find all reachable nodes from source in residual graph
|
|
@@ -137,6 +151,11 @@ function findMinCut(residualGraph, source) {
|
|
|
137
151
|
}
|
|
138
152
|
/**
|
|
139
153
|
* Core max flow algorithm implementation
|
|
154
|
+
* @param graph - The graph with capacity values
|
|
155
|
+
* @param source - The source node
|
|
156
|
+
* @param sink - The sink node
|
|
157
|
+
* @param findPath - Function to find an augmenting path in the residual graph
|
|
158
|
+
* @returns The maximum flow result including flow value, flow graph, and minimum cut
|
|
140
159
|
*/
|
|
141
160
|
function maxFlowCore(graph, source, sink, findPath) {
|
|
142
161
|
if (!graph.has(source) || !graph.has(sink)) {
|
|
@@ -171,6 +190,10 @@ function maxFlowCore(graph, source, sink, findPath) {
|
|
|
171
190
|
}
|
|
172
191
|
/**
|
|
173
192
|
* Internal implementation of Ford-Fulkerson algorithm using DFS
|
|
193
|
+
* @param graph - The graph with capacity values
|
|
194
|
+
* @param source - The source node
|
|
195
|
+
* @param sink - The sink node
|
|
196
|
+
* @returns The maximum flow result
|
|
174
197
|
*/
|
|
175
198
|
function fordFulkersonImpl(graph, source, sink) {
|
|
176
199
|
// Adapter function for DFS path finding
|
|
@@ -197,6 +220,10 @@ function fordFulkersonImpl(graph, source, sink) {
|
|
|
197
220
|
}
|
|
198
221
|
/**
|
|
199
222
|
* Internal implementation of Edmonds-Karp algorithm
|
|
223
|
+
* @param graph - The graph with capacity values
|
|
224
|
+
* @param source - The source node
|
|
225
|
+
* @param sink - The sink node
|
|
226
|
+
* @returns The maximum flow result
|
|
200
227
|
*/
|
|
201
228
|
function edmondsKarpImpl(graph, source, sink) {
|
|
202
229
|
// Use BFS variant for path finding
|
|
@@ -207,6 +234,10 @@ function edmondsKarpImpl(graph, source, sink) {
|
|
|
207
234
|
}
|
|
208
235
|
/**
|
|
209
236
|
* Utility function to create a flow network for bipartite matching
|
|
237
|
+
* @param leftNodes - Array of left partition node identifiers
|
|
238
|
+
* @param rightNodes - Array of right partition node identifiers
|
|
239
|
+
* @param edges - Array of edges connecting left nodes to right nodes
|
|
240
|
+
* @returns The flow network graph with source and sink nodes
|
|
210
241
|
*/
|
|
211
242
|
export function createBipartiteFlowNetwork(leftNodes, rightNodes, edges) {
|
|
212
243
|
const graph = new Map();
|
|
@@ -246,7 +277,6 @@ export function createBipartiteFlowNetwork(leftNodes, rightNodes, edges) {
|
|
|
246
277
|
}
|
|
247
278
|
/**
|
|
248
279
|
* Ford-Fulkerson algorithm using DFS for finding augmenting paths
|
|
249
|
-
*
|
|
250
280
|
* @param graph - Adjacency list representation with capacities - accepts Graph class or Map
|
|
251
281
|
* @param source - Source node
|
|
252
282
|
* @param sink - Sink node
|
|
@@ -263,7 +293,6 @@ export function fordFulkerson(graph, source, sink) {
|
|
|
263
293
|
/**
|
|
264
294
|
* Edmonds-Karp algorithm (Ford-Fulkerson with BFS)
|
|
265
295
|
* More efficient implementation with better time complexity
|
|
266
|
-
*
|
|
267
296
|
* @param graph - Adjacency list representation with capacities - accepts Graph class or Map
|
|
268
297
|
* @param source - Source node
|
|
269
298
|
* @param sink - Sink node
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ford-fulkerson.js","sourceRoot":"","sources":["../../../src/flow/ford-fulkerson.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ford-fulkerson.js","sourceRoot":"","sources":["../../../src/flow/ford-fulkerson.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,6 @@ export interface MinCutResult {
|
|
|
17
17
|
/**
|
|
18
18
|
* Find minimum s-t cut using max flow
|
|
19
19
|
* The minimum cut value equals the maximum flow value (max-flow min-cut theorem)
|
|
20
|
-
*
|
|
21
20
|
* @param graph - Weighted graph
|
|
22
21
|
* @param source - Source node
|
|
23
22
|
* @param sink - Sink node
|
|
@@ -29,7 +28,6 @@ export declare function minSTCut(graph: Graph, source: string, sink: string): Mi
|
|
|
29
28
|
/**
|
|
30
29
|
* Stoer-Wagner algorithm for finding global minimum cut
|
|
31
30
|
* Finds the minimum cut that separates the graph into two parts
|
|
32
|
-
*
|
|
33
31
|
* @param graph - Undirected weighted graph - accepts Graph class or Map representation
|
|
34
32
|
* @returns Global minimum cut
|
|
35
33
|
*
|
|
@@ -39,7 +37,6 @@ export declare function stoerWagner(graph: Graph | Map<string, Map<string, numbe
|
|
|
39
37
|
/**
|
|
40
38
|
* Karger's randomized min-cut algorithm
|
|
41
39
|
* Probabilistic algorithm that finds min cut with high probability
|
|
42
|
-
*
|
|
43
40
|
* @param graph - Undirected graph - accepts Graph class or Map representation
|
|
44
41
|
* @param iterations - Number of iterations (higher = better accuracy)
|
|
45
42
|
* @returns Minimum cut found
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min-cut.d.ts","sourceRoot":"","sources":["../../../src/flow/min-cut.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"min-cut.d.ts","sourceRoot":"","sources":["../../../src/flow/min-cut.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI9C,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CA6BjF;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,YAAY,CAsFzF;AA4JD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,SAAM,GAAG,YAAY,CAoC5G"}
|
package/dist/src/flow/min-cut.js
CHANGED
|
@@ -8,7 +8,6 @@ import { fordFulkerson } from "./ford-fulkerson.js";
|
|
|
8
8
|
/**
|
|
9
9
|
* Find minimum s-t cut using max flow
|
|
10
10
|
* The minimum cut value equals the maximum flow value (max-flow min-cut theorem)
|
|
11
|
-
*
|
|
12
11
|
* @param graph - Weighted graph
|
|
13
12
|
* @param source - Source node
|
|
14
13
|
* @param sink - Sink node
|
|
@@ -45,7 +44,6 @@ export function minSTCut(graph, source, sink) {
|
|
|
45
44
|
/**
|
|
46
45
|
* Stoer-Wagner algorithm for finding global minimum cut
|
|
47
46
|
* Finds the minimum cut that separates the graph into two parts
|
|
48
|
-
*
|
|
49
47
|
* @param graph - Undirected weighted graph - accepts Graph class or Map representation
|
|
50
48
|
* @returns Global minimum cut
|
|
51
49
|
*
|
|
@@ -128,6 +126,9 @@ export function stoerWagner(graph) {
|
|
|
128
126
|
}
|
|
129
127
|
/**
|
|
130
128
|
* Minimum cut phase of Stoer-Wagner algorithm
|
|
129
|
+
* @param graph - The undirected weighted graph
|
|
130
|
+
* @param nodes - Array of remaining nodes in the graph
|
|
131
|
+
* @returns The cut result with last two nodes, cut value, and partition
|
|
131
132
|
*/
|
|
132
133
|
function minimumCutPhase(graph, nodes) {
|
|
133
134
|
const n = nodes.length;
|
|
@@ -188,6 +189,10 @@ function minimumCutPhase(graph, nodes) {
|
|
|
188
189
|
}
|
|
189
190
|
/**
|
|
190
191
|
* Contract two nodes in the graph
|
|
192
|
+
* @param graph - The graph to modify by contracting nodes
|
|
193
|
+
* @param nodes - Array of nodes to update after contraction
|
|
194
|
+
* @param s - The node to keep after contraction
|
|
195
|
+
* @param t - The node to merge into s
|
|
191
196
|
*/
|
|
192
197
|
function contractNodes(graph, nodes, s, t) {
|
|
193
198
|
// Merge t into s
|
|
@@ -219,6 +224,8 @@ function contractNodes(graph, nodes, s, t) {
|
|
|
219
224
|
}
|
|
220
225
|
/**
|
|
221
226
|
* Convert directed graph to undirected
|
|
227
|
+
* @param graph - The directed graph to convert
|
|
228
|
+
* @returns An undirected graph with edges in both directions
|
|
222
229
|
*/
|
|
223
230
|
function makeUndirected(graph) {
|
|
224
231
|
const undirected = new Map();
|
|
@@ -247,7 +254,6 @@ function makeUndirected(graph) {
|
|
|
247
254
|
/**
|
|
248
255
|
* Karger's randomized min-cut algorithm
|
|
249
256
|
* Probabilistic algorithm that finds min cut with high probability
|
|
250
|
-
*
|
|
251
257
|
* @param graph - Undirected graph - accepts Graph class or Map representation
|
|
252
258
|
* @param iterations - Number of iterations (higher = better accuracy)
|
|
253
259
|
* @returns Minimum cut found
|
|
@@ -289,6 +295,8 @@ export function kargerMinCut(graph, iterations = 100) {
|
|
|
289
295
|
}
|
|
290
296
|
/**
|
|
291
297
|
* Single run of Karger's algorithm
|
|
298
|
+
* @param graph - The undirected weighted graph
|
|
299
|
+
* @returns The cut result with cut value and two partitions
|
|
292
300
|
*/
|
|
293
301
|
function kargerSingleRun(graph) {
|
|
294
302
|
// Create a copy of the graph
|
|
@@ -305,7 +313,8 @@ function kargerSingleRun(graph) {
|
|
|
305
313
|
const edges = [];
|
|
306
314
|
for (const [u, neighbors] of workGraph) {
|
|
307
315
|
for (const [v, weight] of neighbors) {
|
|
308
|
-
if (u < v) {
|
|
316
|
+
if (u < v) {
|
|
317
|
+
// Avoid duplicates
|
|
309
318
|
edges.push([u, v, weight]);
|
|
310
319
|
}
|
|
311
320
|
}
|
|
@@ -351,6 +360,10 @@ function kargerSingleRun(graph) {
|
|
|
351
360
|
}
|
|
352
361
|
/**
|
|
353
362
|
* Contract edge in Karger's algorithm
|
|
363
|
+
* @param graph - The working graph to modify
|
|
364
|
+
* @param superNodes - Map tracking which original nodes are in each super node
|
|
365
|
+
* @param u - First endpoint of the edge to contract
|
|
366
|
+
* @param v - Second endpoint of the edge to contract (merged into u)
|
|
354
367
|
*/
|
|
355
368
|
function contractKarger(graph, superNodes, u, v) {
|
|
356
369
|
// Merge v into u
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min-cut.js","sourceRoot":"","sources":["../../../src/flow/min-cut.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"min-cut.js","sourceRoot":"","sources":["../../../src/flow/min-cut.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* graphty/algorithms - Graph algorithms library for browser environments
|
|
3
3
|
*
|
|
4
4
|
* A comprehensive TypeScript library implementing fundamental graph algorithms
|
|
5
5
|
* optimized for browser environments and visualization applications.
|
|
6
|
+
* @module
|
|
6
7
|
*/
|
|
7
8
|
export { Graph } from "./core/graph.js";
|
|
8
9
|
export type { BellmanFordResult, CentralityOptions, CentralityResult, CommunityResult, ComponentResult, DijkstraOptions, Edge, FloydWarshallResult, GirvanNewmanOptions, GraphConfig, LouvainOptions, MSTResult, Node, NodeId, PageRankOptions, ShortestPathResult, TraversalOptions, TraversalResult, } from "./types/index.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,YAAY,EACR,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,IAAI,EACJ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,SAAS,EACT,IAAI,EACJ,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAClB,MAAM,kBAAkB,CAAC;AAG1B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* graphty/algorithms - Graph algorithms library for browser environments
|
|
3
3
|
*
|
|
4
4
|
* A comprehensive TypeScript library implementing fundamental graph algorithms
|
|
5
5
|
* optimized for browser environments and visualization applications.
|
|
6
|
+
* @module
|
|
6
7
|
*/
|
|
7
8
|
// Core exports
|
|
8
9
|
export { Graph } from "./core/graph.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAwBxC,oBAAoB;AACpB,cAAc,uBAAuB,CAAC;AAEtC,2CAA2C;AAC3C,cAAc,qBAAqB,CAAC;AAEpC,yBAAyB;AACzB,cAAc,4BAA4B,CAAC;AAE3C,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,iDAAiD;AACjD,+DAA+D"}
|
|
@@ -16,24 +16,45 @@ import type { LinkPredictionOptions, LinkPredictionScore } from "./common-neighb
|
|
|
16
16
|
*/
|
|
17
17
|
/**
|
|
18
18
|
* Calculate Adamic-Adar index for a pair of nodes
|
|
19
|
+
* @param graph - The input graph
|
|
20
|
+
* @param source - The source node ID
|
|
21
|
+
* @param target - The target node ID
|
|
22
|
+
* @param options - Link prediction options
|
|
23
|
+
* @returns The Adamic-Adar score for the node pair
|
|
19
24
|
*/
|
|
20
25
|
export declare function adamicAdarScore(graph: Graph, source: NodeId, target: NodeId, options?: LinkPredictionOptions): number;
|
|
21
26
|
/**
|
|
22
27
|
* Calculate Adamic-Adar scores for all possible node pairs
|
|
28
|
+
* @param graph - The input graph
|
|
29
|
+
* @param options - Link prediction options
|
|
30
|
+
* @returns Array of link prediction scores sorted by score descending
|
|
23
31
|
*/
|
|
24
32
|
export declare function adamicAdarPrediction(graph: Graph, options?: LinkPredictionOptions): LinkPredictionScore[];
|
|
25
33
|
/**
|
|
26
34
|
* Calculate Adamic-Adar scores for specific node pairs
|
|
35
|
+
* @param graph - The input graph
|
|
36
|
+
* @param pairs - Array of node ID pairs to calculate scores for
|
|
37
|
+
* @param options - Link prediction options
|
|
38
|
+
* @returns Array of link prediction scores for the specified pairs
|
|
27
39
|
*/
|
|
28
40
|
export declare function adamicAdarForPairs(graph: Graph, pairs: [NodeId, NodeId][], options?: LinkPredictionOptions): LinkPredictionScore[];
|
|
29
41
|
/**
|
|
30
42
|
* Get top Adamic-Adar candidates for link prediction for a specific node
|
|
43
|
+
* @param graph - The input graph
|
|
44
|
+
* @param node - The node ID to get candidates for
|
|
45
|
+
* @param options - Link prediction options with optional candidate list
|
|
46
|
+
* @returns Array of top link prediction candidates sorted by score descending
|
|
31
47
|
*/
|
|
32
48
|
export declare function getTopAdamicAdarCandidatesForNode(graph: Graph, node: NodeId, options?: LinkPredictionOptions & {
|
|
33
49
|
candidates?: NodeId[];
|
|
34
50
|
}): LinkPredictionScore[];
|
|
35
51
|
/**
|
|
36
52
|
* Calculate precision and recall for Adamic-Adar link prediction evaluation
|
|
53
|
+
* @param trainingGraph - The training graph without test edges
|
|
54
|
+
* @param testEdges - Array of node pairs that are actual edges
|
|
55
|
+
* @param nonEdges - Array of node pairs that are not edges
|
|
56
|
+
* @param options - Link prediction options
|
|
57
|
+
* @returns Evaluation metrics including precision, recall, F1 score, and AUC
|
|
37
58
|
*/
|
|
38
59
|
export declare function evaluateAdamicAdar(trainingGraph: Graph, testEdges: [NodeId, NodeId][], nonEdges: [NodeId, NodeId][], options?: LinkPredictionOptions): {
|
|
39
60
|
precision: number;
|
|
@@ -43,6 +64,11 @@ export declare function evaluateAdamicAdar(trainingGraph: Graph, testEdges: [Nod
|
|
|
43
64
|
};
|
|
44
65
|
/**
|
|
45
66
|
* Compare Adamic-Adar with Common Neighbors for the same dataset
|
|
67
|
+
* @param graph - The input graph
|
|
68
|
+
* @param testEdges - Array of node pairs that are actual edges
|
|
69
|
+
* @param nonEdges - Array of node pairs that are not edges
|
|
70
|
+
* @param options - Link prediction options
|
|
71
|
+
* @returns Comparison of evaluation metrics for both algorithms
|
|
46
72
|
*/
|
|
47
73
|
export declare function compareAdamicAdarWithCommonNeighbors(graph: Graph, testEdges: [NodeId, NodeId][], nonEdges: [NodeId, NodeId][], options?: LinkPredictionOptions): {
|
|
48
74
|
adamicAdar: ReturnType<typeof evaluateAdamicAdar>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adamic-adar.d.ts","sourceRoot":"","sources":["../../../src/link-prediction/adamic-adar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"adamic-adar.d.ts","sourceRoot":"","sources":["../../../src/link-prediction/adamic-adar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAExF;;;;;;;;;;;;GAYG;AAEH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GACpC,MAAM,CA6BR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,qBAA0B,GAAG,mBAAmB,EAAE,CA0C7G;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EACzB,OAAO,GAAE,qBAA0B,GACpC,mBAAmB,EAAE,CAMvB;AAED;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC7C,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAAqB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAChE,mBAAmB,EAAE,CA+BvB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,KAAK,EACpB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC5B,OAAO,GAAE,qBAA0B,GACpC;IACC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACf,CAgEA;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAChD,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC7B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC5B,OAAO,GAAE,qBAA0B,GACpC;IACC,UAAU,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAClD,eAAe,EAAE;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAwEA"}
|
|
@@ -14,6 +14,11 @@ import { getCommonNeighbors, getIntermediateNodes } from "../utils/graph-utiliti
|
|
|
14
14
|
*/
|
|
15
15
|
/**
|
|
16
16
|
* Calculate Adamic-Adar index for a pair of nodes
|
|
17
|
+
* @param graph - The input graph
|
|
18
|
+
* @param source - The source node ID
|
|
19
|
+
* @param target - The target node ID
|
|
20
|
+
* @param options - Link prediction options
|
|
21
|
+
* @returns The Adamic-Adar score for the node pair
|
|
17
22
|
*/
|
|
18
23
|
export function adamicAdarScore(graph, source, target, options = {}) {
|
|
19
24
|
if (!graph.hasNode(source) || !graph.hasNode(target)) {
|
|
@@ -22,15 +27,15 @@ export function adamicAdarScore(graph, source, target, options = {}) {
|
|
|
22
27
|
const { directed = false } = options;
|
|
23
28
|
// Use utility function to get common neighbors
|
|
24
29
|
// For directed graphs, we want intermediate nodes that form paths source->X->target
|
|
25
|
-
const commonNeighborsSet = directed
|
|
26
|
-
getIntermediateNodes(graph, source, target)
|
|
27
|
-
getCommonNeighbors(graph, source, target, false);
|
|
30
|
+
const commonNeighborsSet = directed
|
|
31
|
+
? getIntermediateNodes(graph, source, target)
|
|
32
|
+
: getCommonNeighbors(graph, source, target, false);
|
|
28
33
|
// Calculate Adamic-Adar score
|
|
29
34
|
let score = 0;
|
|
30
35
|
for (const neighbor of commonNeighborsSet) {
|
|
31
|
-
const degree = directed
|
|
32
|
-
graph.outDegree(neighbor)
|
|
33
|
-
graph.degree(neighbor); // Use total degree for undirected graphs
|
|
36
|
+
const degree = directed
|
|
37
|
+
? graph.outDegree(neighbor) // Use out-degree for directed graphs
|
|
38
|
+
: graph.degree(neighbor); // Use total degree for undirected graphs
|
|
34
39
|
if (degree > 1) {
|
|
35
40
|
score += 1 / Math.log(degree);
|
|
36
41
|
}
|
|
@@ -43,9 +48,12 @@ export function adamicAdarScore(graph, source, target, options = {}) {
|
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
45
50
|
* Calculate Adamic-Adar scores for all possible node pairs
|
|
51
|
+
* @param graph - The input graph
|
|
52
|
+
* @param options - Link prediction options
|
|
53
|
+
* @returns Array of link prediction scores sorted by score descending
|
|
46
54
|
*/
|
|
47
55
|
export function adamicAdarPrediction(graph, options = {}) {
|
|
48
|
-
const { directed = false, includeExisting = false, topK
|
|
56
|
+
const { directed = false, includeExisting = false, topK } = options;
|
|
49
57
|
const scores = [];
|
|
50
58
|
const nodes = Array.from(graph.nodes()).map((n) => n.id);
|
|
51
59
|
for (let i = 0; i < nodes.length; i++) {
|
|
@@ -79,6 +87,10 @@ export function adamicAdarPrediction(graph, options = {}) {
|
|
|
79
87
|
}
|
|
80
88
|
/**
|
|
81
89
|
* Calculate Adamic-Adar scores for specific node pairs
|
|
90
|
+
* @param graph - The input graph
|
|
91
|
+
* @param pairs - Array of node ID pairs to calculate scores for
|
|
92
|
+
* @param options - Link prediction options
|
|
93
|
+
* @returns Array of link prediction scores for the specified pairs
|
|
82
94
|
*/
|
|
83
95
|
export function adamicAdarForPairs(graph, pairs, options = {}) {
|
|
84
96
|
return pairs.map(([source, target]) => ({
|
|
@@ -89,12 +101,16 @@ export function adamicAdarForPairs(graph, pairs, options = {}) {
|
|
|
89
101
|
}
|
|
90
102
|
/**
|
|
91
103
|
* Get top Adamic-Adar candidates for link prediction for a specific node
|
|
104
|
+
* @param graph - The input graph
|
|
105
|
+
* @param node - The node ID to get candidates for
|
|
106
|
+
* @param options - Link prediction options with optional candidate list
|
|
107
|
+
* @returns Array of top link prediction candidates sorted by score descending
|
|
92
108
|
*/
|
|
93
109
|
export function getTopAdamicAdarCandidatesForNode(graph, node, options = {}) {
|
|
94
110
|
if (!graph.hasNode(node)) {
|
|
95
111
|
return [];
|
|
96
112
|
}
|
|
97
|
-
const { directed = false, includeExisting = false, topK = 10, candidates
|
|
113
|
+
const { directed = false, includeExisting = false, topK = 10, candidates } = options;
|
|
98
114
|
const scores = [];
|
|
99
115
|
const targetNodes = candidates ?? Array.from(graph.nodes()).map((n) => n.id);
|
|
100
116
|
for (const target of targetNodes) {
|
|
@@ -116,6 +132,11 @@ export function getTopAdamicAdarCandidatesForNode(graph, node, options = {}) {
|
|
|
116
132
|
}
|
|
117
133
|
/**
|
|
118
134
|
* Calculate precision and recall for Adamic-Adar link prediction evaluation
|
|
135
|
+
* @param trainingGraph - The training graph without test edges
|
|
136
|
+
* @param testEdges - Array of node pairs that are actual edges
|
|
137
|
+
* @param nonEdges - Array of node pairs that are not edges
|
|
138
|
+
* @param options - Link prediction options
|
|
139
|
+
* @returns Evaluation metrics including precision, recall, F1 score, and AUC
|
|
119
140
|
*/
|
|
120
141
|
export function evaluateAdamicAdar(trainingGraph, testEdges, nonEdges, options = {}) {
|
|
121
142
|
// Get scores for test edges and non-edges
|
|
@@ -142,7 +163,7 @@ export function evaluateAdamicAdar(trainingGraph, testEdges, nonEdges, options =
|
|
|
142
163
|
}
|
|
143
164
|
const precision = truePositives / (truePositives + falsePositives);
|
|
144
165
|
const recall = truePositives / totalPositives;
|
|
145
|
-
const f1 = precision + recall > 0 ? 2 * (precision * recall) / (precision + recall) : 0;
|
|
166
|
+
const f1 = precision + recall > 0 ? (2 * (precision * recall)) / (precision + recall) : 0;
|
|
146
167
|
if (f1 > bestF1) {
|
|
147
168
|
bestF1 = f1;
|
|
148
169
|
bestPrecision = precision;
|
|
@@ -177,6 +198,11 @@ export function evaluateAdamicAdar(trainingGraph, testEdges, nonEdges, options =
|
|
|
177
198
|
}
|
|
178
199
|
/**
|
|
179
200
|
* Compare Adamic-Adar with Common Neighbors for the same dataset
|
|
201
|
+
* @param graph - The input graph
|
|
202
|
+
* @param testEdges - Array of node pairs that are actual edges
|
|
203
|
+
* @param nonEdges - Array of node pairs that are not edges
|
|
204
|
+
* @param options - Link prediction options
|
|
205
|
+
* @returns Comparison of evaluation metrics for both algorithms
|
|
180
206
|
*/
|
|
181
207
|
export function compareAdamicAdarWithCommonNeighbors(graph, testEdges, nonEdges, options = {}) {
|
|
182
208
|
// Import common neighbors evaluation function
|
|
@@ -207,7 +233,7 @@ export function compareAdamicAdarWithCommonNeighbors(graph, testEdges, nonEdges,
|
|
|
207
233
|
}
|
|
208
234
|
const precision = truePositives / (truePositives + falsePositives);
|
|
209
235
|
const recall = truePositives / totalPositives;
|
|
210
|
-
const f1 = precision + recall > 0 ? 2 * (precision * recall) / (precision + recall) : 0;
|
|
236
|
+
const f1 = precision + recall > 0 ? (2 * (precision * recall)) / (precision + recall) : 0;
|
|
211
237
|
if (f1 > bestF1) {
|
|
212
238
|
bestF1 = f1;
|
|
213
239
|
bestPrecision = precision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adamic-adar.js","sourceRoot":"","sources":["../../../src/link-prediction/adamic-adar.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"adamic-adar.js","sourceRoot":"","sources":["../../../src/link-prediction/adamic-adar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGvF;;;;;;;;;;;;GAYG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC3B,KAAY,EACZ,MAAc,EACd,MAAc,EACd,UAAiC,EAAE;IAEnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAErC,+CAA+C;IAC/C,oFAAoF;IACpF,MAAM,kBAAkB,GAAG,QAAQ;QAC/B,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;QAC7C,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAEvD,8BAA8B;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,QAAQ;YACnB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,qCAAqC;YACjE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,yCAAyC;QAEvE,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,iEAAiE;YACjE,KAAK,IAAI,CAAC,CAAC,CAAC,iCAAiC;QACjD,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAY,EAAE,UAAiC,EAAE;IAClF,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEpE,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAExB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,SAAS;YACb,CAAC;YAED,uCAAuC;YACvC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;gBACpD,SAAS;YACb,CAAC;YAED,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEnE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEvC,mDAAmD;gBACnD,IAAI,CAAC,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzC,4BAA4B;IAC5B,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAC9B,KAAY,EACZ,KAAyB,EACzB,UAAiC,EAAE;IAEnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM;QACN,MAAM;QACN,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;KACzD,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAC7C,KAAY,EACZ,IAAY,EACZ,UAA6D,EAAE;IAE/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAErF,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7E,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,SAAS;QACb,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,SAAS;QACb,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEjE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAC9B,aAAoB,EACpB,SAA6B,EAC7B,QAA4B,EAC5B,UAAiC,EAAE;IAOnC,0CAA0C;IAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE3E,8BAA8B;IAC9B,MAAM,SAAS,GAAG;QACd,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/D,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEpC,yDAAyD;IACzD,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;IAExC,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,aAAa,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,cAAc,EAAE,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;QAC9C,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1F,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;YACd,MAAM,GAAG,EAAE,CAAC;YACZ,aAAa,GAAG,SAAS,CAAC;YAC1B,UAAU,GAAG,MAAM,CAAC;QACxB,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACJ,GAAG,IAAI,OAAO,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACJ,GAAG,GAAG,GAAG,CAAC,CAAC,qBAAqB;IACpC,CAAC;IAED,OAAO;QACH,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,MAAM;QACf,GAAG;KACN,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oCAAoC,CAChD,KAAY,EACZ,SAA6B,EAC7B,QAA4B,EAC5B,UAAiC,EAAE;IAUnC,8CAA8C;IAC9C,qGAAqG;IACrG,MAAM,oBAAoB,GAAG,CAAC,KAAyB,EAAyB,EAAE,CAC9E,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,MAAM;QACN,MAAM;QACN,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI;KAC1E,CAAC,CAAC,CAAC;IAER,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG;QACd,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;KAC/D,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEpC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;IAExC,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,aAAa,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,cAAc,EAAE,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,aAAa,GAAG,cAAc,CAAC;QAC9C,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;YACd,MAAM,GAAG,EAAE,CAAC;YACZ,aAAa,GAAG,SAAS,CAAC;YAC1B,UAAU,GAAG,MAAM,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACJ,GAAG,IAAI,OAAO,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACJ,GAAG,GAAG,GAAG,CAAC;IACd,CAAC;IAED,MAAM,sBAAsB,GAAG;QAC3B,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,MAAM;QACf,GAAG;KACN,CAAC;IAEF,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAElF,OAAO;QACH,UAAU,EAAE,iBAAiB;QAC7B,eAAe,EAAE,sBAAsB;KAC1C,CAAC;AACN,CAAC"}
|