@graphty/layout 1.2.9 → 1.4.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 +400 -409
- package/dist/layout.js +884 -817
- package/dist/layout.js.map +1 -1
- package/dist/src/algorithms/index.d.ts +3 -2
- package/dist/src/algorithms/index.d.ts.map +1 -0
- package/dist/src/algorithms/index.js +2 -2
- package/dist/src/algorithms/index.js.map +1 -1
- package/dist/src/algorithms/optimization/index.d.ts +5 -4
- package/dist/src/algorithms/optimization/index.d.ts.map +1 -0
- package/dist/src/algorithms/optimization/index.js +3 -3
- package/dist/src/algorithms/optimization/index.js.map +1 -1
- package/dist/src/algorithms/optimization/kamada-kawai-solver.d.ts +3 -5
- package/dist/src/algorithms/optimization/kamada-kawai-solver.d.ts.map +1 -0
- package/dist/src/algorithms/optimization/kamada-kawai-solver.js +6 -9
- package/dist/src/algorithms/optimization/kamada-kawai-solver.js.map +1 -1
- package/dist/src/algorithms/optimization/lbfgs.d.ts +3 -3
- package/dist/src/algorithms/optimization/lbfgs.d.ts.map +1 -0
- package/dist/src/algorithms/optimization/lbfgs.js +5 -7
- package/dist/src/algorithms/optimization/lbfgs.js.map +1 -1
- package/dist/src/algorithms/optimization/line-search.d.ts +1 -1
- package/dist/src/algorithms/optimization/line-search.d.ts.map +1 -0
- package/dist/src/algorithms/optimization/line-search.js +0 -1
- package/dist/src/algorithms/optimization/line-search.js.map +1 -1
- package/dist/src/algorithms/optimization/types.d.ts +2 -1
- package/dist/src/algorithms/optimization/types.d.ts.map +1 -0
- package/dist/src/algorithms/planarity/check.d.ts +5 -4
- package/dist/src/algorithms/planarity/check.d.ts.map +1 -0
- package/dist/src/algorithms/planarity/check.js +6 -6
- package/dist/src/algorithms/planarity/check.js.map +1 -1
- package/dist/src/algorithms/planarity/embedding.d.ts +5 -6
- package/dist/src/algorithms/planarity/embedding.d.ts.map +1 -0
- package/dist/src/algorithms/planarity/embedding.js +15 -14
- package/dist/src/algorithms/planarity/embedding.js.map +1 -1
- package/dist/src/algorithms/planarity/index.d.ts +5 -4
- package/dist/src/algorithms/planarity/index.d.ts.map +1 -0
- package/dist/src/algorithms/planarity/index.js +4 -4
- package/dist/src/algorithms/planarity/index.js.map +1 -1
- package/dist/src/algorithms/planarity/lr-test.d.ts +3 -2
- package/dist/src/algorithms/planarity/lr-test.d.ts.map +1 -0
- package/dist/src/algorithms/planarity/lr-test.js +2 -2
- package/dist/src/algorithms/planarity/lr-test.js.map +1 -1
- package/dist/src/algorithms/planarity/special-graphs.d.ts +2 -4
- package/dist/src/algorithms/planarity/special-graphs.d.ts.map +1 -0
- package/dist/src/algorithms/planarity/special-graphs.js +18 -15
- package/dist/src/algorithms/planarity/special-graphs.js.map +1 -1
- package/dist/src/generators/basic.d.ts +2 -1
- package/dist/src/generators/basic.d.ts.map +1 -0
- package/dist/src/generators/basic.js +4 -4
- package/dist/src/generators/basic.js.map +1 -1
- package/dist/src/generators/bipartite.d.ts +2 -1
- package/dist/src/generators/bipartite.d.ts.map +1 -0
- package/dist/src/generators/bipartite.js +2 -2
- package/dist/src/generators/bipartite.js.map +1 -1
- package/dist/src/generators/grid.d.ts +2 -1
- package/dist/src/generators/grid.d.ts.map +1 -0
- package/dist/src/generators/grid.js +1 -1
- package/dist/src/generators/grid.js.map +1 -1
- package/dist/src/generators/index.d.ts +6 -5
- package/dist/src/generators/index.d.ts.map +1 -0
- package/dist/src/generators/index.js +5 -5
- package/dist/src/generators/index.js.map +1 -1
- package/dist/src/generators/random.d.ts +2 -1
- package/dist/src/generators/random.d.ts.map +1 -0
- package/dist/src/generators/random.js +2 -2
- package/dist/src/generators/random.js.map +1 -1
- package/dist/src/generators/scale-free.d.ts +2 -1
- package/dist/src/generators/scale-free.d.ts.map +1 -0
- package/dist/src/generators/scale-free.js +4 -4
- package/dist/src/generators/scale-free.js.map +1 -1
- package/dist/src/index.d.ts +5 -4
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +4 -4
- package/dist/src/layouts/basic/index.d.ts +2 -1
- package/dist/src/layouts/basic/index.d.ts.map +1 -0
- package/dist/src/layouts/basic/index.js +1 -1
- package/dist/src/layouts/basic/random.d.ts +2 -2
- package/dist/src/layouts/basic/random.d.ts.map +1 -0
- package/dist/src/layouts/basic/random.js +4 -5
- package/dist/src/layouts/basic/random.js.map +1 -1
- package/dist/src/layouts/force-directed/arf.d.ts +2 -2
- package/dist/src/layouts/force-directed/arf.d.ts.map +1 -0
- package/dist/src/layouts/force-directed/arf.js +13 -8
- package/dist/src/layouts/force-directed/arf.js.map +1 -1
- package/dist/src/layouts/force-directed/forceatlas2.d.ts +4 -4
- package/dist/src/layouts/force-directed/forceatlas2.d.ts.map +1 -0
- package/dist/src/layouts/force-directed/forceatlas2.js +83 -51
- package/dist/src/layouts/force-directed/forceatlas2.js.map +1 -1
- package/dist/src/layouts/force-directed/fruchterman-reingold.d.ts +12 -12
- package/dist/src/layouts/force-directed/fruchterman-reingold.d.ts.map +1 -0
- package/dist/src/layouts/force-directed/fruchterman-reingold.js +18 -18
- package/dist/src/layouts/force-directed/fruchterman-reingold.js.map +1 -1
- package/dist/src/layouts/force-directed/index.d.ts +6 -5
- package/dist/src/layouts/force-directed/index.d.ts.map +1 -0
- package/dist/src/layouts/force-directed/index.js +5 -5
- package/dist/src/layouts/force-directed/index.js.map +1 -1
- package/dist/src/layouts/force-directed/kamada-kawai.d.ts +3 -3
- package/dist/src/layouts/force-directed/kamada-kawai.d.ts.map +1 -0
- package/dist/src/layouts/force-directed/kamada-kawai.js +13 -11
- package/dist/src/layouts/force-directed/kamada-kawai.js.map +1 -1
- package/dist/src/layouts/force-directed/spring.d.ts +12 -12
- package/dist/src/layouts/force-directed/spring.d.ts.map +1 -0
- package/dist/src/layouts/force-directed/spring.js +11 -12
- package/dist/src/layouts/force-directed/spring.js.map +1 -1
- package/dist/src/layouts/geometric/circular.d.ts +2 -2
- package/dist/src/layouts/geometric/circular.d.ts.map +1 -0
- package/dist/src/layouts/geometric/circular.js +11 -10
- package/dist/src/layouts/geometric/circular.js.map +1 -1
- package/dist/src/layouts/geometric/index.d.ts +4 -3
- package/dist/src/layouts/geometric/index.d.ts.map +1 -0
- package/dist/src/layouts/geometric/index.js +3 -3
- package/dist/src/layouts/geometric/shell.d.ts +2 -2
- package/dist/src/layouts/geometric/shell.d.ts.map +1 -0
- package/dist/src/layouts/geometric/shell.js +6 -6
- package/dist/src/layouts/geometric/shell.js.map +1 -1
- package/dist/src/layouts/geometric/spiral.d.ts +2 -2
- package/dist/src/layouts/geometric/spiral.d.ts.map +1 -0
- package/dist/src/layouts/geometric/spiral.js +6 -10
- package/dist/src/layouts/geometric/spiral.js.map +1 -1
- package/dist/src/layouts/hierarchical/bfs.d.ts +3 -3
- package/dist/src/layouts/hierarchical/bfs.d.ts.map +1 -0
- package/dist/src/layouts/hierarchical/bfs.js +6 -7
- package/dist/src/layouts/hierarchical/bfs.js.map +1 -1
- package/dist/src/layouts/hierarchical/bipartite.d.ts +3 -3
- package/dist/src/layouts/hierarchical/bipartite.d.ts.map +1 -0
- package/dist/src/layouts/hierarchical/bipartite.js +9 -10
- package/dist/src/layouts/hierarchical/bipartite.js.map +1 -1
- package/dist/src/layouts/hierarchical/index.d.ts +4 -3
- package/dist/src/layouts/hierarchical/index.d.ts.map +1 -0
- package/dist/src/layouts/hierarchical/index.js +3 -3
- package/dist/src/layouts/hierarchical/index.js.map +1 -1
- package/dist/src/layouts/hierarchical/multipartite.d.ts +3 -3
- package/dist/src/layouts/hierarchical/multipartite.d.ts.map +1 -0
- package/dist/src/layouts/hierarchical/multipartite.js +9 -10
- package/dist/src/layouts/hierarchical/multipartite.js.map +1 -1
- package/dist/src/layouts/index.d.ts +6 -5
- package/dist/src/layouts/index.d.ts.map +1 -0
- package/dist/src/layouts/index.js +5 -5
- package/dist/src/layouts/index.js.map +1 -1
- package/dist/src/layouts/specialized/index.d.ts +3 -2
- package/dist/src/layouts/specialized/index.d.ts.map +1 -0
- package/dist/src/layouts/specialized/index.js +2 -2
- package/dist/src/layouts/specialized/index.js.map +1 -1
- package/dist/src/layouts/specialized/planar.d.ts +2 -2
- package/dist/src/layouts/specialized/planar.d.ts.map +1 -0
- package/dist/src/layouts/specialized/planar.js +6 -7
- package/dist/src/layouts/specialized/planar.js.map +1 -1
- package/dist/src/layouts/specialized/spectral.d.ts +2 -2
- package/dist/src/layouts/specialized/spectral.d.ts.map +1 -0
- package/dist/src/layouts/specialized/spectral.js +31 -21
- package/dist/src/layouts/specialized/spectral.js.map +1 -1
- package/dist/src/types/embedding.d.ts +2 -1
- package/dist/src/types/embedding.d.ts.map +1 -0
- package/dist/src/types/graph.d.ts +2 -1
- package/dist/src/types/graph.d.ts.map +1 -0
- package/dist/src/types/index.d.ts +4 -3
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +3 -3
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/layout.d.ts +2 -1
- package/dist/src/types/layout.d.ts.map +1 -0
- package/dist/src/utils/graph.d.ts +2 -5
- package/dist/src/utils/graph.d.ts.map +1 -0
- package/dist/src/utils/graph.js +4 -6
- package/dist/src/utils/graph.js.map +1 -1
- package/dist/src/utils/index.d.ts +6 -5
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +5 -5
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/numpy.d.ts +5 -4
- package/dist/src/utils/numpy.d.ts.map +1 -0
- package/dist/src/utils/numpy.js +22 -16
- package/dist/src/utils/numpy.js.map +1 -1
- package/dist/src/utils/params.d.ts +2 -2
- package/dist/src/utils/params.d.ts.map +1 -0
- package/dist/src/utils/params.js +0 -1
- package/dist/src/utils/params.js.map +1 -1
- package/dist/src/utils/random.d.ts +18 -0
- package/dist/src/utils/random.d.ts.map +1 -0
- package/dist/src/utils/random.js +18 -1
- package/dist/src/utils/random.js.map +1 -1
- package/dist/src/utils/rescale.d.ts +2 -3
- package/dist/src/utils/rescale.d.ts.map +1 -0
- package/dist/src/utils/rescale.js +12 -10
- package/dist/src/utils/rescale.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +35 -34
- package/src/algorithms/index.ts +2 -2
- package/src/algorithms/optimization/index.ts +4 -8
- package/src/algorithms/optimization/kamada-kawai-solver.ts +170 -179
- package/src/algorithms/optimization/lbfgs.ts +42 -49
- package/src/algorithms/optimization/line-search.ts +27 -28
- package/src/algorithms/optimization/types.ts +2 -2
- package/src/algorithms/planarity/check.ts +23 -23
- package/src/algorithms/planarity/embedding.ts +160 -171
- package/src/algorithms/planarity/index.ts +4 -8
- package/src/algorithms/planarity/lr-test.ts +46 -46
- package/src/algorithms/planarity/special-graphs.ts +73 -83
- package/src/generators/basic.ts +57 -57
- package/src/generators/bipartite.ts +37 -31
- package/src/generators/grid.ts +28 -28
- package/src/generators/index.ts +5 -11
- package/src/generators/random.ts +26 -25
- package/src/generators/scale-free.ts +56 -55
- package/src/index.ts +5 -5
- package/src/layouts/basic/index.ts +1 -1
- package/src/layouts/basic/random.ts +20 -16
- package/src/layouts/force-directed/arf.ts +107 -105
- package/src/layouts/force-directed/forceatlas2.ts +374 -352
- package/src/layouts/force-directed/fruchterman-reingold.ts +133 -134
- package/src/layouts/force-directed/index.ts +5 -5
- package/src/layouts/force-directed/kamada-kawai.ts +77 -80
- package/src/layouts/force-directed/spring.ts +24 -25
- package/src/layouts/geometric/circular.ts +63 -57
- package/src/layouts/geometric/index.ts +3 -3
- package/src/layouts/geometric/shell.ts +58 -53
- package/src/layouts/geometric/spiral.ts +60 -64
- package/src/layouts/hierarchical/bfs.ts +58 -59
- package/src/layouts/hierarchical/bipartite.ts +62 -63
- package/src/layouts/hierarchical/index.ts +3 -3
- package/src/layouts/hierarchical/multipartite.ts +62 -63
- package/src/layouts/index.ts +5 -5
- package/src/layouts/specialized/index.ts +2 -2
- package/src/layouts/specialized/planar.ts +41 -42
- package/src/layouts/specialized/spectral.ts +110 -99
- package/src/types/embedding.ts +5 -5
- package/src/types/graph.ts +4 -4
- package/src/types/index.ts +3 -3
- package/src/types/layout.ts +2 -2
- package/src/utils/graph.ts +31 -35
- package/src/utils/index.ts +5 -5
- package/src/utils/numpy.ts +96 -92
- package/src/utils/params.ts +14 -11
- package/src/utils/random.ts +57 -40
- package/src/utils/rescale.ts +169 -174
- package/dist/vitest.config.d.ts +0 -2
- package/dist/vitest.config.js +0 -30
- package/dist/vitest.config.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Left-Right Planarity Test implementation
|
|
3
3
|
*/
|
|
4
|
-
import { createTriangulationEmbedding } from
|
|
4
|
+
import { createTriangulationEmbedding } from "./embedding";
|
|
5
5
|
/**
|
|
6
6
|
* Left-Right Planarity Test for general graphs
|
|
7
|
-
*
|
|
8
7
|
* @param nodes - List of nodes
|
|
9
8
|
* @param edges - List of edges
|
|
9
|
+
* @param seed - Random seed for deterministic embedding generation
|
|
10
10
|
* @returns Object containing isPlanar flag and embedding
|
|
11
11
|
*/
|
|
12
12
|
export function lrPlanarityTest(nodes, edges, seed = null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lr-test.js","sourceRoot":"","sources":["../../../../src/algorithms/planarity/lr-test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"lr-test.js","sourceRoot":"","sources":["../../../../src/algorithms/planarity/lr-test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC3B,KAAa,EACb,KAAa,EACb,OAAsB,IAAI;IAE1B,sCAAsC;IACtC,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,iEAAiE;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAQ,CAAC;IAChC,MAAM,QAAQ,GAAW,EAAE,CAAC;IAE5B,SAAS,GAAG,CAAC,IAAU;QACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpB,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEd,uFAAuF;IACvF,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,kEAAkE;QAClE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;IAC3F,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IAEzE,yEAAyE;IACzE,oEAAoE;IAEpE,wEAAwE;IACxE,qEAAqE;IACrE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,2DAA2D;IAC3D,MAAM,SAAS,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAEnE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Special graph detection functions for planarity testing
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { Edge, Node } from "../../types";
|
|
5
5
|
/**
|
|
6
6
|
* Check if graph is K5 (complete graph with 5 nodes)
|
|
7
|
-
*
|
|
8
7
|
* @param nodes - List of nodes
|
|
9
8
|
* @param edges - List of edges
|
|
10
9
|
* @returns True if graph is K5
|
|
@@ -12,7 +11,6 @@ import { Node, Edge } from '../../types';
|
|
|
12
11
|
export declare function isK5(nodes: Node[], edges: Edge[]): boolean;
|
|
13
12
|
/**
|
|
14
13
|
* Check if graph is K3,3 (complete bipartite with 3,3 nodes)
|
|
15
|
-
*
|
|
16
14
|
* @param nodes - List of nodes
|
|
17
15
|
* @param edges - List of edges
|
|
18
16
|
* @returns True if graph is K3,3
|
|
@@ -20,9 +18,9 @@ export declare function isK5(nodes: Node[], edges: Edge[]): boolean;
|
|
|
20
18
|
export declare function isK33(nodes: Node[], edges: Edge[]): boolean;
|
|
21
19
|
/**
|
|
22
20
|
* Try to find a bipartite partition of the nodes
|
|
23
|
-
*
|
|
24
21
|
* @param nodes - List of nodes
|
|
25
22
|
* @param edges - List of edges
|
|
26
23
|
* @returns Array of two partitions, or null if not bipartite
|
|
27
24
|
*/
|
|
28
25
|
export declare function tryFindBipartitePartition(nodes: Node[], edges: Edge[]): [Node[], Node[]] | null;
|
|
26
|
+
//# sourceMappingURL=special-graphs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"special-graphs.d.ts","sourceRoot":"","sources":["../../../../src/algorithms/planarity/special-graphs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAC,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAiB1D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAwB3D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CA8C/F"}
|
|
@@ -3,63 +3,66 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* Check if graph is K5 (complete graph with 5 nodes)
|
|
6
|
-
*
|
|
7
6
|
* @param nodes - List of nodes
|
|
8
7
|
* @param edges - List of edges
|
|
9
8
|
* @returns True if graph is K5
|
|
10
9
|
*/
|
|
11
10
|
export function isK5(nodes, edges) {
|
|
12
|
-
if (nodes.length !== 5)
|
|
11
|
+
if (nodes.length !== 5) {
|
|
13
12
|
return false;
|
|
13
|
+
}
|
|
14
14
|
// K5 has exactly 10 edges
|
|
15
|
-
if (edges.length !== 10)
|
|
15
|
+
if (edges.length !== 10) {
|
|
16
16
|
return false;
|
|
17
|
+
}
|
|
17
18
|
// Check if every pair of distinct nodes is connected
|
|
18
19
|
for (let i = 0; i < nodes.length; i++) {
|
|
19
20
|
for (let j = i + 1; j < nodes.length; j++) {
|
|
20
|
-
const hasEdge = edges.some(e => (e[0] === nodes[i] && e[1] === nodes[j]) ||
|
|
21
|
-
|
|
22
|
-
if (!hasEdge)
|
|
21
|
+
const hasEdge = edges.some((e) => (e[0] === nodes[i] && e[1] === nodes[j]) || (e[0] === nodes[j] && e[1] === nodes[i]));
|
|
22
|
+
if (!hasEdge) {
|
|
23
23
|
return false;
|
|
24
|
+
}
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
return true;
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Check if graph is K3,3 (complete bipartite with 3,3 nodes)
|
|
30
|
-
*
|
|
31
31
|
* @param nodes - List of nodes
|
|
32
32
|
* @param edges - List of edges
|
|
33
33
|
* @returns True if graph is K3,3
|
|
34
34
|
*/
|
|
35
35
|
export function isK33(nodes, edges) {
|
|
36
|
-
if (nodes.length !== 6)
|
|
36
|
+
if (nodes.length !== 6) {
|
|
37
37
|
return false;
|
|
38
|
+
}
|
|
38
39
|
// K3,3 has exactly 9 edges
|
|
39
|
-
if (edges.length !== 9)
|
|
40
|
+
if (edges.length !== 9) {
|
|
40
41
|
return false;
|
|
42
|
+
}
|
|
41
43
|
// Try to find a bipartite partition
|
|
42
44
|
const nodePartitions = tryFindBipartitePartition(nodes, edges);
|
|
43
|
-
if (!nodePartitions)
|
|
45
|
+
if (!nodePartitions) {
|
|
44
46
|
return false;
|
|
47
|
+
}
|
|
45
48
|
const [part1, part2] = nodePartitions;
|
|
46
49
|
// Check if both partitions have size 3
|
|
47
|
-
if (part1.length !== 3 || part2.length !== 3)
|
|
50
|
+
if (part1.length !== 3 || part2.length !== 3) {
|
|
48
51
|
return false;
|
|
52
|
+
}
|
|
49
53
|
// Check if every node in part1 is connected to every node in part2
|
|
50
54
|
for (const n1 of part1) {
|
|
51
55
|
for (const n2 of part2) {
|
|
52
|
-
const hasEdge = edges.some(e => (e[0] === n1 && e[1] === n2) ||
|
|
53
|
-
|
|
54
|
-
if (!hasEdge)
|
|
56
|
+
const hasEdge = edges.some((e) => (e[0] === n1 && e[1] === n2) || (e[0] === n2 && e[1] === n1));
|
|
57
|
+
if (!hasEdge) {
|
|
55
58
|
return false;
|
|
59
|
+
}
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
return true;
|
|
59
63
|
}
|
|
60
64
|
/**
|
|
61
65
|
* Try to find a bipartite partition of the nodes
|
|
62
|
-
*
|
|
63
66
|
* @param nodes - List of nodes
|
|
64
67
|
* @param edges - List of edges
|
|
65
68
|
* @returns Array of two partitions, or null if not bipartite
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"special-graphs.js","sourceRoot":"","sources":["../../../../src/algorithms/planarity/special-graphs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH
|
|
1
|
+
{"version":3,"file":"special-graphs.js","sourceRoot":"","sources":["../../../../src/algorithms/planarity/special-graphs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Basic graph generation functions
|
|
3
3
|
*/
|
|
4
|
-
import { Graph } from
|
|
4
|
+
import { Graph } from "../types";
|
|
5
5
|
/**
|
|
6
6
|
* Create a complete graph with n nodes
|
|
7
7
|
* @param n - Number of nodes
|
|
@@ -26,3 +26,4 @@ export declare function starGraph(n: number): Graph;
|
|
|
26
26
|
* @returns Graph object with wheel topology
|
|
27
27
|
*/
|
|
28
28
|
export declare function wheelGraph(n: number): Graph;
|
|
29
|
+
//# sourceMappingURL=basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/generators/basic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAO,KAAK,EAAQ,MAAM,UAAU,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAc9C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAY3C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAa1C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAqB3C"}
|
|
@@ -16,7 +16,7 @@ export function completeGraph(n) {
|
|
|
16
16
|
}
|
|
17
17
|
return {
|
|
18
18
|
nodes: () => nodes,
|
|
19
|
-
edges: () => edges
|
|
19
|
+
edges: () => edges,
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
@@ -32,7 +32,7 @@ export function cycleGraph(n) {
|
|
|
32
32
|
}
|
|
33
33
|
return {
|
|
34
34
|
nodes: () => nodes,
|
|
35
|
-
edges: () => edges
|
|
35
|
+
edges: () => edges,
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
@@ -49,7 +49,7 @@ export function starGraph(n) {
|
|
|
49
49
|
}
|
|
50
50
|
return {
|
|
51
51
|
nodes: () => nodes,
|
|
52
|
-
edges: () => edges
|
|
52
|
+
edges: () => edges,
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
@@ -73,7 +73,7 @@ export function wheelGraph(n) {
|
|
|
73
73
|
}
|
|
74
74
|
return {
|
|
75
75
|
nodes: () => nodes,
|
|
76
|
-
edges: () => edges
|
|
76
|
+
edges: () => edges,
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
//# sourceMappingURL=basic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/generators/basic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS;
|
|
1
|
+
{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../src/generators/basic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS;IACnC,MAAM,KAAK,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS;IAChC,MAAM,KAAK,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS;IAC/B,MAAM,KAAK,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,uCAAuC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS;IAChC,MAAM,KAAK,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,2CAA2C;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACR,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;AACN,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bipartite graph generation function
|
|
3
3
|
*/
|
|
4
|
-
import { Graph, Node } from
|
|
4
|
+
import { Graph, Node } from "../types";
|
|
5
5
|
/**
|
|
6
6
|
* Create a bipartite graph with two sets of nodes
|
|
7
7
|
* @param n1 - Number of nodes in first set
|
|
@@ -14,3 +14,4 @@ export declare function bipartiteGraph(n1: number, n2: number, p: number, seed?:
|
|
|
14
14
|
setA: Node[];
|
|
15
15
|
setB: Node[];
|
|
16
16
|
};
|
|
17
|
+
//# sourceMappingURL=bipartite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bipartite.d.ts","sourceRoot":"","sources":["../../../src/generators/bipartite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,IAAI,CAAC,EAAE,MAAM,GACd,KAAK,GAAG;IAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,EAAE,CAAA;CAAE,CA+BxC"}
|
|
@@ -16,7 +16,7 @@ export function bipartiteGraph(n1, n2, p, seed) {
|
|
|
16
16
|
const edges = [];
|
|
17
17
|
// Simple deterministic pseudo-random if seed provided
|
|
18
18
|
let currentSeed = seed;
|
|
19
|
-
|
|
19
|
+
const random = seed !== undefined
|
|
20
20
|
? () => {
|
|
21
21
|
currentSeed = (currentSeed * 9301 + 49297) % 233280;
|
|
22
22
|
return currentSeed / 233280;
|
|
@@ -34,7 +34,7 @@ export function bipartiteGraph(n1, n2, p, seed) {
|
|
|
34
34
|
nodes: () => nodes,
|
|
35
35
|
edges: () => edges,
|
|
36
36
|
setA,
|
|
37
|
-
setB
|
|
37
|
+
setB,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
//# sourceMappingURL=bipartite.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bipartite.js","sourceRoot":"","sources":["../../../src/generators/bipartite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,
|
|
1
|
+
{"version":3,"file":"bipartite.js","sourceRoot":"","sources":["../../../src/generators/bipartite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC1B,EAAU,EACV,EAAU,EACV,CAAS,EACT,IAAa;IAEb,MAAM,IAAI,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,IAAI,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,sDAAsD;IACtD,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,MAAM,MAAM,GACR,IAAI,KAAK,SAAS;QACd,CAAC,CAAC,GAAG,EAAE;YACD,WAAW,GAAG,CAAE,WAAsB,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;YAChE,OAAO,WAAW,GAAG,MAAM,CAAC;QAChC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAEtB,kCAAkC;IAClC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,IAAI;QACJ,IAAI;KACP,CAAC;AACN,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Grid graph generation function
|
|
3
3
|
*/
|
|
4
|
-
import { Graph } from
|
|
4
|
+
import { Graph } from "../types";
|
|
5
5
|
/**
|
|
6
6
|
* Create a grid graph with rows x cols nodes
|
|
7
7
|
* @param rows - Number of rows
|
|
@@ -9,3 +9,4 @@ import { Graph } from '../types';
|
|
|
9
9
|
* @returns Graph object with grid topology
|
|
10
10
|
*/
|
|
11
11
|
export declare function gridGraph(rows: number, cols: number): Graph;
|
|
12
|
+
//# sourceMappingURL=grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/generators/grid.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAO,KAAK,EAAQ,MAAM,UAAU,CAAC;AAE5C;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CA6B3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/generators/grid.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY;
|
|
1
|
+
{"version":3,"file":"grid.js","sourceRoot":"","sources":["../../../src/generators/grid.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY;IAChD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,eAAe;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,eAAe;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,4BAA4B;YAC5B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,6BAA6B;YAC7B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;AACN,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Re-export all graph generation functions
|
|
3
3
|
*/
|
|
4
|
-
export { completeGraph, cycleGraph, starGraph, wheelGraph } from
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export { scaleFreeGraph } from
|
|
4
|
+
export { completeGraph, cycleGraph, starGraph, wheelGraph } from "./basic";
|
|
5
|
+
export { bipartiteGraph } from "./bipartite";
|
|
6
|
+
export { gridGraph } from "./grid";
|
|
7
|
+
export { randomGraph } from "./random";
|
|
8
|
+
export { scaleFreeGraph } from "./scale-free";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Re-export all graph generation functions
|
|
3
3
|
*/
|
|
4
|
-
export { completeGraph, cycleGraph, starGraph, wheelGraph } from
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export { scaleFreeGraph } from
|
|
4
|
+
export { completeGraph, cycleGraph, starGraph, wheelGraph } from "./basic";
|
|
5
|
+
export { bipartiteGraph } from "./bipartite";
|
|
6
|
+
export { gridGraph } from "./grid";
|
|
7
|
+
export { randomGraph } from "./random";
|
|
8
|
+
export { scaleFreeGraph } from "./scale-free";
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Random graph generation function
|
|
3
3
|
*/
|
|
4
|
-
import { Graph } from
|
|
4
|
+
import { Graph } from "../types";
|
|
5
5
|
/**
|
|
6
6
|
* Create a random graph with n nodes and given edge probability
|
|
7
7
|
* @param n - Number of nodes
|
|
@@ -10,3 +10,4 @@ import { Graph } from '../types';
|
|
|
10
10
|
* @returns Graph object with random edges
|
|
11
11
|
*/
|
|
12
12
|
export declare function randomGraph(n: number, p: number, seed?: number): Graph;
|
|
13
|
+
//# sourceMappingURL=random.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/generators/random.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAO,KAAK,EAAQ,MAAM,UAAU,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CA0BtE"}
|
|
@@ -13,7 +13,7 @@ export function randomGraph(n, p, seed) {
|
|
|
13
13
|
const edges = [];
|
|
14
14
|
// Simple deterministic pseudo-random if seed provided
|
|
15
15
|
let currentSeed = seed;
|
|
16
|
-
|
|
16
|
+
const random = seed !== undefined
|
|
17
17
|
? () => {
|
|
18
18
|
currentSeed = (currentSeed * 9301 + 49297) % 233280;
|
|
19
19
|
return currentSeed / 233280;
|
|
@@ -28,7 +28,7 @@ export function randomGraph(n, p, seed) {
|
|
|
28
28
|
}
|
|
29
29
|
return {
|
|
30
30
|
nodes: () => nodes,
|
|
31
|
-
edges: () => edges
|
|
31
|
+
edges: () => edges,
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
34
|
//# sourceMappingURL=random.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/generators/random.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,IAAa;
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/generators/random.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,IAAa;IAC3D,MAAM,KAAK,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,EAAE,CAAC;IAEzB,sDAAsD;IACtD,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,MAAM,MAAM,GACR,IAAI,KAAK,SAAS;QACd,CAAC,CAAC,GAAG,EAAE;YACD,WAAW,GAAG,CAAE,WAAsB,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;YAChE,OAAO,WAAW,GAAG,MAAM,CAAC;QAChC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;AACN,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Scale-free graph generation function
|
|
3
3
|
*/
|
|
4
|
-
import { Graph } from
|
|
4
|
+
import { Graph } from "../types";
|
|
5
5
|
/**
|
|
6
6
|
* Create a scale-free graph using Barabási-Albert model
|
|
7
7
|
* @param n - Total number of nodes
|
|
@@ -10,3 +10,4 @@ import { Graph } from '../types';
|
|
|
10
10
|
* @returns Graph object with scale-free properties
|
|
11
11
|
*/
|
|
12
12
|
export declare function scaleFreeGraph(n: number, m: number, seed?: number): Graph;
|
|
13
|
+
//# sourceMappingURL=scale-free.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scale-free.d.ts","sourceRoot":"","sources":["../../../src/generators/scale-free.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAO,KAAK,EAAQ,MAAM,UAAU,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CA2DzE"}
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export function scaleFreeGraph(n, m, seed) {
|
|
12
12
|
if (m >= n) {
|
|
13
|
-
throw new Error(
|
|
13
|
+
throw new Error("m must be less than n");
|
|
14
14
|
}
|
|
15
15
|
const nodes = Array.from({ length: n }, (_, i) => i);
|
|
16
16
|
const edges = [];
|
|
17
17
|
const degrees = new Array(n).fill(0);
|
|
18
18
|
// Simple deterministic pseudo-random if seed provided
|
|
19
19
|
let currentSeed = seed;
|
|
20
|
-
|
|
20
|
+
const random = seed !== undefined
|
|
21
21
|
? () => {
|
|
22
22
|
currentSeed = (currentSeed * 9301 + 49297) % 233280;
|
|
23
23
|
return currentSeed / 233280;
|
|
@@ -37,7 +37,7 @@ export function scaleFreeGraph(n, m, seed) {
|
|
|
37
37
|
const totalDegree = degrees.reduce((sum, d) => sum + d, 0);
|
|
38
38
|
// Choose m targets based on preferential attachment
|
|
39
39
|
while (targets.size < m) {
|
|
40
|
-
|
|
40
|
+
const r = random() * totalDegree;
|
|
41
41
|
let cumSum = 0;
|
|
42
42
|
for (let j = 0; j < i; j++) {
|
|
43
43
|
cumSum += degrees[j];
|
|
@@ -56,7 +56,7 @@ export function scaleFreeGraph(n, m, seed) {
|
|
|
56
56
|
}
|
|
57
57
|
return {
|
|
58
58
|
nodes: () => nodes,
|
|
59
|
-
edges: () => edges
|
|
59
|
+
edges: () => edges,
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
//# sourceMappingURL=scale-free.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scale-free.js","sourceRoot":"","sources":["../../../src/generators/scale-free.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS,EAAE,IAAa;
|
|
1
|
+
{"version":3,"file":"scale-free.js","sourceRoot":"","sources":["../../../src/generators/scale-free.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,CAAS,EAAE,CAAS,EAAE,IAAa;IAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,GAAW,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAErC,sDAAsD;IACtD,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,MAAM,MAAM,GACR,IAAI,KAAK,SAAS;QACd,CAAC,CAAC,GAAG,EAAE;YACD,WAAW,GAAG,CAAE,WAAsB,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;YAChE,OAAO,WAAW,GAAG,MAAM,CAAC;QAChC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAEtB,yCAAyC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3E,oDAAoD;QACpD,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,WAAW,CAAC;YACjC,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAW,CAAC;gBAC/B,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACf,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;QAClB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;AACN,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* This file exports the complete public API, maintaining
|
|
5
5
|
* compatibility with the original layout.ts file.
|
|
6
6
|
*/
|
|
7
|
-
export * from
|
|
8
|
-
export { rescaleLayout, rescaleLayoutDict } from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
7
|
+
export * from "./types";
|
|
8
|
+
export { rescaleLayout, rescaleLayoutDict } from "./utils/rescale";
|
|
9
|
+
export * from "./layouts";
|
|
10
|
+
export * from "./generators";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGnE,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* compatibility with the original layout.ts file.
|
|
6
6
|
*/
|
|
7
7
|
// Re-export all types
|
|
8
|
-
export * from
|
|
8
|
+
export * from "./types";
|
|
9
9
|
// Re-export utilities that are part of the public API
|
|
10
|
-
export { rescaleLayout, rescaleLayoutDict } from
|
|
10
|
+
export { rescaleLayout, rescaleLayoutDict } from "./utils/rescale";
|
|
11
11
|
// Re-export all layout algorithms
|
|
12
|
-
export * from
|
|
12
|
+
export * from "./layouts";
|
|
13
13
|
// Re-export all graph generation functions
|
|
14
|
-
export * from
|
|
14
|
+
export * from "./generators";
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/layouts/basic/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Random layout algorithm
|
|
3
3
|
*/
|
|
4
|
-
import { Graph, Node, PositionMap } from
|
|
4
|
+
import { Graph, Node, PositionMap } from "../../types";
|
|
5
5
|
/**
|
|
6
6
|
* Position nodes uniformly at random in the unit square.
|
|
7
|
-
*
|
|
8
7
|
* @param G - Graph or list of nodes
|
|
9
8
|
* @param center - Coordinate pair around which to center the layout
|
|
10
9
|
* @param dim - Dimension of layout
|
|
@@ -12,3 +11,4 @@ import { Graph, Node, PositionMap } from '../../types';
|
|
|
12
11
|
* @returns Positions dictionary keyed by node
|
|
13
12
|
*/
|
|
14
13
|
export declare function randomLayout(G: Graph | Node[], center?: number[] | null, dim?: number, seed?: number | null): PositionMap;
|
|
14
|
+
//# sourceMappingURL=random.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../../src/layouts/basic/random.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAKvD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CACxB,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,EACjB,MAAM,GAAE,MAAM,EAAE,GAAG,IAAW,EAC9B,GAAG,GAAE,MAAU,EACf,IAAI,GAAE,MAAM,GAAG,IAAW,GAC3B,WAAW,CAab"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Random layout algorithm
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { RandomNumberGenerator } from
|
|
4
|
+
import { getNodesFromGraph } from "../../utils/graph";
|
|
5
|
+
import { _processParams } from "../../utils/params";
|
|
6
|
+
import { RandomNumberGenerator } from "../../utils/random";
|
|
7
7
|
/**
|
|
8
8
|
* Position nodes uniformly at random in the unit square.
|
|
9
|
-
*
|
|
10
9
|
* @param G - Graph or list of nodes
|
|
11
10
|
* @param center - Coordinate pair around which to center the layout
|
|
12
11
|
* @param dim - Dimension of layout
|
|
@@ -16,7 +15,7 @@ import { RandomNumberGenerator } from '../../utils/random';
|
|
|
16
15
|
export function randomLayout(G, center = null, dim = 2, seed = null) {
|
|
17
16
|
const processed = _processParams(G, center, dim);
|
|
18
17
|
const nodes = getNodesFromGraph(processed.G);
|
|
19
|
-
center = processed
|
|
18
|
+
({ center } = processed);
|
|
20
19
|
const rng = new RandomNumberGenerator(seed ?? undefined);
|
|
21
20
|
const pos = {};
|
|
22
21
|
nodes.forEach((node) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../src/layouts/basic/random.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../src/layouts/basic/random.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CACxB,CAAiB,EACjB,SAA0B,IAAI,EAC9B,MAAc,CAAC,EACf,OAAsB,IAAI;IAE1B,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAEzB,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;IACzD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAE5B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,GAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAc,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACf,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { Graph, PositionMap } from
|
|
1
|
+
import type { Graph, PositionMap } from "../../types";
|
|
2
2
|
/**
|
|
3
3
|
* Layout algorithm with attractive and repulsive forces (ARF).
|
|
4
|
-
*
|
|
5
4
|
* @param G - Graph
|
|
6
5
|
* @param pos - Initial positions for nodes
|
|
7
6
|
* @param scaling - Scale factor for positions
|
|
@@ -11,3 +10,4 @@ import type { Graph, PositionMap } from '../../types';
|
|
|
11
10
|
* @returns Positions dictionary keyed by node
|
|
12
11
|
*/
|
|
13
12
|
export declare function arfLayout(G: Graph, pos?: PositionMap | null, scaling?: number, a?: number, maxIter?: number, seed?: number | null): PositionMap;
|
|
13
|
+
//# sourceMappingURL=arf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arf.d.ts","sourceRoot":"","sources":["../../../../src/layouts/force-directed/arf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAQ,WAAW,EAAE,MAAM,aAAa,CAAC;AAK5D;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACrB,CAAC,EAAE,KAAK,EACR,GAAG,GAAE,WAAW,GAAG,IAAW,EAC9B,OAAO,GAAE,MAAU,EACnB,CAAC,GAAE,MAAY,EACf,OAAO,GAAE,MAAa,EACtB,IAAI,GAAE,MAAM,GAAG,IAAW,GAC3B,WAAW,CA6Gb"}
|