@graphty/algorithms 1.2.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/README.md +375 -276
  2. package/dist/algorithms.d.ts +42 -2
  3. package/dist/algorithms.js +11402 -2
  4. package/dist/algorithms.js.map +1 -1
  5. package/dist/src/algorithms/centrality/betweenness.d.ts +14 -0
  6. package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -1
  7. package/dist/src/algorithms/centrality/betweenness.js +144 -169
  8. package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
  9. package/dist/src/algorithms/centrality/closeness.d.ts +35 -1
  10. package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -1
  11. package/dist/src/algorithms/centrality/closeness.js +70 -149
  12. package/dist/src/algorithms/centrality/closeness.js.map +1 -1
  13. package/dist/src/algorithms/centrality/degree.d.ts +7 -0
  14. package/dist/src/algorithms/centrality/degree.d.ts.map +1 -1
  15. package/dist/src/algorithms/centrality/degree.js +12 -9
  16. package/dist/src/algorithms/centrality/degree.js.map +1 -1
  17. package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts +57 -0
  18. package/dist/src/algorithms/centrality/delta-pagerank-simple.d.ts.map +1 -0
  19. package/dist/src/algorithms/centrality/delta-pagerank-simple.js +304 -0
  20. package/dist/src/algorithms/centrality/delta-pagerank-simple.js.map +1 -0
  21. package/dist/src/algorithms/centrality/delta-pagerank.d.ts +106 -0
  22. package/dist/src/algorithms/centrality/delta-pagerank.d.ts.map +1 -0
  23. package/dist/src/algorithms/centrality/delta-pagerank.js +320 -0
  24. package/dist/src/algorithms/centrality/delta-pagerank.js.map +1 -0
  25. package/dist/src/algorithms/centrality/eigenvector.d.ts +10 -3
  26. package/dist/src/algorithms/centrality/eigenvector.d.ts.map +1 -1
  27. package/dist/src/algorithms/centrality/eigenvector.js +11 -4
  28. package/dist/src/algorithms/centrality/eigenvector.js.map +1 -1
  29. package/dist/src/algorithms/centrality/hits.d.ts +10 -3
  30. package/dist/src/algorithms/centrality/hits.d.ts.map +1 -1
  31. package/dist/src/algorithms/centrality/hits.js +11 -4
  32. package/dist/src/algorithms/centrality/hits.js.map +1 -1
  33. package/dist/src/algorithms/centrality/index.d.ts +3 -1
  34. package/dist/src/algorithms/centrality/index.d.ts.map +1 -1
  35. package/dist/src/algorithms/centrality/index.js +2 -1
  36. package/dist/src/algorithms/centrality/index.js.map +1 -1
  37. package/dist/src/algorithms/centrality/katz.d.ts +10 -3
  38. package/dist/src/algorithms/centrality/katz.d.ts.map +1 -1
  39. package/dist/src/algorithms/centrality/katz.js +13 -8
  40. package/dist/src/algorithms/centrality/katz.js.map +1 -1
  41. package/dist/src/algorithms/centrality/pagerank.d.ts +31 -0
  42. package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -1
  43. package/dist/src/algorithms/centrality/pagerank.js +61 -1
  44. package/dist/src/algorithms/centrality/pagerank.js.map +1 -1
  45. package/dist/src/algorithms/community/girvan-newman.d.ts +2 -3
  46. package/dist/src/algorithms/community/girvan-newman.d.ts.map +1 -1
  47. package/dist/src/algorithms/community/girvan-newman.js +67 -57
  48. package/dist/src/algorithms/community/girvan-newman.js.map +1 -1
  49. package/dist/src/algorithms/community/index.d.ts +2 -0
  50. package/dist/src/algorithms/community/index.d.ts.map +1 -1
  51. package/dist/src/algorithms/community/index.js.map +1 -1
  52. package/dist/src/algorithms/community/label-propagation.d.ts +11 -4
  53. package/dist/src/algorithms/community/label-propagation.d.ts.map +1 -1
  54. package/dist/src/algorithms/community/label-propagation.js +60 -38
  55. package/dist/src/algorithms/community/label-propagation.js.map +1 -1
  56. package/dist/src/algorithms/community/leiden.d.ts +3 -3
  57. package/dist/src/algorithms/community/leiden.d.ts.map +1 -1
  58. package/dist/src/algorithms/community/leiden.js +70 -44
  59. package/dist/src/algorithms/community/leiden.js.map +1 -1
  60. package/dist/src/algorithms/community/louvain-optimized.d.ts +149 -0
  61. package/dist/src/algorithms/community/louvain-optimized.d.ts.map +1 -0
  62. package/dist/src/algorithms/community/louvain-optimized.js +338 -0
  63. package/dist/src/algorithms/community/louvain-optimized.js.map +1 -0
  64. package/dist/src/algorithms/community/louvain.d.ts +2 -3
  65. package/dist/src/algorithms/community/louvain.d.ts.map +1 -1
  66. package/dist/src/algorithms/community/louvain.js +35 -81
  67. package/dist/src/algorithms/community/louvain.js.map +1 -1
  68. package/dist/src/algorithms/community/modularity-utils.d.ts +55 -0
  69. package/dist/src/algorithms/community/modularity-utils.d.ts.map +1 -0
  70. package/dist/src/algorithms/community/modularity-utils.js +108 -0
  71. package/dist/src/algorithms/community/modularity-utils.js.map +1 -0
  72. package/dist/src/algorithms/components/connected.d.ts +23 -0
  73. package/dist/src/algorithms/components/connected.d.ts.map +1 -1
  74. package/dist/src/algorithms/components/connected.js +29 -3
  75. package/dist/src/algorithms/components/connected.js.map +1 -1
  76. package/dist/src/algorithms/matching/bipartite.d.ts +10 -0
  77. package/dist/src/algorithms/matching/bipartite.d.ts.map +1 -1
  78. package/dist/src/algorithms/matching/bipartite.js +18 -40
  79. package/dist/src/algorithms/matching/bipartite.js.map +1 -1
  80. package/dist/src/algorithms/matching/index.d.ts.map +1 -1
  81. package/dist/src/algorithms/matching/index.js.map +1 -1
  82. package/dist/src/algorithms/matching/isomorphism.d.ts +8 -0
  83. package/dist/src/algorithms/matching/isomorphism.d.ts.map +1 -1
  84. package/dist/src/algorithms/matching/isomorphism.js +36 -2
  85. package/dist/src/algorithms/matching/isomorphism.js.map +1 -1
  86. package/dist/src/algorithms/mst/index.d.ts.map +1 -1
  87. package/dist/src/algorithms/mst/index.js.map +1 -1
  88. package/dist/src/algorithms/mst/kruskal.d.ts +14 -0
  89. package/dist/src/algorithms/mst/kruskal.d.ts.map +1 -1
  90. package/dist/src/algorithms/mst/kruskal.js +17 -3
  91. package/dist/src/algorithms/mst/kruskal.js.map +1 -1
  92. package/dist/src/algorithms/mst/prim.d.ts +9 -0
  93. package/dist/src/algorithms/mst/prim.d.ts.map +1 -1
  94. package/dist/src/algorithms/mst/prim.js +9 -0
  95. package/dist/src/algorithms/mst/prim.js.map +1 -1
  96. package/dist/src/algorithms/shortest-path/bellman-ford.d.ts +10 -0
  97. package/dist/src/algorithms/shortest-path/bellman-ford.d.ts.map +1 -1
  98. package/dist/src/algorithms/shortest-path/bellman-ford.js +11 -12
  99. package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
  100. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts +44 -0
  101. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.d.ts.map +1 -0
  102. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js +195 -0
  103. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js.map +1 -0
  104. package/dist/src/algorithms/shortest-path/dijkstra.d.ts +20 -2
  105. package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -1
  106. package/dist/src/algorithms/shortest-path/dijkstra.js +30 -14
  107. package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -1
  108. package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts +17 -0
  109. package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts.map +1 -1
  110. package/dist/src/algorithms/shortest-path/floyd-warshall.js +17 -0
  111. package/dist/src/algorithms/shortest-path/floyd-warshall.js.map +1 -1
  112. package/dist/src/algorithms/shortest-path/index.d.ts.map +1 -1
  113. package/dist/src/algorithms/shortest-path/index.js.map +1 -1
  114. package/dist/src/algorithms/traversal/bfs-unified.d.ts +42 -0
  115. package/dist/src/algorithms/traversal/bfs-unified.d.ts.map +1 -0
  116. package/dist/src/algorithms/traversal/bfs-unified.js +370 -0
  117. package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -0
  118. package/dist/src/algorithms/traversal/bfs-variants.d.ts +77 -0
  119. package/dist/src/algorithms/traversal/bfs-variants.d.ts.map +1 -0
  120. package/dist/src/algorithms/traversal/bfs-variants.js +402 -0
  121. package/dist/src/algorithms/traversal/bfs-variants.js.map +1 -0
  122. package/dist/src/algorithms/traversal/bfs.d.ts +4 -18
  123. package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -1
  124. package/dist/src/algorithms/traversal/bfs.js +5 -182
  125. package/dist/src/algorithms/traversal/bfs.js.map +1 -1
  126. package/dist/src/algorithms/traversal/dfs.d.ts +10 -0
  127. package/dist/src/algorithms/traversal/dfs.d.ts.map +1 -1
  128. package/dist/src/algorithms/traversal/dfs.js +48 -0
  129. package/dist/src/algorithms/traversal/dfs.js.map +1 -1
  130. package/dist/src/algorithms/traversal/index.d.ts.map +1 -1
  131. package/dist/src/algorithms/traversal/index.js.map +1 -1
  132. package/dist/src/benchmark-all-algorithms.d.ts +25 -0
  133. package/dist/src/benchmark-all-algorithms.d.ts.map +1 -0
  134. package/dist/src/benchmark-all-algorithms.js +491 -0
  135. package/dist/src/benchmark-all-algorithms.js.map +1 -0
  136. package/dist/src/clustering/hierarchical.d.ts +23 -15
  137. package/dist/src/clustering/hierarchical.d.ts.map +1 -1
  138. package/dist/src/clustering/hierarchical.js +226 -224
  139. package/dist/src/clustering/hierarchical.js.map +1 -1
  140. package/dist/src/clustering/index.d.ts +4 -2
  141. package/dist/src/clustering/index.d.ts.map +1 -1
  142. package/dist/src/clustering/index.js +2 -2
  143. package/dist/src/clustering/index.js.map +1 -1
  144. package/dist/src/clustering/k-core.d.ts +17 -19
  145. package/dist/src/clustering/k-core.d.ts.map +1 -1
  146. package/dist/src/clustering/k-core.js +68 -30
  147. package/dist/src/clustering/k-core.js.map +1 -1
  148. package/dist/src/clustering/mcl.d.ts +6 -0
  149. package/dist/src/clustering/mcl.d.ts.map +1 -1
  150. package/dist/src/clustering/mcl.js +34 -3
  151. package/dist/src/clustering/mcl.js.map +1 -1
  152. package/dist/src/clustering/spectral.d.ts +11 -0
  153. package/dist/src/clustering/spectral.d.ts.map +1 -1
  154. package/dist/src/clustering/spectral.js +99 -47
  155. package/dist/src/clustering/spectral.js.map +1 -1
  156. package/dist/src/core/graph.d.ts +45 -0
  157. package/dist/src/core/graph.d.ts.map +1 -1
  158. package/dist/src/core/graph.js +49 -5
  159. package/dist/src/core/graph.js.map +1 -1
  160. package/dist/src/data-structures/index.d.ts.map +1 -1
  161. package/dist/src/data-structures/index.js.map +1 -1
  162. package/dist/src/data-structures/priority-queue.d.ts +18 -1
  163. package/dist/src/data-structures/priority-queue.d.ts.map +1 -1
  164. package/dist/src/data-structures/priority-queue.js +26 -5
  165. package/dist/src/data-structures/priority-queue.js.map +1 -1
  166. package/dist/src/data-structures/union-find.d.ts +21 -0
  167. package/dist/src/data-structures/union-find.d.ts.map +1 -1
  168. package/dist/src/data-structures/union-find.js +21 -0
  169. package/dist/src/data-structures/union-find.js.map +1 -1
  170. package/dist/src/flow/ford-fulkerson.d.ts +20 -12
  171. package/dist/src/flow/ford-fulkerson.d.ts.map +1 -1
  172. package/dist/src/flow/ford-fulkerson.js +170 -217
  173. package/dist/src/flow/ford-fulkerson.js.map +1 -1
  174. package/dist/src/flow/min-cut.d.ts +6 -8
  175. package/dist/src/flow/min-cut.d.ts.map +1 -1
  176. package/dist/src/flow/min-cut.js +34 -12
  177. package/dist/src/flow/min-cut.js.map +1 -1
  178. package/dist/src/index.d.ts +3 -1
  179. package/dist/src/index.d.ts.map +1 -1
  180. package/dist/src/index.js +6 -1
  181. package/dist/src/index.js.map +1 -1
  182. package/dist/src/link-prediction/adamic-adar.d.ts +26 -0
  183. package/dist/src/link-prediction/adamic-adar.d.ts.map +1 -1
  184. package/dist/src/link-prediction/adamic-adar.js +47 -30
  185. package/dist/src/link-prediction/adamic-adar.js.map +1 -1
  186. package/dist/src/link-prediction/common-neighbors.d.ts +21 -0
  187. package/dist/src/link-prediction/common-neighbors.d.ts.map +1 -1
  188. package/dist/src/link-prediction/common-neighbors.js +31 -14
  189. package/dist/src/link-prediction/common-neighbors.js.map +1 -1
  190. package/dist/src/link-prediction/index.d.ts.map +1 -1
  191. package/dist/src/optimized/bit-packed.d.ts +193 -0
  192. package/dist/src/optimized/bit-packed.d.ts.map +1 -0
  193. package/dist/src/optimized/bit-packed.js +342 -0
  194. package/dist/src/optimized/bit-packed.js.map +1 -0
  195. package/dist/src/optimized/csr-graph.d.ts +149 -0
  196. package/dist/src/optimized/csr-graph.d.ts.map +1 -0
  197. package/dist/src/optimized/csr-graph.js +404 -0
  198. package/dist/src/optimized/csr-graph.js.map +1 -0
  199. package/dist/src/optimized/direction-optimized-bfs.d.ts +95 -0
  200. package/dist/src/optimized/direction-optimized-bfs.d.ts.map +1 -0
  201. package/dist/src/optimized/direction-optimized-bfs.js +242 -0
  202. package/dist/src/optimized/direction-optimized-bfs.js.map +1 -0
  203. package/dist/src/optimized/graph-adapter.d.ts +111 -0
  204. package/dist/src/optimized/graph-adapter.d.ts.map +1 -0
  205. package/dist/src/optimized/graph-adapter.js +194 -0
  206. package/dist/src/optimized/graph-adapter.js.map +1 -0
  207. package/dist/src/optimized/index.d.ts +14 -0
  208. package/dist/src/optimized/index.d.ts.map +1 -0
  209. package/dist/src/optimized/index.js +30 -0
  210. package/dist/src/optimized/index.js.map +1 -0
  211. package/dist/src/pathfinding/astar.d.ts +25 -9
  212. package/dist/src/pathfinding/astar.d.ts.map +1 -1
  213. package/dist/src/pathfinding/astar.js +25 -10
  214. package/dist/src/pathfinding/astar.js.map +1 -1
  215. package/dist/src/pathfinding/utils.d.ts +15 -6
  216. package/dist/src/pathfinding/utils.d.ts.map +1 -1
  217. package/dist/src/pathfinding/utils.js +19 -7
  218. package/dist/src/pathfinding/utils.js.map +1 -1
  219. package/dist/src/research/grsbm.d.ts +0 -1
  220. package/dist/src/research/grsbm.d.ts.map +1 -1
  221. package/dist/src/research/grsbm.js +28 -23
  222. package/dist/src/research/grsbm.js.map +1 -1
  223. package/dist/src/research/index.d.ts.map +1 -1
  224. package/dist/src/research/index.js.map +1 -1
  225. package/dist/src/research/sync.d.ts +0 -1
  226. package/dist/src/research/sync.d.ts.map +1 -1
  227. package/dist/src/research/sync.js +31 -36
  228. package/dist/src/research/sync.js.map +1 -1
  229. package/dist/src/research/terahac.d.ts +2 -1
  230. package/dist/src/research/terahac.d.ts.map +1 -1
  231. package/dist/src/research/terahac.js +39 -7
  232. package/dist/src/research/terahac.js.map +1 -1
  233. package/dist/src/types/index.d.ts +8 -0
  234. package/dist/src/types/index.d.ts.map +1 -1
  235. package/dist/src/utils/algorithm-utilities.d.ts +2 -0
  236. package/dist/src/utils/algorithm-utilities.d.ts.map +1 -0
  237. package/dist/src/utils/algorithm-utilities.js +2 -0
  238. package/dist/src/utils/algorithm-utilities.js.map +1 -0
  239. package/dist/src/utils/graph-converters.d.ts +110 -0
  240. package/dist/src/utils/graph-converters.d.ts.map +1 -0
  241. package/dist/src/utils/graph-converters.js +227 -0
  242. package/dist/src/utils/graph-converters.js.map +1 -0
  243. package/dist/src/utils/graph-utilities.d.ts +62 -0
  244. package/dist/src/utils/graph-utilities.d.ts.map +1 -0
  245. package/dist/src/utils/graph-utilities.js +148 -0
  246. package/dist/src/utils/graph-utilities.js.map +1 -0
  247. package/dist/src/utils/index.d.ts +5 -0
  248. package/dist/src/utils/index.d.ts.map +1 -0
  249. package/dist/src/utils/index.js +5 -0
  250. package/dist/src/utils/index.js.map +1 -0
  251. package/dist/src/utils/math-utilities.d.ts +63 -0
  252. package/dist/src/utils/math-utilities.d.ts.map +1 -0
  253. package/dist/src/utils/math-utilities.js +132 -0
  254. package/dist/src/utils/math-utilities.js.map +1 -0
  255. package/dist/src/utils/matrix-utilities.d.ts +2 -0
  256. package/dist/src/utils/matrix-utilities.d.ts.map +1 -0
  257. package/dist/src/utils/matrix-utilities.js +2 -0
  258. package/dist/src/utils/matrix-utilities.js.map +1 -0
  259. package/dist/src/utils/optimization-helpers.d.ts +42 -0
  260. package/dist/src/utils/optimization-helpers.d.ts.map +1 -0
  261. package/dist/src/utils/optimization-helpers.js +59 -0
  262. package/dist/src/utils/optimization-helpers.js.map +1 -0
  263. package/dist/src/utils/priorityQueue.d.ts +24 -0
  264. package/dist/src/utils/priorityQueue.d.ts.map +1 -1
  265. package/dist/src/utils/priorityQueue.js +34 -4
  266. package/dist/src/utils/priorityQueue.js.map +1 -1
  267. package/package.json +58 -39
  268. package/src/algorithms/centrality/betweenness.ts +185 -200
  269. package/src/algorithms/centrality/closeness.ts +93 -194
  270. package/src/algorithms/centrality/degree.ts +18 -22
  271. package/src/algorithms/centrality/delta-pagerank-simple.ts +374 -0
  272. package/src/algorithms/centrality/delta-pagerank.ts +458 -0
  273. package/src/algorithms/centrality/eigenvector.ts +14 -15
  274. package/src/algorithms/centrality/hits.ts +17 -17
  275. package/src/algorithms/centrality/index.ts +20 -13
  276. package/src/algorithms/centrality/katz.ts +17 -25
  277. package/src/algorithms/centrality/pagerank.ts +91 -16
  278. package/src/algorithms/community/girvan-newman.ts +90 -86
  279. package/src/algorithms/community/index.ts +6 -5
  280. package/src/algorithms/community/label-propagation.ts +69 -48
  281. package/src/algorithms/community/leiden.ts +88 -65
  282. package/src/algorithms/community/louvain-optimized.ts +474 -0
  283. package/src/algorithms/community/louvain.ts +52 -122
  284. package/src/algorithms/community/modularity-utils.ts +134 -0
  285. package/src/algorithms/components/connected.ts +40 -17
  286. package/src/algorithms/matching/bipartite.ts +24 -53
  287. package/src/algorithms/matching/index.ts +4 -4
  288. package/src/algorithms/matching/isomorphism.ts +53 -23
  289. package/src/algorithms/mst/index.ts +3 -4
  290. package/src/algorithms/mst/kruskal.ts +21 -6
  291. package/src/algorithms/mst/prim.ts +13 -4
  292. package/src/algorithms/shortest-path/bellman-ford.ts +16 -28
  293. package/src/algorithms/shortest-path/bidirectional-dijkstra.ts +248 -0
  294. package/src/algorithms/shortest-path/dijkstra.ts +38 -30
  295. package/src/algorithms/shortest-path/floyd-warshall.ts +21 -4
  296. package/src/algorithms/shortest-path/index.ts +5 -5
  297. package/src/algorithms/traversal/bfs-unified.ts +437 -0
  298. package/src/algorithms/traversal/bfs-variants.ts +520 -0
  299. package/src/algorithms/traversal/bfs.ts +5 -229
  300. package/src/algorithms/traversal/dfs.ts +61 -42
  301. package/src/algorithms/traversal/index.ts +3 -3
  302. package/src/benchmark-all-algorithms.ts +580 -0
  303. package/src/clustering/hierarchical.ts +268 -272
  304. package/src/clustering/index.ts +8 -6
  305. package/src/clustering/k-core.ts +93 -61
  306. package/src/clustering/mcl.ts +53 -23
  307. package/src/clustering/spectral.ts +130 -72
  308. package/src/core/graph.ts +58 -18
  309. package/src/data-structures/index.ts +2 -2
  310. package/src/data-structures/priority-queue.ts +36 -11
  311. package/src/data-structures/union-find.ts +22 -1
  312. package/src/flow/ford-fulkerson.ts +221 -262
  313. package/src/flow/min-cut.ts +59 -51
  314. package/src/index.ts +9 -2
  315. package/src/link-prediction/adamic-adar.ts +75 -74
  316. package/src/link-prediction/common-neighbors.ts +49 -49
  317. package/src/link-prediction/index.ts +1 -1
  318. package/src/optimized/bit-packed.ts +390 -0
  319. package/src/optimized/csr-graph.ts +518 -0
  320. package/src/optimized/direction-optimized-bfs.ts +310 -0
  321. package/src/optimized/graph-adapter.ts +248 -0
  322. package/src/optimized/index.ts +34 -0
  323. package/src/pathfinding/astar.ts +40 -25
  324. package/src/pathfinding/utils.ts +20 -13
  325. package/src/research/grsbm.ts +36 -39
  326. package/src/research/index.ts +4 -4
  327. package/src/research/sync.ts +41 -54
  328. package/src/research/terahac.ts +63 -21
  329. package/src/types/index.ts +8 -0
  330. package/src/utils/algorithm-utilities.ts +2 -0
  331. package/src/utils/graph-converters.ts +269 -0
  332. package/src/utils/graph-utilities.ts +173 -0
  333. package/src/utils/index.ts +4 -0
  334. package/src/utils/math-utilities.ts +149 -0
  335. package/src/utils/matrix-utilities.ts +2 -0
  336. package/src/utils/optimization-helpers.ts +87 -0
  337. package/src/utils/priorityQueue.ts +40 -6
@@ -23,6 +23,17 @@ export interface SpectralClusteringResult {
23
23
  }
24
24
  /**
25
25
  * Perform spectral clustering on a graph
26
+ *
27
+ * Note: This implementation uses simplified power iteration for eigenvector
28
+ * computation with approximate eigenvalues. For production use cases requiring
29
+ * precise clustering, consider using a proper linear algebra library like ml-matrix.
30
+ *
31
+ * The approximate eigenvalues (0.1, 0.2 for second and third eigenvectors) work
32
+ * well for most graph structures but may produce suboptimal results for graphs
33
+ * with unusual spectral properties.
34
+ * @param graph - The input graph to cluster
35
+ * @param options - Spectral clustering options (k, laplacianType, etc.)
36
+ * @returns Spectral clustering result with communities and cluster assignments
26
37
  */
27
38
  export declare function spectralClustering(graph: Graph, options: SpectralClusteringOptions): SpectralClusteringResult;
28
39
  //# sourceMappingURL=spectral.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spectral.d.ts","sourceRoot":"","sources":["../../../src/clustering/spectral.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAE9C;;;;;;;;GAQG;AAEH,MAAM,WAAW,yBAAyB;IACtC,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,yBAAyB,GACnC,wBAAwB,CAyF1B"}
1
+ {"version":3,"file":"spectral.d.ts","sourceRoot":"","sources":["../../../src/clustering/spectral.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;;;;GAQG;AAEH,MAAM,WAAW,yBAAyB;IACtC,CAAC,EAAE,MAAM,CAAC;IACV,aAAa,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,GAAG,wBAAwB,CA0F7G"}
@@ -1,8 +1,24 @@
1
+ import { euclideanDistance } from "../utils/math-utilities.js";
1
2
  /**
2
3
  * Perform spectral clustering on a graph
4
+ *
5
+ * Note: This implementation uses simplified power iteration for eigenvector
6
+ * computation with approximate eigenvalues. For production use cases requiring
7
+ * precise clustering, consider using a proper linear algebra library like ml-matrix.
8
+ *
9
+ * The approximate eigenvalues (0.1, 0.2 for second and third eigenvectors) work
10
+ * well for most graph structures but may produce suboptimal results for graphs
11
+ * with unusual spectral properties.
12
+ * @param graph - The input graph to cluster
13
+ * @param options - Spectral clustering options (k, laplacianType, etc.)
14
+ * @returns Spectral clustering result with communities and cluster assignments
3
15
  */
4
16
  export function spectralClustering(graph, options) {
5
- const { k, laplacianType = "normalized", maxIterations = 100, } = options;
17
+ const { k, laplacianType = "normalized", maxIterations = 100, tolerance = 1e-4 } = options;
18
+ // Input validation
19
+ if (k < 1 || !Number.isInteger(k)) {
20
+ throw new Error("k must be a positive integer");
21
+ }
6
22
  const nodes = Array.from(graph.nodes());
7
23
  const nodeIds = nodes.map((node) => node.id);
8
24
  const n = nodeIds.length;
@@ -37,7 +53,7 @@ export function spectralClustering(graph, options) {
37
53
  if (laplacianType === "normalized") {
38
54
  normalizeRows(dataPoints);
39
55
  }
40
- const kmeans = kMeansClustering(dataPoints, k, maxIterations);
56
+ const kmeans = kMeansClustering(dataPoints, k, maxIterations, tolerance);
41
57
  // Build communities
42
58
  const communities = Array.from({ length: k }, () => []);
43
59
  const clusterAssignments = new Map();
@@ -75,6 +91,9 @@ export function spectralClustering(graph, options) {
75
91
  }
76
92
  /**
77
93
  * Build adjacency matrix from graph
94
+ * @param graph - The input graph
95
+ * @param nodeIds - Array of node IDs defining matrix index order
96
+ * @returns Square adjacency matrix with edge weights
78
97
  */
79
98
  function buildAdjacencyMatrix(graph, nodeIds) {
80
99
  const n = nodeIds.length;
@@ -109,6 +128,9 @@ function buildAdjacencyMatrix(graph, nodeIds) {
109
128
  }
110
129
  /**
111
130
  * Build Laplacian matrix from adjacency matrix
131
+ * @param adjacency - Square adjacency matrix
132
+ * @param type - Type of Laplacian (unnormalized, normalized, or randomWalk)
133
+ * @returns The computed Laplacian matrix
112
134
  */
113
135
  function buildLaplacianMatrix(adjacency, type) {
114
136
  const n = adjacency.length;
@@ -168,7 +190,12 @@ function buildLaplacianMatrix(adjacency, type) {
168
190
  const adjacencyVal = adjacencyRow[j];
169
191
  const di = degrees[i];
170
192
  const dj = degrees[j];
171
- if (adjacencyVal !== undefined && adjacencyVal > 0 && di !== undefined && dj !== undefined && di > 0 && dj > 0) {
193
+ if (adjacencyVal !== undefined &&
194
+ adjacencyVal > 0 &&
195
+ di !== undefined &&
196
+ dj !== undefined &&
197
+ di > 0 &&
198
+ dj > 0) {
172
199
  const laplacianRow = laplacian[i];
173
200
  if (laplacianRow) {
174
201
  laplacianRow[j] = -adjacencyVal / Math.sqrt(di * dj);
@@ -211,6 +238,9 @@ function buildLaplacianMatrix(adjacency, type) {
211
238
  /**
212
239
  * Find k smallest eigenvectors using simplified eigendecomposition
213
240
  * This is a simplified implementation - in practice, you'd use LAPACK or similar
241
+ * @param matrix - The Laplacian matrix for eigendecomposition
242
+ * @param k - Number of smallest eigenvectors to find
243
+ * @returns Object containing eigenvalues and corresponding eigenvectors
214
244
  */
215
245
  function findSmallestEigenvectors(matrix, k) {
216
246
  const n = matrix.length;
@@ -234,9 +264,11 @@ function findSmallestEigenvectors(matrix, k) {
234
264
  const maxIterations = 100;
235
265
  for (let eigIdx = 0; eigIdx < k; eigIdx++) {
236
266
  // Initialize random vector
237
- let vector = Array(n).fill(0).map(() => Math.random() - 0.5);
267
+ let vector = Array(n)
268
+ .fill(0)
269
+ .map(() => Math.random() - 0.5);
238
270
  // Normalize initial vector
239
- const initNorm = Math.sqrt(vector.reduce((sum, val) => sum + (val * val), 0));
271
+ const initNorm = Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0));
240
272
  if (initNorm > 0) {
241
273
  vector = vector.map((val) => val / initNorm);
242
274
  }
@@ -246,8 +278,8 @@ function findSmallestEigenvectors(matrix, k) {
246
278
  if (!ejVector) {
247
279
  continue;
248
280
  }
249
- const dot = vector.reduce((sum, val, idx) => sum + (val * (ejVector[idx] ?? 0)), 0);
250
- vector = vector.map((val, idx) => val - (dot * (ejVector[idx] ?? 0)));
281
+ const dot = vector.reduce((sum, val, idx) => sum + val * (ejVector[idx] ?? 0), 0);
282
+ vector = vector.map((val, idx) => val - dot * (ejVector[idx] ?? 0));
251
283
  }
252
284
  // Power iteration
253
285
  for (let iter = 0; iter < maxIterations; iter++) {
@@ -261,7 +293,7 @@ function findSmallestEigenvectors(matrix, k) {
261
293
  if (matrixVal !== undefined && vecVal !== undefined) {
262
294
  const nvVal = newVector[i];
263
295
  if (nvVal !== undefined) {
264
- newVector[i] = nvVal + (matrixVal * vecVal);
296
+ newVector[i] = nvVal + matrixVal * vecVal;
265
297
  }
266
298
  }
267
299
  }
@@ -272,19 +304,19 @@ function findSmallestEigenvectors(matrix, k) {
272
304
  if (!ejVector) {
273
305
  continue;
274
306
  }
275
- const dot = newVector.reduce((sum, val, idx) => sum + (val * (ejVector[idx] ?? 0)), 0);
307
+ const dot = newVector.reduce((sum, val, idx) => sum + val * (ejVector[idx] ?? 0), 0);
276
308
  for (let i = 0; i < n; i++) {
277
309
  const ejVal = ejVector[i];
278
310
  if (ejVal !== undefined) {
279
311
  const nvVal = newVector[i];
280
312
  if (nvVal !== undefined) {
281
- newVector[i] = nvVal - (dot * ejVal);
313
+ newVector[i] = nvVal - dot * ejVal;
282
314
  }
283
315
  }
284
316
  }
285
317
  }
286
318
  // Normalize
287
- const norm = Math.sqrt(newVector.reduce((sum, val) => sum + ((val * val)), 0));
319
+ const norm = Math.sqrt(newVector.reduce((sum, val) => sum + val * val, 0));
288
320
  if (norm > 1e-10) {
289
321
  vector = newVector.map((val) => val / norm);
290
322
  }
@@ -303,14 +335,14 @@ function findSmallestEigenvectors(matrix, k) {
303
335
  if (matrixVal !== undefined && vecVal !== undefined) {
304
336
  const avVal = Av[i];
305
337
  if (avVal !== undefined) {
306
- Av[i] = avVal + (matrixVal * vecVal);
338
+ Av[i] = avVal + matrixVal * vecVal;
307
339
  }
308
340
  }
309
341
  }
310
342
  }
311
343
  eigenvalue = vector.reduce((sum, val, idx) => {
312
344
  const avVal = Av[idx];
313
- return sum + (val * (avVal ?? 0));
345
+ return sum + val * (avVal ?? 0);
314
346
  }, 0);
315
347
  eigenvectors.push(vector);
316
348
  eigenvalues.push(eigenvalue);
@@ -319,10 +351,11 @@ function findSmallestEigenvectors(matrix, k) {
319
351
  }
320
352
  /**
321
353
  * Normalize matrix rows to unit length
354
+ * @param matrix - Matrix to normalize in place
322
355
  */
323
356
  function normalizeRows(matrix) {
324
357
  for (const row of matrix) {
325
- const norm = Math.sqrt(row.reduce((sum, val) => sum + (val * val), 0));
358
+ const norm = Math.sqrt(row.reduce((sum, val) => sum + val * val, 0));
326
359
  if (norm > 0) {
327
360
  for (let j = 0; j < row.length; j++) {
328
361
  const val = row[j];
@@ -335,8 +368,13 @@ function normalizeRows(matrix) {
335
368
  }
336
369
  /**
337
370
  * K-means clustering algorithm
371
+ * @param data - Array of data points, each point is an array of coordinates
372
+ * @param k - Number of clusters to form
373
+ * @param maxIterations - Maximum number of iterations
374
+ * @param tolerance - Convergence tolerance for centroid movement
375
+ * @returns Object containing cluster assignments and final centroids
338
376
  */
339
- function kMeansClustering(data, k, maxIterations) {
377
+ function kMeansClustering(data, k, maxIterations, tolerance = 1e-4) {
340
378
  const n = data.length;
341
379
  const d = data[0]?.length ?? 0;
342
380
  // Handle edge cases
@@ -389,18 +427,20 @@ function kMeansClustering(data, k, maxIterations) {
389
427
  }
390
428
  assignments[i] = bestCluster;
391
429
  }
392
- // Check for convergence
393
- let changed = false;
430
+ // Check for convergence based on assignment changes
431
+ let assignmentsChanged = false;
394
432
  for (let i = 0; i < n; i++) {
395
433
  if (assignments[i] !== oldAssignments[i]) {
396
- changed = true;
434
+ assignmentsChanged = true;
397
435
  break;
398
436
  }
399
437
  }
400
- if (!changed) {
438
+ if (!assignmentsChanged) {
401
439
  break;
402
440
  }
403
441
  oldAssignments = [...assignments];
442
+ // Store old centroids for tolerance-based convergence check
443
+ const oldCentroids = centroids.map((c) => [...c]);
404
444
  // Update centroids
405
445
  const counts = Array(k).fill(0);
406
446
  const sums = Array.from({ length: k }, () => Array(d).fill(0));
@@ -436,31 +476,39 @@ function kMeansClustering(data, k, maxIterations) {
436
476
  for (let j = 0; j < d; j++) {
437
477
  const sumVal = sumsRow[j];
438
478
  if (sumVal !== undefined) {
439
- const countVal = counts[i];
440
- if (countVal !== undefined) {
441
- centroidsRow[j] = sumVal / countVal;
479
+ const countValInner = counts[i];
480
+ if (countValInner !== undefined) {
481
+ centroidsRow[j] = sumVal / countValInner;
442
482
  }
443
483
  }
444
484
  }
445
485
  }
446
486
  }
447
487
  }
488
+ // Check for tolerance-based convergence (centroid movement)
489
+ let maxCentroidShift = 0;
490
+ for (let i = 0; i < k; i++) {
491
+ const oldCentroid = oldCentroids[i];
492
+ const newCentroid = centroids[i];
493
+ if (oldCentroid && newCentroid) {
494
+ const shift = euclideanDistance(oldCentroid, newCentroid);
495
+ if (shift > maxCentroidShift) {
496
+ maxCentroidShift = shift;
497
+ }
498
+ }
499
+ }
500
+ if (maxCentroidShift < tolerance) {
501
+ break;
502
+ }
448
503
  }
449
504
  return { assignments, centroids };
450
505
  }
451
- /**
452
- * Calculate Euclidean distance between two vectors
453
- */
454
- function euclideanDistance(a, b) {
455
- let sum = 0;
456
- for (let i = 0; i < a.length; i++) {
457
- const diff = (a[i] ?? 0) - (b[i] ?? 0);
458
- sum += diff * diff;
459
- }
460
- return Math.sqrt(sum);
461
- }
462
506
  /**
463
507
  * Compute smallest eigenvectors for small k (optimized for k=2, k=3)
508
+ * @param matrix - The Laplacian matrix
509
+ * @param k - Number of eigenvectors to compute (1-3)
510
+ * @param n - Size of the matrix
511
+ * @returns Object containing eigenvalues and eigenvectors
464
512
  */
465
513
  function computeSmallestEigenvectorsSimple(matrix, k, n) {
466
514
  const eigenvectors = [];
@@ -473,10 +521,12 @@ function computeSmallestEigenvectorsSimple(matrix, k, n) {
473
521
  if (k >= 2) {
474
522
  // Use power iteration on I - L/lambda_max to find second smallest
475
523
  const maxEig = 2; // For normalized Laplacian, max eigenvalue <= 2
476
- let vector = Array(n).fill(0).map(() => Math.random() - 0.5);
524
+ let vector = Array(n)
525
+ .fill(0)
526
+ .map(() => Math.random() - 0.5);
477
527
  // Make orthogonal to first eigenvector
478
- const dot1 = vector.reduce((sum, val) => sum + (val / Math.sqrt(n)), 0);
479
- vector = vector.map((val) => val - (dot1 / Math.sqrt(n)));
528
+ const dot1 = vector.reduce((sum, val) => sum + val / Math.sqrt(n), 0);
529
+ vector = vector.map((val) => val - dot1 / Math.sqrt(n));
480
530
  // Power iteration on shifted matrix
481
531
  for (let iter = 0; iter < 100; iter++) {
482
532
  // Compute (I - L/maxEig) * v
@@ -490,16 +540,16 @@ function computeSmallestEigenvectorsSimple(matrix, k, n) {
490
540
  for (let j = 0; j < n; j++) {
491
541
  const matrixVal = matrix[i]?.[j] ?? 0;
492
542
  const vecVal = vector[j] ?? 0;
493
- newVector[i] = (newVector[i] ?? 0) - ((matrixVal * vecVal) / maxEig);
543
+ newVector[i] = (newVector[i] ?? 0) - (matrixVal * vecVal) / maxEig;
494
544
  }
495
545
  }
496
546
  // Orthogonalize against first eigenvector
497
- const dot = newVector.reduce((sum, val) => sum + (val / Math.sqrt(n)), 0);
547
+ const dot = newVector.reduce((sum, val) => sum + val / Math.sqrt(n), 0);
498
548
  for (let i = 0; i < n; i++) {
499
- newVector[i] = (newVector[i] ?? 0) - (dot / Math.sqrt(n));
549
+ newVector[i] = (newVector[i] ?? 0) - dot / Math.sqrt(n);
500
550
  }
501
551
  // Normalize
502
- const norm = Math.sqrt(newVector.reduce((sum, val) => sum + (val * val), 0));
552
+ const norm = Math.sqrt(newVector.reduce((sum, val) => sum + val * val, 0));
503
553
  if (norm > 1e-10) {
504
554
  vector = newVector.map((val) => val / norm);
505
555
  }
@@ -509,11 +559,13 @@ function computeSmallestEigenvectorsSimple(matrix, k, n) {
509
559
  }
510
560
  // For k = 3, add another eigenvector
511
561
  if (k >= 3) {
512
- let vector = Array(n).fill(0).map(() => Math.random() - 0.5);
562
+ let vector = Array(n)
563
+ .fill(0)
564
+ .map(() => Math.random() - 0.5);
513
565
  // Orthogonalize against previous eigenvectors
514
566
  for (const prev of eigenvectors) {
515
- const dot = vector.reduce((sum, val, idx) => sum + (val * (prev[idx] ?? 0)), 0);
516
- vector = vector.map((val, idx) => val - (dot * (prev[idx] ?? 0)));
567
+ const dot = vector.reduce((sum, val, idx) => sum + val * (prev[idx] ?? 0), 0);
568
+ vector = vector.map((val, idx) => val - dot * (prev[idx] ?? 0));
517
569
  }
518
570
  // Similar power iteration
519
571
  for (let iter = 0; iter < 50; iter++) {
@@ -527,18 +579,18 @@ function computeSmallestEigenvectorsSimple(matrix, k, n) {
527
579
  for (let j = 0; j < n; j++) {
528
580
  const matrixVal = matrix[i]?.[j] ?? 0;
529
581
  const vecVal = vector[j] ?? 0;
530
- newVector[i] = (newVector[i] ?? 0) - ((matrixVal * vecVal) / 2);
582
+ newVector[i] = (newVector[i] ?? 0) - (matrixVal * vecVal) / 2;
531
583
  }
532
584
  }
533
585
  // Orthogonalize
534
586
  for (const prev of eigenvectors) {
535
- const dot = newVector.reduce((sum, val, idx) => sum + (val * (prev[idx] ?? 0)), 0);
587
+ const dot = newVector.reduce((sum, val, idx) => sum + val * (prev[idx] ?? 0), 0);
536
588
  for (let i = 0; i < n; i++) {
537
- newVector[i] = (newVector[i] ?? 0) - (dot * (prev[i] ?? 0));
589
+ newVector[i] = (newVector[i] ?? 0) - dot * (prev[i] ?? 0);
538
590
  }
539
591
  }
540
592
  // Normalize
541
- const norm = Math.sqrt(newVector.reduce((sum, val) => sum + (val * val), 0));
593
+ const norm = Math.sqrt(newVector.reduce((sum, val) => sum + val * val, 0));
542
594
  if (norm > 1e-10) {
543
595
  vector = newVector.map((val) => val / norm);
544
596
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spectral.js","sourceRoot":"","sources":["../../../src/clustering/spectral.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spectral.js","sourceRoot":"","sources":["../../../src/clustering/spectral.ts"],"names":[],"mappings":"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"}
@@ -11,89 +11,133 @@ export declare class Graph {
11
11
  private incomingEdges;
12
12
  private config;
13
13
  private edgeCount;
14
+ /**
15
+ * Creates a new Graph instance.
16
+ * @param config - Configuration options for the graph
17
+ */
14
18
  constructor(config?: Partial<GraphConfig>);
15
19
  /**
16
20
  * Add a node to the graph
21
+ * @param id - The unique identifier for the node
22
+ * @param data - Optional key-value data to attach to the node
17
23
  */
18
24
  addNode(id: NodeId, data?: Record<string, unknown>): void;
19
25
  /**
20
26
  * Remove a node from the graph
27
+ * @param id - The unique identifier of the node to remove
28
+ * @returns True if the node was removed, false if it did not exist
21
29
  */
22
30
  removeNode(id: NodeId): boolean;
23
31
  /**
24
32
  * Add an edge to the graph
33
+ * @param source - The source node identifier
34
+ * @param target - The target node identifier
35
+ * @param weight - The weight of the edge (defaults to 1)
36
+ * @param data - Optional key-value data to attach to the edge
25
37
  */
26
38
  addEdge(source: NodeId, target: NodeId, weight?: number, data?: Record<string, unknown>): void;
27
39
  /**
28
40
  * Remove an edge from the graph
41
+ * @param source - The source node identifier
42
+ * @param target - The target node identifier
43
+ * @returns True if the edge was removed, false if it did not exist
29
44
  */
30
45
  removeEdge(source: NodeId, target: NodeId): boolean;
31
46
  /**
32
47
  * Check if a node exists in the graph
48
+ * @param id - The unique identifier of the node to check
49
+ * @returns True if the node exists, false otherwise
33
50
  */
34
51
  hasNode(id: NodeId): boolean;
35
52
  /**
36
53
  * Check if an edge exists in the graph
54
+ * @param source - The source node identifier
55
+ * @param target - The target node identifier
56
+ * @returns True if the edge exists, false otherwise
37
57
  */
38
58
  hasEdge(source: NodeId, target: NodeId): boolean;
39
59
  /**
40
60
  * Get a node by ID
61
+ * @param id - The unique identifier of the node to retrieve
62
+ * @returns The node if found, undefined otherwise
41
63
  */
42
64
  getNode(id: NodeId): Node | undefined;
43
65
  /**
44
66
  * Get an edge by source and target
67
+ * @param source - The source node identifier
68
+ * @param target - The target node identifier
69
+ * @returns The edge if found, undefined otherwise
45
70
  */
46
71
  getEdge(source: NodeId, target: NodeId): Edge | undefined;
47
72
  /**
48
73
  * Get the number of nodes in the graph
74
+ * @returns The total count of nodes
49
75
  */
50
76
  get nodeCount(): number;
51
77
  /**
52
78
  * Get the number of edges in the graph
79
+ * @returns The total count of edges
53
80
  */
54
81
  get totalEdgeCount(): number;
55
82
  /**
56
83
  * Check if the graph is directed
84
+ * @returns True if the graph is directed, false otherwise
57
85
  */
58
86
  get isDirected(): boolean;
59
87
  /**
60
88
  * Get all nodes in the graph
89
+ * @returns An iterator over all nodes
61
90
  */
62
91
  nodes(): IterableIterator<Node>;
63
92
  /**
64
93
  * Get all edges in the graph
94
+ * @yields Each unique edge in the graph
65
95
  */
66
96
  edges(): IterableIterator<Edge>;
67
97
  /**
68
98
  * Get neighbors of a node (outgoing edges)
99
+ * @param nodeId - The node identifier to get neighbors for
100
+ * @returns An iterator over the neighbor node identifiers
69
101
  */
70
102
  neighbors(nodeId: NodeId): IterableIterator<NodeId>;
71
103
  /**
72
104
  * Get incoming neighbors of a node (directed graphs only)
105
+ * @param nodeId - The node identifier to get incoming neighbors for
106
+ * @returns An iterator over the incoming neighbor node identifiers
73
107
  */
74
108
  inNeighbors(nodeId: NodeId): IterableIterator<NodeId>;
75
109
  /**
76
110
  * Get outgoing neighbors of a node
111
+ * @param nodeId - The node identifier to get outgoing neighbors for
112
+ * @returns An iterator over the outgoing neighbor node identifiers
77
113
  */
78
114
  outNeighbors(nodeId: NodeId): IterableIterator<NodeId>;
79
115
  /**
80
116
  * Get the degree of a node
117
+ * @param nodeId - The node identifier to get the degree for
118
+ * @returns The total degree of the node
81
119
  */
82
120
  degree(nodeId: NodeId): number;
83
121
  /**
84
122
  * Get the in-degree of a node
123
+ * @param nodeId - The node identifier to get the in-degree for
124
+ * @returns The number of incoming edges to the node
85
125
  */
86
126
  inDegree(nodeId: NodeId): number;
87
127
  /**
88
128
  * Get the out-degree of a node
129
+ * @param nodeId - The node identifier to get the out-degree for
130
+ * @returns The number of outgoing edges from the node
89
131
  */
90
132
  outDegree(nodeId: NodeId): number;
91
133
  /**
92
134
  * Create a copy of the graph
135
+ * @returns A new Graph instance with the same nodes and edges
93
136
  */
94
137
  clone(): Graph;
95
138
  /**
96
139
  * Get graph configuration
140
+ * @returns A copy of the graph configuration object
97
141
  */
98
142
  getConfig(): GraphConfig;
99
143
  /**
@@ -103,6 +147,7 @@ export declare class Graph {
103
147
  /**
104
148
  * Get the number of unique edges in the graph
105
149
  * For undirected graphs, each edge is counted once
150
+ * @returns The count of unique edges
106
151
  */
107
152
  get uniqueEdgeCount(): number;
108
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/core/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAEvE;;;;;GAKG;AACH,qBAAa,KAAK;IACd,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAa7C;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWzD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAwC/B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA8CzF;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAyBnD;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKhD;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIrC;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAKzD;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;OAEG;IACH,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACF,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAahC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAKnD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IASrD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAItD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAS9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAShC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKjC;;OAEG;IACH,KAAK,IAAI,KAAK;IAqBd;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;;OAGG;IACH,IAAI,eAAe,IAAI,MAAM,CAY5B;CACJ"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/core/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;GAKG;AACH,qBAAa,KAAK;IACd,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;OAGG;gBACS,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAa7C;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWzD;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAwC/B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA8CzF;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAyBnD;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI5B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKhD;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIrC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAKzD;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;OAGG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;OAGG;IACH,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAI/B;;;OAGG;IACF,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC;IAahC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAKnD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IASrD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAItD;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAS9B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAShC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKjC;;;OAGG;IACH,KAAK,IAAI,KAAK;IAgBd;;;OAGG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;;;OAIG;IACH,IAAI,eAAe,IAAI,MAAM,CAY5B;CACJ"}