@graphty/layout 1.2.5 → 1.2.6

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.
Files changed (151) hide show
  1. package/README.md +57 -1
  2. package/dist/layout.js +1762 -0
  3. package/dist/layout.js.map +1 -0
  4. package/package.json +2 -1
  5. package/dist/src/algorithms/index.d.ts +0 -5
  6. package/dist/src/algorithms/index.js +0 -6
  7. package/dist/src/algorithms/index.js.map +0 -1
  8. package/dist/src/algorithms/optimization/index.d.ts +0 -7
  9. package/dist/src/algorithms/optimization/index.js +0 -7
  10. package/dist/src/algorithms/optimization/index.js.map +0 -1
  11. package/dist/src/algorithms/optimization/kamada-kawai-solver.d.ts +0 -32
  12. package/dist/src/algorithms/optimization/kamada-kawai-solver.js +0 -176
  13. package/dist/src/algorithms/optimization/kamada-kawai-solver.js.map +0 -1
  14. package/dist/src/algorithms/optimization/lbfgs.d.ts +0 -13
  15. package/dist/src/algorithms/optimization/lbfgs.js +0 -56
  16. package/dist/src/algorithms/optimization/lbfgs.js.map +0 -1
  17. package/dist/src/algorithms/optimization/line-search.d.ts +0 -15
  18. package/dist/src/algorithms/optimization/line-search.js +0 -37
  19. package/dist/src/algorithms/optimization/line-search.js.map +0 -1
  20. package/dist/src/algorithms/optimization/types.d.ts +0 -5
  21. package/dist/src/algorithms/optimization/types.js +0 -5
  22. package/dist/src/algorithms/optimization/types.js.map +0 -1
  23. package/dist/src/algorithms/planarity/check.d.ts +0 -17
  24. package/dist/src/algorithms/planarity/check.js +0 -30
  25. package/dist/src/algorithms/planarity/check.js.map +0 -1
  26. package/dist/src/algorithms/planarity/embedding.d.ts +0 -29
  27. package/dist/src/algorithms/planarity/embedding.js +0 -179
  28. package/dist/src/algorithms/planarity/embedding.js.map +0 -1
  29. package/dist/src/algorithms/planarity/index.d.ts +0 -7
  30. package/dist/src/algorithms/planarity/index.js +0 -8
  31. package/dist/src/algorithms/planarity/index.js.map +0 -1
  32. package/dist/src/algorithms/planarity/lr-test.d.ts +0 -15
  33. package/dist/src/algorithms/planarity/lr-test.js +0 -54
  34. package/dist/src/algorithms/planarity/lr-test.js.map +0 -1
  35. package/dist/src/algorithms/planarity/special-graphs.d.ts +0 -28
  36. package/dist/src/algorithms/planarity/special-graphs.js +0 -108
  37. package/dist/src/algorithms/planarity/special-graphs.js.map +0 -1
  38. package/dist/src/generators/basic.d.ts +0 -28
  39. package/dist/src/generators/basic.js +0 -79
  40. package/dist/src/generators/basic.js.map +0 -1
  41. package/dist/src/generators/bipartite.d.ts +0 -16
  42. package/dist/src/generators/bipartite.js +0 -40
  43. package/dist/src/generators/bipartite.js.map +0 -1
  44. package/dist/src/generators/grid.d.ts +0 -11
  45. package/dist/src/generators/grid.js +0 -37
  46. package/dist/src/generators/grid.js.map +0 -1
  47. package/dist/src/generators/index.d.ts +0 -8
  48. package/dist/src/generators/index.js +0 -9
  49. package/dist/src/generators/index.js.map +0 -1
  50. package/dist/src/generators/random.d.ts +0 -12
  51. package/dist/src/generators/random.js +0 -34
  52. package/dist/src/generators/random.js.map +0 -1
  53. package/dist/src/generators/scale-free.d.ts +0 -12
  54. package/dist/src/generators/scale-free.js +0 -62
  55. package/dist/src/generators/scale-free.js.map +0 -1
  56. package/dist/src/index.d.ts +0 -10
  57. package/dist/src/index.js +0 -15
  58. package/dist/src/index.js.map +0 -1
  59. package/dist/src/layouts/basic/index.d.ts +0 -4
  60. package/dist/src/layouts/basic/index.js +0 -5
  61. package/dist/src/layouts/basic/index.js.map +0 -1
  62. package/dist/src/layouts/basic/random.d.ts +0 -14
  63. package/dist/src/layouts/basic/random.js +0 -27
  64. package/dist/src/layouts/basic/random.js.map +0 -1
  65. package/dist/src/layouts/force-directed/arf.d.ts +0 -13
  66. package/dist/src/layouts/force-directed/arf.js +0 -103
  67. package/dist/src/layouts/force-directed/arf.js.map +0 -1
  68. package/dist/src/layouts/force-directed/forceatlas2.d.ts +0 -22
  69. package/dist/src/layouts/force-directed/forceatlas2.js +0 -340
  70. package/dist/src/layouts/force-directed/forceatlas2.js.map +0 -1
  71. package/dist/src/layouts/force-directed/fruchterman-reingold.d.ts +0 -19
  72. package/dist/src/layouts/force-directed/fruchterman-reingold.js +0 -131
  73. package/dist/src/layouts/force-directed/fruchterman-reingold.js.map +0 -1
  74. package/dist/src/layouts/force-directed/index.d.ts +0 -8
  75. package/dist/src/layouts/force-directed/index.js +0 -9
  76. package/dist/src/layouts/force-directed/index.js.map +0 -1
  77. package/dist/src/layouts/force-directed/kamada-kawai.d.ts +0 -15
  78. package/dist/src/layouts/force-directed/kamada-kawai.js +0 -87
  79. package/dist/src/layouts/force-directed/kamada-kawai.js.map +0 -1
  80. package/dist/src/layouts/force-directed/spring.d.ts +0 -19
  81. package/dist/src/layouts/force-directed/spring.js +0 -23
  82. package/dist/src/layouts/force-directed/spring.js.map +0 -1
  83. package/dist/src/layouts/geometric/circular.d.ts +0 -14
  84. package/dist/src/layouts/geometric/circular.js +0 -67
  85. package/dist/src/layouts/geometric/circular.js.map +0 -1
  86. package/dist/src/layouts/geometric/index.d.ts +0 -6
  87. package/dist/src/layouts/geometric/index.js +0 -7
  88. package/dist/src/layouts/geometric/index.js.map +0 -1
  89. package/dist/src/layouts/geometric/shell.d.ts +0 -15
  90. package/dist/src/layouts/geometric/shell.js +0 -67
  91. package/dist/src/layouts/geometric/shell.js.map +0 -1
  92. package/dist/src/layouts/geometric/spiral.d.ts +0 -16
  93. package/dist/src/layouts/geometric/spiral.js +0 -73
  94. package/dist/src/layouts/geometric/spiral.js.map +0 -1
  95. package/dist/src/layouts/hierarchical/bfs.d.ts +0 -12
  96. package/dist/src/layouts/hierarchical/bfs.js +0 -62
  97. package/dist/src/layouts/hierarchical/bfs.js.map +0 -1
  98. package/dist/src/layouts/hierarchical/bipartite.d.ts +0 -16
  99. package/dist/src/layouts/hierarchical/bipartite.js +0 -72
  100. package/dist/src/layouts/hierarchical/bipartite.js.map +0 -1
  101. package/dist/src/layouts/hierarchical/index.d.ts +0 -6
  102. package/dist/src/layouts/hierarchical/index.js +0 -7
  103. package/dist/src/layouts/hierarchical/index.js.map +0 -1
  104. package/dist/src/layouts/hierarchical/multipartite.d.ts +0 -12
  105. package/dist/src/layouts/hierarchical/multipartite.js +0 -73
  106. package/dist/src/layouts/hierarchical/multipartite.js.map +0 -1
  107. package/dist/src/layouts/index.d.ts +0 -8
  108. package/dist/src/layouts/index.js +0 -9
  109. package/dist/src/layouts/index.js.map +0 -1
  110. package/dist/src/layouts/specialized/index.d.ts +0 -5
  111. package/dist/src/layouts/specialized/index.js +0 -6
  112. package/dist/src/layouts/specialized/index.js.map +0 -1
  113. package/dist/src/layouts/specialized/planar.d.ts +0 -14
  114. package/dist/src/layouts/specialized/planar.js +0 -47
  115. package/dist/src/layouts/specialized/planar.js.map +0 -1
  116. package/dist/src/layouts/specialized/spectral.d.ts +0 -14
  117. package/dist/src/layouts/specialized/spectral.js +0 -106
  118. package/dist/src/layouts/specialized/spectral.js.map +0 -1
  119. package/dist/src/types/embedding.d.ts +0 -9
  120. package/dist/src/types/embedding.js +0 -5
  121. package/dist/src/types/embedding.js.map +0 -1
  122. package/dist/src/types/graph.d.ts +0 -10
  123. package/dist/src/types/graph.js +0 -5
  124. package/dist/src/types/graph.js.map +0 -1
  125. package/dist/src/types/index.d.ts +0 -6
  126. package/dist/src/types/index.js +0 -7
  127. package/dist/src/types/index.js.map +0 -1
  128. package/dist/src/types/layout.d.ts +0 -6
  129. package/dist/src/types/layout.js +0 -5
  130. package/dist/src/types/layout.js.map +0 -1
  131. package/dist/src/utils/graph.d.ts +0 -34
  132. package/dist/src/utils/graph.js +0 -69
  133. package/dist/src/utils/graph.js.map +0 -1
  134. package/dist/src/utils/index.d.ts +0 -8
  135. package/dist/src/utils/index.js +0 -9
  136. package/dist/src/utils/index.js.map +0 -1
  137. package/dist/src/utils/numpy.d.ts +0 -17
  138. package/dist/src/utils/numpy.js +0 -101
  139. package/dist/src/utils/numpy.js.map +0 -1
  140. package/dist/src/utils/params.d.ts +0 -17
  141. package/dist/src/utils/params.js +0 -22
  142. package/dist/src/utils/params.js.map +0 -1
  143. package/dist/src/utils/random.d.ts +0 -14
  144. package/dist/src/utils/random.js +0 -42
  145. package/dist/src/utils/random.js.map +0 -1
  146. package/dist/src/utils/rescale.d.ts +0 -21
  147. package/dist/src/utils/rescale.js +0 -194
  148. package/dist/src/utils/rescale.js.map +0 -1
  149. package/dist/vitest.config.d.ts +0 -2
  150. package/dist/vitest.config.js +0 -30
  151. package/dist/vitest.config.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"kamada-kawai-solver.js","sourceRoot":"","sources":["../../../../src/algorithms/optimization/kamada-kawai-solver.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * L-BFGS optimization utilities
3
- */
4
- /**
5
- * Compute the search direction using L-BFGS approximation
6
- *
7
- * @param grad - Current gradient
8
- * @param sList - List of position differences (s_k)
9
- * @param yList - List of gradient differences (y_k)
10
- * @param m - Memory size
11
- * @returns Direction vector
12
- */
13
- export declare function _lbfgsDirection(grad: number[], sList: number[][], yList: number[][], m: number): number[];
@@ -1,56 +0,0 @@
1
- /**
2
- * L-BFGS optimization utilities
3
- */
4
- /**
5
- * Compute the search direction using L-BFGS approximation
6
- *
7
- * @param grad - Current gradient
8
- * @param sList - List of position differences (s_k)
9
- * @param yList - List of gradient differences (y_k)
10
- * @param m - Memory size
11
- * @returns Direction vector
12
- */
13
- export function _lbfgsDirection(grad, sList, yList, m) {
14
- if (sList.length === 0) {
15
- // First iteration - use negative gradient
16
- return grad.map(g => -g);
17
- }
18
- const q = grad.slice();
19
- const alpha = Array(sList.length).fill(0);
20
- const rho = [];
21
- // Compute rho values
22
- for (let i = 0; i < sList.length; i++) {
23
- const s = sList[i];
24
- const y = yList[i];
25
- rho.push(1 / y.reduce((sum, val, j) => sum + val * s[j], 0));
26
- }
27
- // Forward pass
28
- for (let i = sList.length - 1; i >= 0; i--) {
29
- const s = sList[i];
30
- alpha[i] = rho[i] * s.reduce((sum, val, j) => sum + val * q[j], 0);
31
- for (let j = 0; j < q.length; j++) {
32
- q[j] -= alpha[i] * yList[i][j];
33
- }
34
- }
35
- // Scale initial Hessian approximation
36
- let gamma = 1;
37
- if (sList.length > 0 && yList.length > 0) {
38
- const y = yList[yList.length - 1];
39
- const s = sList[sList.length - 1];
40
- gamma = s.reduce((sum, val, i) => sum + val * y[i], 0) /
41
- y.reduce((sum, val) => sum + val * val, 0);
42
- }
43
- // Initialize direction with scaled negative gradient
44
- const direction = q.map(val => -gamma * val);
45
- // Backward pass
46
- for (let i = 0; i < sList.length; i++) {
47
- const s = sList[i];
48
- const y = yList[i];
49
- const beta = rho[i] * y.reduce((sum, val, j) => sum + val * direction[j], 0);
50
- for (let j = 0; j < direction.length; j++) {
51
- direction[j] += s[j] * (alpha[i] - beta);
52
- }
53
- }
54
- return direction;
55
- }
56
- //# sourceMappingURL=lbfgs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lbfgs.js","sourceRoot":"","sources":["../../../../src/algorithms/optimization/lbfgs.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Line search optimization utilities
3
- */
4
- /**
5
- * Backtracking line search to find step size
6
- *
7
- * @param x - Current position
8
- * @param direction - Search direction
9
- * @param f - Function value at current position
10
- * @param grad - Gradient at current position
11
- * @param func - Function to evaluate cost
12
- * @param alpha0 - Initial step size
13
- * @returns Optimal step size
14
- */
15
- export declare function _backtrackingLineSearch(x: number[], direction: number[], f: number, grad: number[], func: (x: number[]) => number, alpha0: number): number;
@@ -1,37 +0,0 @@
1
- /**
2
- * Line search optimization utilities
3
- */
4
- /**
5
- * Backtracking line search to find step size
6
- *
7
- * @param x - Current position
8
- * @param direction - Search direction
9
- * @param f - Function value at current position
10
- * @param grad - Gradient at current position
11
- * @param func - Function to evaluate cost
12
- * @param alpha0 - Initial step size
13
- * @returns Optimal step size
14
- */
15
- export function _backtrackingLineSearch(x, direction, f, grad, func, alpha0) {
16
- const c1 = 1e-4;
17
- const c2 = 0.9;
18
- const initialSlope = grad.reduce((sum, g, i) => sum + g * direction[i], 0);
19
- if (initialSlope >= 0) {
20
- return 1e-8; // Direction is not a descent direction
21
- }
22
- let alpha = alpha0;
23
- const maxIter = 20;
24
- for (let i = 0; i < maxIter; i++) {
25
- // Try step
26
- const newX = x.map((val, i) => val + alpha * direction[i]);
27
- const newF = func(newX);
28
- // Check sufficient decrease condition (Armijo condition)
29
- if (newF <= f + c1 * alpha * initialSlope) {
30
- return alpha;
31
- }
32
- // Reduce step size
33
- alpha *= c2;
34
- }
35
- return alpha; // Return last alpha even if not optimal
36
- }
37
- //# sourceMappingURL=line-search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"line-search.js","sourceRoot":"","sources":["../../../../src/algorithms/optimization/line-search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CACrC,CAAW,EACX,SAAmB,EACnB,CAAS,EACT,IAAc,EACd,IAA6B,EAC7B,MAAc;IAEd,MAAM,EAAE,GAAG,IAAI,CAAC;IAChB,MAAM,EAAE,GAAG,GAAG,CAAC;IACf,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3E,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,CAAE,uCAAuC;IACvD,CAAC;IAED,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,WAAW;QACX,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAExB,yDAAyD;QACzD,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,YAAY,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mBAAmB;QACnB,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,CAAE,wCAAwC;AACzD,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Type definitions for optimization algorithms
3
- */
4
- import { Node } from '../../types';
5
- export type DistanceMap = Record<Node, Record<Node, number>>;
@@ -1,5 +0,0 @@
1
- /**
2
- * Type definitions for optimization algorithms
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/algorithms/optimization/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Main planarity checking function
3
- */
4
- import { Graph, Node, Edge, Embedding } from '../../types';
5
- /**
6
- * Check if graph is planar using a simplified version of Boyer-Myrvold algorithm.
7
- * Returns planarity and embedding information.
8
- *
9
- * @param G - Graph
10
- * @param nodes - List of nodes
11
- * @param edges - List of edges
12
- * @returns Object containing isPlanar flag and embedding
13
- */
14
- export declare function checkPlanarity(G: Graph, nodes: Node[], edges: Edge[]): {
15
- isPlanar: boolean;
16
- embedding: Embedding | null;
17
- };
@@ -1,30 +0,0 @@
1
- /**
2
- * Main planarity checking function
3
- */
4
- import { isK5, isK33 } from './special-graphs';
5
- import { lrPlanarityTest } from './lr-test';
6
- import { createTriangulationEmbedding } from './embedding';
7
- /**
8
- * Check if graph is planar using a simplified version of Boyer-Myrvold algorithm.
9
- * Returns planarity and embedding information.
10
- *
11
- * @param G - Graph
12
- * @param nodes - List of nodes
13
- * @param edges - List of edges
14
- * @returns Object containing isPlanar flag and embedding
15
- */
16
- export function checkPlanarity(G, nodes, edges) {
17
- // For small graphs (n <= 4), all are planar
18
- if (nodes.length <= 4) {
19
- return { isPlanar: true, embedding: createTriangulationEmbedding(nodes, edges) };
20
- }
21
- // For K5 (complete graph with 5 nodes) and K3,3 (complete bipartite with 3,3 nodes)
22
- // these are not planar by Kuratowski's theorem
23
- if (isK5(nodes, edges) || isK33(nodes, edges)) {
24
- return { isPlanar: false, embedding: null };
25
- }
26
- // For other graphs, use LR algorithm (Left-Right Planarity Test)
27
- const result = lrPlanarityTest(nodes, edges);
28
- return result;
29
- }
30
- //# sourceMappingURL=check.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/algorithms/planarity/check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,CAAQ,EACR,KAAa,EACb,KAAa;IAEb,4CAA4C;IAC5C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,oFAAoF;IACpF,+CAA+C;IAC/C,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,iEAAiE;IACjE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Embedding functions for planar graphs
3
- */
4
- import { Node, Edge, Embedding, PositionMap } from '../../types';
5
- /**
6
- * Create a triangulation-based embedding for a planar graph
7
- *
8
- * @param nodes - List of nodes
9
- * @param edges - List of edges
10
- * @returns Embedding object
11
- */
12
- export declare function createTriangulationEmbedding(nodes: Node[], edges: Edge[]): Embedding;
13
- /**
14
- * Find a simple cycle in the graph (for outer face)
15
- *
16
- * @param nodes - List of nodes
17
- * @param edges - List of edges
18
- * @param adjMap - Adjacency map
19
- * @returns Cycle as array of nodes, or null if none found
20
- */
21
- export declare function findCycle(nodes: Node[], edges: Edge[], adjMap: Record<Node, Set<Node>>): Node[] | null;
22
- /**
23
- * Convert a combinatorial embedding to node positions
24
- *
25
- * @param embedding - The embedding object
26
- * @param nodes - List of nodes
27
- * @returns Dictionary mapping nodes to positions
28
- */
29
- export declare function combinatorialEmbeddingToPos(embedding: Embedding, nodes: Node[]): PositionMap;
@@ -1,179 +0,0 @@
1
- /**
2
- * Embedding functions for planar graphs
3
- */
4
- /**
5
- * Create a triangulation-based embedding for a planar graph
6
- *
7
- * @param nodes - List of nodes
8
- * @param edges - List of edges
9
- * @returns Embedding object
10
- */
11
- export function createTriangulationEmbedding(nodes, edges) {
12
- // Create a simple embedding using the incremental approach
13
- const embedding = {
14
- nodeOrder: [...nodes],
15
- faceList: [],
16
- nodePositions: {}
17
- };
18
- // Create a map of adjacent nodes
19
- const adjMap = {};
20
- for (const node of nodes) {
21
- adjMap[node] = new Set();
22
- }
23
- for (const [u, v] of edges) {
24
- adjMap[u].add(v);
25
- adjMap[v].add(u);
26
- }
27
- // Create outer face as a cycle (if possible)
28
- const outerFace = findCycle(nodes, edges, adjMap) || nodes;
29
- embedding.faceList.push(outerFace);
30
- // Position nodes on a convex polygon (outer face)
31
- const n = outerFace.length;
32
- for (let i = 0; i < n; i++) {
33
- const angle = 2 * Math.PI * i / n;
34
- embedding.nodePositions[outerFace[i]] = [Math.cos(angle), Math.sin(angle)];
35
- }
36
- // Position interior nodes using barycentric coordinates
37
- const interiorNodes = nodes.filter(node => !embedding.nodePositions[node]);
38
- for (const node of interiorNodes) {
39
- const neighbors = Array.from(adjMap[node]);
40
- if (neighbors.length === 0) {
41
- // Isolated node, place at center
42
- embedding.nodePositions[node] = [0, 0];
43
- }
44
- else {
45
- // Average position of neighbors that have positions
46
- let xSum = 0, ySum = 0, count = 0;
47
- for (const neighbor of neighbors) {
48
- if (embedding.nodePositions[neighbor]) {
49
- xSum += embedding.nodePositions[neighbor][0];
50
- ySum += embedding.nodePositions[neighbor][1];
51
- count++;
52
- }
53
- }
54
- if (count > 0) {
55
- // Place slightly away from center to avoid overlaps
56
- const jitter = 0.1 * Math.random();
57
- embedding.nodePositions[node] = [
58
- xSum / count + jitter * (Math.random() - 0.5),
59
- ySum / count + jitter * (Math.random() - 0.5)
60
- ];
61
- }
62
- else {
63
- // No neighbors have positions yet, place randomly inside unit circle
64
- const r = 0.5 * Math.random();
65
- const angle = 2 * Math.PI * Math.random();
66
- embedding.nodePositions[node] = [r * Math.cos(angle), r * Math.sin(angle)];
67
- }
68
- }
69
- }
70
- return embedding;
71
- }
72
- /**
73
- * Find a simple cycle in the graph (for outer face)
74
- *
75
- * @param nodes - List of nodes
76
- * @param edges - List of edges
77
- * @param adjMap - Adjacency map
78
- * @returns Cycle as array of nodes, or null if none found
79
- */
80
- export function findCycle(nodes, edges, adjMap) {
81
- if (nodes.length === 0)
82
- return null;
83
- if (nodes.length <= 2)
84
- return nodes; // Not a real cycle but handle it
85
- // Try to find a Hamiltonian cycle for simplicity (for small graphs)
86
- if (nodes.length <= 8) {
87
- const visited = new Set();
88
- const path = [];
89
- function hamiltonianCycleDFS(node) {
90
- path.push(node);
91
- visited.add(node);
92
- if (path.length === nodes.length) {
93
- // Check if it's a cycle (last node connects to first)
94
- if (adjMap[node].has(path[0])) {
95
- return true;
96
- }
97
- // Not a cycle
98
- visited.delete(node);
99
- path.pop();
100
- return false;
101
- }
102
- for (const neighbor of adjMap[node]) {
103
- if (!visited.has(neighbor)) {
104
- if (hamiltonianCycleDFS(neighbor)) {
105
- return true;
106
- }
107
- }
108
- }
109
- visited.delete(node);
110
- path.pop();
111
- return false;
112
- }
113
- if (hamiltonianCycleDFS(nodes[0])) {
114
- return path;
115
- }
116
- }
117
- // Fallback: try to find any cycle using DFS
118
- const visited = new Set();
119
- const parent = {};
120
- let cycleFound = null;
121
- function findCycleDFS(node, parentNode) {
122
- visited.add(node);
123
- for (const neighbor of adjMap[node]) {
124
- if (neighbor === parentNode)
125
- continue;
126
- if (visited.has(neighbor)) {
127
- // Found a cycle
128
- cycleFound = constructCycle(node, neighbor, parent);
129
- return true;
130
- }
131
- parent[neighbor] = node;
132
- if (findCycleDFS(neighbor, node)) {
133
- return true;
134
- }
135
- }
136
- return false;
137
- }
138
- function constructCycle(u, v, parent) {
139
- const cycle = [v, u];
140
- let current = u;
141
- while (parent[current] !== undefined && parent[current] !== v) {
142
- current = parent[current];
143
- cycle.push(current);
144
- }
145
- return cycle;
146
- }
147
- // Try to find a cycle
148
- for (const node of nodes) {
149
- if (!visited.has(node)) {
150
- parent[node] = null;
151
- if (findCycleDFS(node, null)) {
152
- break;
153
- }
154
- }
155
- }
156
- return cycleFound || nodes; // Fallback to all nodes if no cycle found
157
- }
158
- /**
159
- * Convert a combinatorial embedding to node positions
160
- *
161
- * @param embedding - The embedding object
162
- * @param nodes - List of nodes
163
- * @returns Dictionary mapping nodes to positions
164
- */
165
- export function combinatorialEmbeddingToPos(embedding, nodes) {
166
- const pos = {};
167
- // Use the positions from the embedding
168
- for (const node of nodes) {
169
- if (embedding.nodePositions[node]) {
170
- pos[node] = embedding.nodePositions[node];
171
- }
172
- else {
173
- // Fallback for any nodes without positions
174
- pos[node] = [0, 0];
175
- }
176
- }
177
- return pos;
178
- }
179
- //# sourceMappingURL=embedding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../../src/algorithms/planarity/embedding.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Re-export all planarity algorithms
3
- */
4
- export { checkPlanarity } from './check';
5
- export { isK5, isK33, tryFindBipartitePartition } from './special-graphs';
6
- export { lrPlanarityTest } from './lr-test';
7
- export { createTriangulationEmbedding, findCycle, combinatorialEmbeddingToPos } from './embedding';
@@ -1,8 +0,0 @@
1
- /**
2
- * Re-export all planarity algorithms
3
- */
4
- export { checkPlanarity } from './check';
5
- export { isK5, isK33, tryFindBipartitePartition } from './special-graphs';
6
- export { lrPlanarityTest } from './lr-test';
7
- export { createTriangulationEmbedding, findCycle, combinatorialEmbeddingToPos } from './embedding';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/algorithms/planarity/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,4BAA4B,EAC5B,SAAS,EACT,2BAA2B,EAC5B,MAAM,aAAa,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * Left-Right Planarity Test implementation
3
- */
4
- import { Node, Edge, Embedding } from '../../types';
5
- /**
6
- * Left-Right Planarity Test for general graphs
7
- *
8
- * @param nodes - List of nodes
9
- * @param edges - List of edges
10
- * @returns Object containing isPlanar flag and embedding
11
- */
12
- export declare function lrPlanarityTest(nodes: Node[], edges: Edge[]): {
13
- isPlanar: boolean;
14
- embedding: Embedding | null;
15
- };
@@ -1,54 +0,0 @@
1
- /**
2
- * Left-Right Planarity Test implementation
3
- */
4
- import { createTriangulationEmbedding } from './embedding';
5
- /**
6
- * Left-Right Planarity Test for general graphs
7
- *
8
- * @param nodes - List of nodes
9
- * @param edges - List of edges
10
- * @returns Object containing isPlanar flag and embedding
11
- */
12
- export function lrPlanarityTest(nodes, edges) {
13
- // Create adjacency list for the graph
14
- const adjList = {};
15
- for (const node of nodes) {
16
- adjList[node] = [];
17
- }
18
- for (const [u, v] of edges) {
19
- adjList[u].push(v);
20
- adjList[v].push(u);
21
- }
22
- // Step 1: Perform DFS to get an st-numbering (ordering of nodes)
23
- const visited = new Set();
24
- const ordering = [];
25
- function dfs(node) {
26
- visited.add(node);
27
- ordering.push(node);
28
- for (const neighbor of adjList[node]) {
29
- if (!visited.has(neighbor)) {
30
- dfs(neighbor);
31
- }
32
- }
33
- }
34
- // Start DFS from first node
35
- dfs(nodes[0]);
36
- // If the graph is disconnected, it's still planar but we need to handle each component
37
- if (ordering.length < nodes.length) {
38
- // Create a simple triangulation embedding for disconnected graphs
39
- return { isPlanar: true, embedding: createTriangulationEmbedding(nodes, edges) };
40
- }
41
- // Step 2: For a general implementation, we'll use a simplified approach
42
- // since this would normally require implementing the entire LR algorithm
43
- // For this implementation, since we can't fully implement Boyer-Myrvold,
44
- // we'll create a reasonable planar embedding for most planar graphs
45
- // We assume the graph is planar if it's sparse enough (|E| <= 3|V| - 6)
46
- // This is a necessary but not sufficient condition for planar graphs
47
- if (edges.length > 3 * nodes.length - 6) {
48
- return { isPlanar: false, embedding: null };
49
- }
50
- // Create a planar embedding using a triangulation approach
51
- const embedding = createTriangulationEmbedding(nodes, edges);
52
- return { isPlanar: true, embedding };
53
- }
54
- //# sourceMappingURL=lr-test.js.map
@@ -1 +0,0 @@
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,CAC7B,KAAa,EACb,KAAa;IAEb,sCAAsC;IACtC,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,iEAAiE;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAQ,CAAC;IAChC,MAAM,QAAQ,GAAW,EAAE,CAAC;IAE5B,SAAS,GAAG,CAAC,IAAU;QACrB,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;YACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,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;QACnC,kEAAkE;QAClE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACnF,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;QACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,2DAA2D;IAC3D,MAAM,SAAS,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAE7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Special graph detection functions for planarity testing
3
- */
4
- import { Node, Edge } from '../../types';
5
- /**
6
- * Check if graph is K5 (complete graph with 5 nodes)
7
- *
8
- * @param nodes - List of nodes
9
- * @param edges - List of edges
10
- * @returns True if graph is K5
11
- */
12
- export declare function isK5(nodes: Node[], edges: Edge[]): boolean;
13
- /**
14
- * Check if graph is K3,3 (complete bipartite with 3,3 nodes)
15
- *
16
- * @param nodes - List of nodes
17
- * @param edges - List of edges
18
- * @returns True if graph is K3,3
19
- */
20
- export declare function isK33(nodes: Node[], edges: Edge[]): boolean;
21
- /**
22
- * Try to find a bipartite partition of the nodes
23
- *
24
- * @param nodes - List of nodes
25
- * @param edges - List of edges
26
- * @returns Array of two partitions, or null if not bipartite
27
- */
28
- export declare function tryFindBipartitePartition(nodes: Node[], edges: Edge[]): [Node[], Node[]] | null;