@graphty/algorithms 2.1.1 → 2.2.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.
Files changed (355) hide show
  1. package/README.md +139 -50
  2. package/dist/algorithms.js +15260 -10390
  3. package/dist/algorithms.js.map +1 -1
  4. package/dist/algorithms.standalone.js +26675 -21542
  5. package/dist/algorithms.standalone.js.map +1 -1
  6. package/dist/src/algorithms/centrality/betweenness.d.ts +18 -0
  7. package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -1
  8. package/dist/src/algorithms/centrality/betweenness.js +40 -1
  9. package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
  10. package/dist/src/algorithms/centrality/closeness.d.ts +20 -0
  11. package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -1
  12. package/dist/src/algorithms/centrality/closeness.js +93 -8
  13. package/dist/src/algorithms/centrality/closeness.js.map +1 -1
  14. package/dist/src/algorithms/centrality/degree.d.ts +9 -0
  15. package/dist/src/algorithms/centrality/degree.d.ts.map +1 -1
  16. package/dist/src/algorithms/centrality/degree.js +18 -0
  17. package/dist/src/algorithms/centrality/degree.js.map +1 -1
  18. package/dist/src/algorithms/centrality/eigenvector.d.ts +10 -0
  19. package/dist/src/algorithms/centrality/eigenvector.d.ts.map +1 -1
  20. package/dist/src/algorithms/centrality/eigenvector.js +29 -0
  21. package/dist/src/algorithms/centrality/eigenvector.js.map +1 -1
  22. package/dist/src/algorithms/centrality/hits.d.ts +9 -0
  23. package/dist/src/algorithms/centrality/hits.d.ts.map +1 -1
  24. package/dist/src/algorithms/centrality/hits.js +23 -0
  25. package/dist/src/algorithms/centrality/hits.js.map +1 -1
  26. package/dist/src/algorithms/centrality/katz.d.ts +9 -0
  27. package/dist/src/algorithms/centrality/katz.d.ts.map +1 -1
  28. package/dist/src/algorithms/centrality/katz.js +31 -0
  29. package/dist/src/algorithms/centrality/katz.js.map +1 -1
  30. package/dist/src/algorithms/centrality/pagerank.d.ts +13 -13
  31. package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -1
  32. package/dist/src/algorithms/centrality/pagerank.js +47 -10
  33. package/dist/src/algorithms/centrality/pagerank.js.map +1 -1
  34. package/dist/src/algorithms/community/girvan-newman-legacy.d.ts +27 -0
  35. package/dist/src/algorithms/community/girvan-newman-legacy.d.ts.map +1 -0
  36. package/dist/src/algorithms/community/girvan-newman-legacy.js +335 -0
  37. package/dist/src/algorithms/community/girvan-newman-legacy.js.map +1 -0
  38. package/dist/src/algorithms/community/girvan-newman.d.ts +5 -3
  39. package/dist/src/algorithms/community/girvan-newman.d.ts.map +1 -1
  40. package/dist/src/algorithms/community/girvan-newman.js +34 -308
  41. package/dist/src/algorithms/community/girvan-newman.js.map +1 -1
  42. package/dist/src/algorithms/community/label-propagation.d.ts +9 -6
  43. package/dist/src/algorithms/community/label-propagation.d.ts.map +1 -1
  44. package/dist/src/algorithms/community/label-propagation.js +24 -110
  45. package/dist/src/algorithms/community/label-propagation.js.map +1 -1
  46. package/dist/src/algorithms/components/connected.d.ts.map +1 -1
  47. package/dist/src/algorithms/components/connected.js +28 -77
  48. package/dist/src/algorithms/components/connected.js.map +1 -1
  49. package/dist/src/algorithms/mst/kruskal.d.ts.map +1 -1
  50. package/dist/src/algorithms/mst/kruskal.js +59 -3
  51. package/dist/src/algorithms/mst/kruskal.js.map +1 -1
  52. package/dist/src/algorithms/shortest-path/bellman-ford.d.ts.map +1 -1
  53. package/dist/src/algorithms/shortest-path/bellman-ford.js +46 -0
  54. package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
  55. package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -1
  56. package/dist/src/algorithms/shortest-path/dijkstra.js +27 -0
  57. package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -1
  58. package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts +15 -5
  59. package/dist/src/algorithms/shortest-path/floyd-warshall.d.ts.map +1 -1
  60. package/dist/src/algorithms/shortest-path/floyd-warshall.js +97 -107
  61. package/dist/src/algorithms/shortest-path/floyd-warshall.js.map +1 -1
  62. package/dist/src/algorithms/traversal/bfs-unified.d.ts +2 -12
  63. package/dist/src/algorithms/traversal/bfs-unified.d.ts.map +1 -1
  64. package/dist/src/algorithms/traversal/bfs-unified.js +47 -308
  65. package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -1
  66. package/dist/src/algorithms/traversal/bfs-variants.d.ts.map +1 -1
  67. package/dist/src/algorithms/traversal/bfs-variants.js +5 -25
  68. package/dist/src/algorithms/traversal/bfs-variants.js.map +1 -1
  69. package/dist/src/algorithms/traversal/bfs.d.ts +0 -3
  70. package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -1
  71. package/dist/src/algorithms/traversal/bfs.js +0 -4
  72. package/dist/src/algorithms/traversal/bfs.js.map +1 -1
  73. package/dist/src/algorithms/traversal/dfs.d.ts.map +1 -1
  74. package/dist/src/algorithms/traversal/dfs.js +33 -154
  75. package/dist/src/algorithms/traversal/dfs.js.map +1 -1
  76. package/dist/src/clustering/hierarchical-legacy.d.ts +56 -0
  77. package/dist/src/clustering/hierarchical-legacy.d.ts.map +1 -0
  78. package/dist/src/clustering/hierarchical-legacy.js +441 -0
  79. package/dist/src/clustering/hierarchical-legacy.js.map +1 -0
  80. package/dist/src/clustering/hierarchical.d.ts +7 -39
  81. package/dist/src/clustering/hierarchical.d.ts.map +1 -1
  82. package/dist/src/clustering/hierarchical.js +56 -417
  83. package/dist/src/clustering/hierarchical.js.map +1 -1
  84. package/dist/src/clustering/k-core-legacy.d.ts +30 -0
  85. package/dist/src/clustering/k-core-legacy.d.ts.map +1 -0
  86. package/dist/src/clustering/k-core-legacy.js +191 -0
  87. package/dist/src/clustering/k-core-legacy.js.map +1 -0
  88. package/dist/src/clustering/k-core.d.ts +8 -7
  89. package/dist/src/clustering/k-core.d.ts.map +1 -1
  90. package/dist/src/clustering/k-core.js +33 -174
  91. package/dist/src/clustering/k-core.js.map +1 -1
  92. package/dist/src/clustering/mcl-legacy.d.ts +42 -0
  93. package/dist/src/clustering/mcl-legacy.d.ts.map +1 -0
  94. package/dist/src/clustering/mcl-legacy.js +386 -0
  95. package/dist/src/clustering/mcl-legacy.js.map +1 -0
  96. package/dist/src/clustering/mcl.d.ts +9 -32
  97. package/dist/src/clustering/mcl.d.ts.map +1 -1
  98. package/dist/src/clustering/mcl.js +48 -374
  99. package/dist/src/clustering/mcl.js.map +1 -1
  100. package/dist/src/index.d.ts +29 -3
  101. package/dist/src/index.d.ts.map +1 -1
  102. package/dist/src/index.js +2 -1
  103. package/dist/src/index.js.map +1 -1
  104. package/dist/src/indexed/accelerator.d.ts +141 -11
  105. package/dist/src/indexed/accelerator.d.ts.map +1 -1
  106. package/dist/src/indexed/accelerator.js +319 -5
  107. package/dist/src/indexed/accelerator.js.map +1 -1
  108. package/dist/src/indexed/all-pairs.d.ts +59 -0
  109. package/dist/src/indexed/all-pairs.d.ts.map +1 -0
  110. package/dist/src/indexed/all-pairs.js +274 -0
  111. package/dist/src/indexed/all-pairs.js.map +1 -0
  112. package/dist/src/indexed/bellman-ford.d.ts +25 -0
  113. package/dist/src/indexed/bellman-ford.d.ts.map +1 -0
  114. package/dist/src/indexed/bellman-ford.js +59 -0
  115. package/dist/src/indexed/bellman-ford.js.map +1 -0
  116. package/dist/src/indexed/betweenness.d.ts +85 -0
  117. package/dist/src/indexed/betweenness.d.ts.map +1 -0
  118. package/dist/src/indexed/betweenness.js +188 -0
  119. package/dist/src/indexed/betweenness.js.map +1 -0
  120. package/dist/src/indexed/bfs.d.ts +69 -2
  121. package/dist/src/indexed/bfs.d.ts.map +1 -1
  122. package/dist/src/indexed/bfs.js +148 -1
  123. package/dist/src/indexed/bfs.js.map +1 -1
  124. package/dist/src/indexed/bipartite.d.ts +37 -0
  125. package/dist/src/indexed/bipartite.d.ts.map +1 -0
  126. package/dist/src/indexed/bipartite.js +54 -0
  127. package/dist/src/indexed/bipartite.js.map +1 -0
  128. package/dist/src/indexed/closeness.d.ts +49 -0
  129. package/dist/src/indexed/closeness.d.ts.map +1 -0
  130. package/dist/src/indexed/closeness.js +127 -0
  131. package/dist/src/indexed/closeness.js.map +1 -0
  132. package/dist/src/indexed/common-neighbors.d.ts +14 -1
  133. package/dist/src/indexed/common-neighbors.d.ts.map +1 -1
  134. package/dist/src/indexed/common-neighbors.js +24 -14
  135. package/dist/src/indexed/common-neighbors.js.map +1 -1
  136. package/dist/src/indexed/degree.d.ts +19 -0
  137. package/dist/src/indexed/degree.d.ts.map +1 -0
  138. package/dist/src/indexed/degree.js +45 -0
  139. package/dist/src/indexed/degree.js.map +1 -0
  140. package/dist/src/indexed/delta-pagerank.d.ts +145 -0
  141. package/dist/src/indexed/delta-pagerank.d.ts.map +1 -0
  142. package/dist/src/indexed/delta-pagerank.js +428 -0
  143. package/dist/src/indexed/delta-pagerank.js.map +1 -0
  144. package/dist/src/indexed/dfs.d.ts +55 -0
  145. package/dist/src/indexed/dfs.d.ts.map +1 -0
  146. package/dist/src/indexed/dfs.js +146 -0
  147. package/dist/src/indexed/dfs.js.map +1 -0
  148. package/dist/src/indexed/eigenvector.d.ts +48 -0
  149. package/dist/src/indexed/eigenvector.d.ts.map +1 -0
  150. package/dist/src/indexed/eigenvector.js +162 -0
  151. package/dist/src/indexed/eigenvector.js.map +1 -0
  152. package/dist/src/indexed/facade.d.ts +109 -0
  153. package/dist/src/indexed/facade.d.ts.map +1 -0
  154. package/dist/src/indexed/facade.js +204 -0
  155. package/dist/src/indexed/facade.js.map +1 -0
  156. package/dist/src/indexed/flow.d.ts +120 -0
  157. package/dist/src/indexed/flow.d.ts.map +1 -0
  158. package/dist/src/indexed/flow.js +377 -0
  159. package/dist/src/indexed/flow.js.map +1 -0
  160. package/dist/src/indexed/girvan-newman.d.ts +42 -0
  161. package/dist/src/indexed/girvan-newman.d.ts.map +1 -0
  162. package/dist/src/indexed/girvan-newman.js +90 -0
  163. package/dist/src/indexed/girvan-newman.js.map +1 -0
  164. package/dist/src/indexed/grsbm.d.ts +85 -0
  165. package/dist/src/indexed/grsbm.d.ts.map +1 -0
  166. package/dist/src/indexed/grsbm.js +287 -0
  167. package/dist/src/indexed/grsbm.js.map +1 -0
  168. package/dist/src/indexed/hierarchical.d.ts +69 -0
  169. package/dist/src/indexed/hierarchical.d.ts.map +1 -0
  170. package/dist/src/indexed/hierarchical.js +245 -0
  171. package/dist/src/indexed/hierarchical.js.map +1 -0
  172. package/dist/src/indexed/index.d.ts +29 -3
  173. package/dist/src/indexed/index.d.ts.map +1 -1
  174. package/dist/src/indexed/index.js +29 -3
  175. package/dist/src/indexed/index.js.map +1 -1
  176. package/dist/src/indexed/isomorphism.d.ts +42 -0
  177. package/dist/src/indexed/isomorphism.d.ts.map +1 -0
  178. package/dist/src/indexed/isomorphism.js +269 -0
  179. package/dist/src/indexed/isomorphism.js.map +1 -0
  180. package/dist/src/indexed/label-propagation.d.ts +134 -0
  181. package/dist/src/indexed/label-propagation.d.ts.map +1 -0
  182. package/dist/src/indexed/label-propagation.js +486 -0
  183. package/dist/src/indexed/label-propagation.js.map +1 -0
  184. package/dist/src/indexed/leiden.d.ts +52 -0
  185. package/dist/src/indexed/leiden.d.ts.map +1 -0
  186. package/dist/src/indexed/leiden.js +384 -0
  187. package/dist/src/indexed/leiden.js.map +1 -0
  188. package/dist/src/indexed/link-prediction.d.ts +147 -0
  189. package/dist/src/indexed/link-prediction.d.ts.map +1 -0
  190. package/dist/src/indexed/link-prediction.js +317 -0
  191. package/dist/src/indexed/link-prediction.js.map +1 -0
  192. package/dist/src/indexed/markov.d.ts +54 -0
  193. package/dist/src/indexed/markov.d.ts.map +1 -0
  194. package/dist/src/indexed/markov.js +284 -0
  195. package/dist/src/indexed/markov.js.map +1 -0
  196. package/dist/src/indexed/matching.d.ts +53 -0
  197. package/dist/src/indexed/matching.d.ts.map +1 -0
  198. package/dist/src/indexed/matching.js +139 -0
  199. package/dist/src/indexed/matching.js.map +1 -0
  200. package/dist/src/indexed/min-cut.d.ts +48 -0
  201. package/dist/src/indexed/min-cut.d.ts.map +1 -0
  202. package/dist/src/indexed/min-cut.js +175 -0
  203. package/dist/src/indexed/min-cut.js.map +1 -0
  204. package/dist/src/indexed/modularity.d.ts +34 -0
  205. package/dist/src/indexed/modularity.d.ts.map +1 -0
  206. package/dist/src/indexed/modularity.js +74 -0
  207. package/dist/src/indexed/modularity.js.map +1 -0
  208. package/dist/src/indexed/mst.d.ts +29 -1
  209. package/dist/src/indexed/mst.d.ts.map +1 -1
  210. package/dist/src/indexed/mst.js +62 -0
  211. package/dist/src/indexed/mst.js.map +1 -1
  212. package/dist/src/indexed/pagerank.d.ts +29 -6
  213. package/dist/src/indexed/pagerank.d.ts.map +1 -1
  214. package/dist/src/indexed/pagerank.js +107 -11
  215. package/dist/src/indexed/pagerank.js.map +1 -1
  216. package/dist/src/indexed/point-to-point.d.ts +53 -0
  217. package/dist/src/indexed/point-to-point.d.ts.map +1 -0
  218. package/dist/src/indexed/point-to-point.js +173 -0
  219. package/dist/src/indexed/point-to-point.js.map +1 -0
  220. package/dist/src/indexed/scc.d.ts +53 -0
  221. package/dist/src/indexed/scc.d.ts.map +1 -0
  222. package/dist/src/indexed/scc.js +110 -0
  223. package/dist/src/indexed/scc.js.map +1 -0
  224. package/dist/src/indexed/spectral.d.ts +61 -0
  225. package/dist/src/indexed/spectral.d.ts.map +1 -0
  226. package/dist/src/indexed/spectral.js +476 -0
  227. package/dist/src/indexed/spectral.js.map +1 -0
  228. package/dist/src/indexed/structures/bit-set.d.ts +45 -0
  229. package/dist/src/indexed/structures/bit-set.d.ts.map +1 -0
  230. package/dist/src/indexed/structures/bit-set.js +57 -0
  231. package/dist/src/indexed/structures/bit-set.js.map +1 -0
  232. package/dist/src/indexed/structures/max-heap.d.ts +52 -0
  233. package/dist/src/indexed/structures/max-heap.d.ts.map +1 -0
  234. package/dist/src/indexed/structures/max-heap.js +66 -0
  235. package/dist/src/indexed/structures/max-heap.js.map +1 -0
  236. package/dist/src/indexed/structures/min-heap.d.ts +30 -1
  237. package/dist/src/indexed/structures/min-heap.d.ts.map +1 -1
  238. package/dist/src/indexed/structures/min-heap.js +46 -6
  239. package/dist/src/indexed/structures/min-heap.js.map +1 -1
  240. package/dist/src/indexed/structures/ring-queue.d.ts +41 -0
  241. package/dist/src/indexed/structures/ring-queue.d.ts.map +1 -0
  242. package/dist/src/indexed/structures/ring-queue.js +64 -0
  243. package/dist/src/indexed/structures/ring-queue.js.map +1 -0
  244. package/dist/src/indexed/sync.d.ts +50 -0
  245. package/dist/src/indexed/sync.d.ts.map +1 -0
  246. package/dist/src/indexed/sync.js +175 -0
  247. package/dist/src/indexed/sync.js.map +1 -0
  248. package/dist/src/indexed/terahac.d.ts +58 -0
  249. package/dist/src/indexed/terahac.d.ts.map +1 -0
  250. package/dist/src/indexed/terahac.js +244 -0
  251. package/dist/src/indexed/terahac.js.map +1 -0
  252. package/dist/src/indexed/to-snapshot.d.ts +45 -2
  253. package/dist/src/indexed/to-snapshot.d.ts.map +1 -1
  254. package/dist/src/indexed/to-snapshot.js +140 -6
  255. package/dist/src/indexed/to-snapshot.js.map +1 -1
  256. package/dist/src/link-prediction/common-neighbors-legacy.d.ts +71 -0
  257. package/dist/src/link-prediction/common-neighbors-legacy.d.ts.map +1 -0
  258. package/dist/src/link-prediction/common-neighbors-legacy.js +172 -0
  259. package/dist/src/link-prediction/common-neighbors-legacy.js.map +1 -0
  260. package/dist/src/link-prediction/common-neighbors.d.ts +11 -19
  261. package/dist/src/link-prediction/common-neighbors.d.ts.map +1 -1
  262. package/dist/src/link-prediction/common-neighbors.js +56 -123
  263. package/dist/src/link-prediction/common-neighbors.js.map +1 -1
  264. package/dist/src/optimized/direction-optimized-bfs.d.ts +6 -0
  265. package/dist/src/optimized/direction-optimized-bfs.d.ts.map +1 -1
  266. package/dist/src/optimized/direction-optimized-bfs.js +6 -0
  267. package/dist/src/optimized/direction-optimized-bfs.js.map +1 -1
  268. package/dist/src/research/grsbm-legacy.d.ts +82 -0
  269. package/dist/src/research/grsbm-legacy.d.ts.map +1 -0
  270. package/dist/src/research/grsbm-legacy.js +416 -0
  271. package/dist/src/research/grsbm-legacy.js.map +1 -0
  272. package/dist/src/research/grsbm.d.ts +9 -66
  273. package/dist/src/research/grsbm.d.ts.map +1 -1
  274. package/dist/src/research/grsbm.js +67 -391
  275. package/dist/src/research/grsbm.js.map +1 -1
  276. package/dist/src/research/sync-legacy.d.ts +48 -0
  277. package/dist/src/research/sync-legacy.d.ts.map +1 -0
  278. package/dist/src/research/sync-legacy.js +337 -0
  279. package/dist/src/research/sync-legacy.js.map +1 -0
  280. package/dist/src/research/sync.d.ts +10 -32
  281. package/dist/src/research/sync.d.ts.map +1 -1
  282. package/dist/src/research/sync.js +28 -316
  283. package/dist/src/research/sync.js.map +1 -1
  284. package/package.json +4 -3
  285. package/src/algorithms/centrality/betweenness.ts +51 -1
  286. package/src/algorithms/centrality/closeness.ts +112 -12
  287. package/src/algorithms/centrality/degree.ts +19 -0
  288. package/src/algorithms/centrality/eigenvector.ts +34 -0
  289. package/src/algorithms/centrality/hits.ts +24 -0
  290. package/src/algorithms/centrality/katz.ts +32 -0
  291. package/src/algorithms/centrality/pagerank.ts +53 -13
  292. package/src/algorithms/community/girvan-newman-legacy.ts +414 -0
  293. package/src/algorithms/community/girvan-newman.ts +36 -386
  294. package/src/algorithms/community/label-propagation.ts +24 -133
  295. package/src/algorithms/components/connected.ts +28 -95
  296. package/src/algorithms/mst/kruskal.ts +65 -4
  297. package/src/algorithms/shortest-path/bellman-ford.ts +49 -0
  298. package/src/algorithms/shortest-path/dijkstra.ts +29 -0
  299. package/src/algorithms/shortest-path/floyd-warshall.ts +106 -136
  300. package/src/algorithms/traversal/bfs-unified.ts +52 -366
  301. package/src/algorithms/traversal/bfs-variants.ts +5 -28
  302. package/src/algorithms/traversal/bfs.ts +0 -4
  303. package/src/algorithms/traversal/dfs.ts +39 -182
  304. package/src/clustering/hierarchical-legacy.ts +551 -0
  305. package/src/clustering/hierarchical.ts +64 -520
  306. package/src/clustering/k-core-legacy.ts +229 -0
  307. package/src/clustering/k-core.ts +38 -209
  308. package/src/clustering/mcl-legacy.ts +498 -0
  309. package/src/clustering/mcl.ts +46 -479
  310. package/src/index.ts +90 -3
  311. package/src/indexed/accelerator.ts +502 -16
  312. package/src/indexed/all-pairs.ts +342 -0
  313. package/src/indexed/bellman-ford.ts +72 -0
  314. package/src/indexed/betweenness.ts +258 -0
  315. package/src/indexed/bfs.ts +189 -3
  316. package/src/indexed/bipartite.ts +77 -0
  317. package/src/indexed/closeness.ts +160 -0
  318. package/src/indexed/common-neighbors.ts +31 -14
  319. package/src/indexed/degree.ts +55 -0
  320. package/src/indexed/delta-pagerank.ts +513 -0
  321. package/src/indexed/dfs.ts +189 -0
  322. package/src/indexed/eigenvector.ts +202 -0
  323. package/src/indexed/facade.ts +229 -0
  324. package/src/indexed/flow.ts +500 -0
  325. package/src/indexed/girvan-newman.ts +120 -0
  326. package/src/indexed/grsbm.ts +390 -0
  327. package/src/indexed/hierarchical.ts +295 -0
  328. package/src/indexed/index.ts +94 -3
  329. package/src/indexed/isomorphism.ts +305 -0
  330. package/src/indexed/label-propagation.ts +582 -0
  331. package/src/indexed/leiden.ts +436 -0
  332. package/src/indexed/link-prediction.ts +399 -0
  333. package/src/indexed/markov.ts +324 -0
  334. package/src/indexed/matching.ts +192 -0
  335. package/src/indexed/min-cut.ts +201 -0
  336. package/src/indexed/modularity.ts +81 -0
  337. package/src/indexed/mst.ts +79 -1
  338. package/src/indexed/pagerank.ts +128 -15
  339. package/src/indexed/point-to-point.ts +220 -0
  340. package/src/indexed/scc.ts +132 -0
  341. package/src/indexed/spectral.ts +550 -0
  342. package/src/indexed/structures/bit-set.ts +65 -0
  343. package/src/indexed/structures/max-heap.ts +74 -0
  344. package/src/indexed/structures/min-heap.ts +51 -6
  345. package/src/indexed/structures/ring-queue.ts +70 -0
  346. package/src/indexed/sync.ts +229 -0
  347. package/src/indexed/terahac.ts +290 -0
  348. package/src/indexed/to-snapshot.ts +156 -6
  349. package/src/link-prediction/common-neighbors-legacy.ts +252 -0
  350. package/src/link-prediction/common-neighbors.ts +65 -168
  351. package/src/optimized/direction-optimized-bfs.ts +6 -1
  352. package/src/research/grsbm-legacy.ts +586 -0
  353. package/src/research/grsbm.ts +76 -555
  354. package/src/research/sync-legacy.ts +456 -0
  355. package/src/research/sync.ts +30 -431
@@ -11,12 +11,26 @@
11
11
  * @module
12
12
  */
13
13
  import type { F32, F64, GraphSnapshot, NumericVector, U32 } from "@graphty/graph-format";
14
- import type { BfsOptions } from "./bfs.js";
14
+ import { type ApspOptions } from "./all-pairs.js";
15
+ import type { BellmanFordResult } from "./bellman-ford.js";
16
+ import { type BetweennessOptions, type EdgeBetweennessOptions } from "./betweenness.js";
17
+ import type { ArcOrderOption, BfsOptions } from "./bfs.js";
18
+ import type { ClosenessOptions } from "./closeness.js";
19
+ import type { LabelResult } from "./components.js";
20
+ import type { DfsOptions, DfsResult } from "./dfs.js";
15
21
  import { type SsspOptions, type SsspResult } from "./dijkstra.js";
22
+ import { type EigenvectorOptions } from "./eigenvector.js";
23
+ import type { MaxFlowOptions, MaxFlowResult, MinCutResult } from "./flow.js";
24
+ import type { GirvanNewmanOptions, GirvanNewmanResult } from "./girvan-newman.js";
16
25
  import type { HitsOptions } from "./hits.js";
17
26
  import type { KatzOptions } from "./katz.js";
27
+ import type { LabelPropagationOptions } from "./label-propagation.js";
28
+ import type { LeidenOptions, LeidenResult } from "./leiden.js";
29
+ import type { LinkPredictionOptions, LinkPredictionResult } from "./link-prediction.js";
18
30
  import type { LouvainOptions } from "./louvain.js";
19
- import type { MstOptions } from "./mst.js";
31
+ import type { BipartiteMatchingOptions, BipartiteMatchingResult } from "./matching.js";
32
+ import type { KargerOptions, StoerWagnerOptions } from "./min-cut.js";
33
+ import type { MstOptions, PrimOptions, PrimResult } from "./mst.js";
20
34
  import type { PageRankOptions } from "./pagerank.js";
21
35
  /** A score vector with its convergence report. @public */
22
36
  export interface ScoresResultLike {
@@ -66,6 +80,10 @@ export interface ApspResultLike {
66
80
  readonly dist: NumericVector;
67
81
  readonly n: number;
68
82
  }
83
+ /** ApspResultLike plus the negative-cycle flag. @public */
84
+ export interface ApspCycleResultLike extends ApspResultLike {
85
+ readonly hasNegativeCycle: boolean;
86
+ }
69
87
  /** Per-node coreness. @public */
70
88
  export interface CorenessResultLike {
71
89
  readonly coreness: U32;
@@ -88,14 +106,14 @@ export interface CommunityResultLike extends LabelResultLike {
88
106
  */
89
107
  export interface AlgorithmAccelerator {
90
108
  readonly kind: string;
91
- pageRank?(s: GraphSnapshot, options?: PageRankOptions): Promise<PageRankResultLike>;
92
- personalizedPageRank?(s: GraphSnapshot, personalization: F32 | F64, options?: PageRankOptions): Promise<PageRankResultLike>;
109
+ pageRank?(s: GraphSnapshot, options?: PageRankOptionsLike): Promise<PageRankResultLike>;
110
+ personalizedPageRank?(s: GraphSnapshot, personalization: F32 | F64, options?: PageRankOptionsLike): Promise<PageRankResultLike>;
93
111
  hits?(s: GraphSnapshot, options?: HitsOptionsLike): Promise<HitsResultLike>;
94
112
  eigenvectorCentrality?(s: GraphSnapshot, options?: HitsOptionsLike): Promise<ScoresResultLike>;
95
- katzCentrality?(s: GraphSnapshot, options?: HitsOptionsLike): Promise<ScoresResultLike>;
113
+ katzCentrality?(s: GraphSnapshot, options?: KatzOptionsLike): Promise<ScoresResultLike>;
96
114
  connectedComponents?(s: GraphSnapshot): Promise<LabelResultLike>;
97
115
  weaklyConnectedComponents?(s: GraphSnapshot): Promise<LabelResultLike>;
98
- breadthFirstSearch?(s: GraphSnapshot, source: number, options?: BfsOptions): Promise<BfsResultLike>;
116
+ breadthFirstSearch?(s: GraphSnapshot, source: number, options?: Pick<BfsOptions, "maxDepth">): Promise<BfsResultLike>;
99
117
  sssp?(s: GraphSnapshot, source: number, options?: SsspOptions): Promise<SsspResultLike>;
100
118
  bellmanFord?(s: GraphSnapshot, source: number, options?: SsspOptions): Promise<BellmanFordResultLike>;
101
119
  closenessCentrality?(s: GraphSnapshot, options?: HitsOptionsLike): Promise<ScoresResultLike>;
@@ -125,6 +143,26 @@ export interface HitsOptionsLike {
125
143
  readonly tolerance?: number | undefined;
126
144
  readonly weighted?: boolean | undefined;
127
145
  }
146
+ /**
147
+ * Katz options as the accelerator sees them: the power-iteration trio plus the two coefficients
148
+ * that define the recurrence `x = alpha * A^T x + beta`.
149
+ * @public
150
+ */
151
+ export interface KatzOptionsLike extends HitsOptionsLike {
152
+ readonly alpha?: number | undefined;
153
+ readonly beta?: number | undefined;
154
+ }
155
+ /**
156
+ * PageRank options as the accelerator sees them: the port's `PageRankOptions` without
157
+ * `initialRanks` and `convergenceNorm`, which the dispatcher keeps on the CPU port.
158
+ * @public
159
+ */
160
+ export interface PageRankOptionsLike {
161
+ readonly dampingFactor?: number | undefined;
162
+ readonly maxIterations?: number | undefined;
163
+ readonly tolerance?: number | undefined;
164
+ readonly weighted?: boolean | undefined;
165
+ }
128
166
  /**
129
167
  * Betweenness options as the accelerator sees them: node INDICES, which is the only form that
130
168
  * means anything on a snapshot (plan decision PD-5).
@@ -143,17 +181,92 @@ export interface BetweennessAcceleratorOptions {
143
181
  *
144
182
  * The list GROWS with the A2 ports -- each port PR adds its method (plan departure DEP-8A-E).
145
183
  *
146
- * The four newest methods take their port's own option type, which is WIDER than the
147
- * `HitsOptionsLike` the accelerator side still declares: an accelerator therefore never sees Katz's
148
- * `alpha` / `beta` or Louvain's `resolution`, and one that is handed them would answer a different
149
- * question than the CPU port. Narrowing `AlgorithmAccelerator` is a change to the interface the GPU
150
- * package implements, so it belongs to the pull request that lands a GPU Louvain or Katz.
184
+ * `louvain` and `kCoreDecomposition` pass their port's options through unchanged; Louvain's
185
+ * `resolution` is wider than the `HitsOptionsLike` the accelerator side declares, and narrowing that
186
+ * member belongs to the pull request that lands a GPU Louvain.
187
+ *
188
+ * `katzCentrality` and `hits` hand the accelerator only what it reads -- `{ alpha, beta,
189
+ * maxIterations, tolerance, weighted }` and `{ maxIterations, tolerance, weighted }` -- with
190
+ * `weighted` resolved to the port's default (false), since an accelerator may default it the
191
+ * other way, and give its result the port's scale: an accelerator may end its iterate on any
192
+ * positive scale (webgpu-graph-algorithms divides Katz by its L2 norm and HITS by its sum), so
193
+ * Katz is min-max rescaled to [0, 1] as the port rescales its own, and each HITS vector is
194
+ * rescaled to unit length, or to a largest entry of 1 under `normalized: false`, as the port does.
195
+ * Katz runs the CPU port under `normalized: false` (the raw sums cannot be recovered from a
196
+ * rescaled vector), with `alpha` 0, and when every node has the same in-degree (or in-weight):
197
+ * there every score is equal, and the port leaves an equal vector unscaled. The iteration counts
198
+ * of the two paths differ.
199
+ *
200
+ * `labelPropagation` passes its options through the same way, except that a call with `randomSeed`
201
+ * set runs the CPU port: the partition depends on the seed, and a GPU kernel has none to honour. An
202
+ * accelerator's result carries no `iterations` or `converged`; call `indexed.labelPropagation`
203
+ * directly for those. webgpu-graph-algorithms does not implement `labelPropagation` yet, so with its
204
+ * accelerator this method runs the CPU port.
205
+ *
206
+ * `breadthFirstSearch` with a `target` or an `arcOrder` runs the CPU port: a GPU BFS expands whole
207
+ * levels and has no early stop and no neighbour order, so it would give a different result.
208
+ *
209
+ * `pageRank` and `personalizedPageRank` run the CPU port when `initialRanks` or
210
+ * `convergenceNorm: "max"` is set: the accelerator members take neither. The accelerator is
211
+ * handed `{ dampingFactor, maxIterations, tolerance, weighted }` with `weighted` resolved to the
212
+ * port's default (false), since an accelerator may default it the other way. Its stopping rule
213
+ * may differ from the port's (webgpu-graph-algorithms stops at an L1 change below
214
+ * `tolerance * n`, as networkx does), so the two paths can stop at different iterations.
215
+ * `personalizedPageRank` also runs the CPU port when the personalization is all zero (the port
216
+ * then answers plain PageRank, as the legacy function does for no personal nodes) or when a node
217
+ * is dangling: the port spreads dangling mass as legacy does, `d * dangling / n` scaled by the
218
+ * personalization, and the accelerator spreads `d * dangling` by the personalization, as networkx
219
+ * does. The two agree when no node is dangling.
220
+ *
221
+ * `eigenvectorCentrality` goes to the accelerator only for the question its kernel answers the
222
+ * same way: an undirected snapshot with no parallel edges and no bipartite component, unweighted,
223
+ * from the uniform start. The kernel iterates on `A` where the port iterates on `A + I`, and walks
224
+ * every parallel arc where the port counts a neighbour once; on a bipartite component the
225
+ * iteration on `A` oscillates forever. A directed snapshot always runs the port, since a
226
+ * periodic strongly connected component oscillates the same way and is not cheap to rule out.
227
+ * The accelerator is called with `{ maxIterations, tolerance, weighted: false }` and its
228
+ * unit-length vector is rescaled to [0, 1] exactly as the port rescales its own unless
229
+ * `normalized: false`. A result with `converged: false` raises `ConvergenceError`, as the port
230
+ * does. The iteration counts of the two paths differ.
231
+ *
232
+ * `allPairsShortestPath` is the reverse case: the accelerator member reads none of the port's
233
+ * options and has no negative-cycle flag, so the dispatcher calls it, without options, only when it
234
+ * answers the port's question -- no options that change the result, at most the port's default
235
+ * 5,792 nodes, and non-negative finite snapshot weights -- and runs the CPU port otherwise. That is
236
+ * routing decided from the inputs, not a fallback: an error the accelerator raises still propagates.
237
+ * Same question is not same bits: both read the snapshot's f32 arc weights, but a GPU member sums
238
+ * them in f32 and returns an f32 `dist`, where the port sums in f64. The two agree exactly while
239
+ * every path sum is an integer below 2^24, and otherwise may differ by f32 rounding.
240
+ *
241
+ * `bellmanFord` goes to the accelerator unless the call carries a `weights` override that is not a
242
+ * `Float32Array`: an accelerator narrows the override to f32, so an f64 one -- the exact weights a
243
+ * legacy facade passes -- would be answered for different weights. Its result gets the same
244
+ * `pathTo` / `pathEdges` decoration as `sssp`.
245
+ *
246
+ * The three path centralities route the same way. `betweennessCentrality` and
247
+ * `edgeBetweennessCentrality` go to the accelerator unless the snapshot is a multigraph (the port
248
+ * counts a pair's parallel edges as one path, the WebGPU kernel as several), `endpoints` is set, or an
249
+ * `alive` edge mask is given. The accelerator is always handed the sources the port would run -- the
250
+ * caller's, the port's `k` draw, or every node -- so it never substitutes a draw or a sampling default of
251
+ * its own. `closenessCentrality` goes only for the plain score -- no `normalized`,
252
+ * `harmonic`, `cutoff` or `weights` override -- and hands the accelerator an explicit `weighted`,
253
+ * because the WebGPU member otherwise defaults it from the snapshot where the port defaults it off.
254
+ *
255
+ * `depthFirstSearch`, `stronglyConnectedComponents`, `leiden`, `girvanNewman`, `maxFlow`,
256
+ * `minSTCut`, `stoerWagner`, `kargerMinCut`, `commonNeighborsPrediction`, `adamicAdarPrediction`,
257
+ * `primMST` and `maximumBipartiteMatching` always run the CPU port: `AlgorithmAccelerator` declares no member for
258
+ * them, since no GPU kernel exists. They are here so graphty-element runs every algorithm through
259
+ * one object, and each gains an accelerator branch when a kernel lands. A port's throw becomes a
260
+ * rejection.
151
261
  * @public
152
262
  */
153
263
  export interface AcceleratedAlgorithms {
154
264
  readonly accelerator: AlgorithmAccelerator | null;
155
265
  pageRank(s: GraphSnapshot, options?: PageRankOptions): Promise<PageRankResultLike>;
266
+ personalizedPageRank(s: GraphSnapshot, personalization: F32 | F64, options?: PageRankOptions): Promise<PageRankResultLike>;
267
+ eigenvectorCentrality(s: GraphSnapshot, options?: EigenvectorOptions): Promise<ScoresResultLike>;
156
268
  sssp(s: GraphSnapshot, source: number, options?: SsspOptions): Promise<SsspResult>;
269
+ bellmanFord(s: GraphSnapshot, source: number, options?: SsspOptions): Promise<BellmanFordResult>;
157
270
  breadthFirstSearch(s: GraphSnapshot, source: number, options?: BfsOptions): Promise<BfsResultLike>;
158
271
  connectedComponents(s: GraphSnapshot): Promise<LabelResultLike>;
159
272
  weaklyConnectedComponents(s: GraphSnapshot): Promise<LabelResultLike>;
@@ -162,6 +275,23 @@ export interface AcceleratedAlgorithms {
162
275
  katzCentrality(s: GraphSnapshot, options?: KatzOptions): Promise<ScoresResultLike>;
163
276
  hits(s: GraphSnapshot, options?: HitsOptions): Promise<HitsResultLike>;
164
277
  louvain(s: GraphSnapshot, options?: LouvainOptions): Promise<CommunityResultLike>;
278
+ labelPropagation(s: GraphSnapshot, options?: LabelPropagationOptions): Promise<LabelResultLike>;
279
+ allPairsShortestPath(s: GraphSnapshot, options?: ApspOptions): Promise<ApspCycleResultLike>;
280
+ betweennessCentrality(s: GraphSnapshot, options?: BetweennessOptions): Promise<ScoresResultLike>;
281
+ edgeBetweennessCentrality(s: GraphSnapshot, options?: EdgeBetweennessOptions): Promise<EdgeScoresResultLike>;
282
+ closenessCentrality(s: GraphSnapshot, options?: ClosenessOptions): Promise<ScoresResultLike>;
283
+ depthFirstSearch(s: GraphSnapshot, start: number, options?: DfsOptions): Promise<DfsResult>;
284
+ stronglyConnectedComponents(s: GraphSnapshot, options?: ArcOrderOption): Promise<LabelResult>;
285
+ leiden(s: GraphSnapshot, options?: LeidenOptions): Promise<LeidenResult>;
286
+ girvanNewman(s: GraphSnapshot, options?: GirvanNewmanOptions): Promise<GirvanNewmanResult>;
287
+ maxFlow(s: GraphSnapshot, source: number, sink: number, options?: MaxFlowOptions): Promise<MaxFlowResult>;
288
+ minSTCut(s: GraphSnapshot, source: number, sink: number, options?: MaxFlowOptions): Promise<MinCutResult>;
289
+ stoerWagner(s: GraphSnapshot, options?: StoerWagnerOptions): Promise<MinCutResult>;
290
+ kargerMinCut(s: GraphSnapshot, options?: KargerOptions): Promise<MinCutResult>;
291
+ commonNeighborsPrediction(s: GraphSnapshot, options?: LinkPredictionOptions): Promise<LinkPredictionResult>;
292
+ adamicAdarPrediction(s: GraphSnapshot, options?: LinkPredictionOptions): Promise<LinkPredictionResult>;
293
+ primMST(s: GraphSnapshot, options?: PrimOptions): Promise<PrimResult>;
294
+ maximumBipartiteMatching(s: GraphSnapshot, options?: BipartiteMatchingOptions): Promise<BipartiteMatchingResult>;
165
295
  }
166
296
  /**
167
297
  * Build the dispatcher for an accelerator, or for none.
@@ -1 +1 @@
1
- {"version":3,"file":"accelerator.d.ts","sourceRoot":"","sources":["../../../src/indexed/accelerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accelerator.d.ts","sourceRoot":"","sources":["../../../src/indexed/accelerator.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,255 @@
10
10
  * broken device behind a slow answer.
11
11
  * @module
12
12
  */
13
+ import { ConvergenceError } from "../errors.js";
14
+ import { APSP_DEFAULT_MAX_NODES } from "./all-pairs.js";
15
+ import { resolveSources } from "./betweenness.js";
13
16
  import { walkPredArcs, walkPredEdges } from "./dijkstra.js";
17
+ import { minMaxRescale } from "./eigenvector.js";
14
18
  import * as indexed from "./index.js";
19
+ /**
20
+ * Run a CPU port inside a promise, so a throw becomes a rejection.
21
+ * @param run - The port call
22
+ * @returns Its result
23
+ */
24
+ function onCpu(run) {
25
+ return new Promise((resolve) => {
26
+ resolve(run());
27
+ });
28
+ }
29
+ /**
30
+ * Betweenness options with the sources the port would run spelled out, and no `k`. `endpoints` is never
31
+ * forwarded: a call that sets it runs the port.
32
+ * @param s - The snapshot
33
+ * @param options - The caller's port options
34
+ * @returns The options for the accelerator
35
+ */
36
+ function explicitSources(s, options) {
37
+ return {
38
+ normalized: options?.normalized,
39
+ sources: resolveSources(s.nodeCount, options?.sources, options?.k),
40
+ };
41
+ }
42
+ /**
43
+ * Whether the accelerator's closeness member answers the port's question: only the plain
44
+ * `1 / sum(distance)` score over the snapshot's own weights.
45
+ * @param options - The caller's port options
46
+ * @returns True when the call may go to the accelerator
47
+ */
48
+ function acceleratorAnswersCloseness(options) {
49
+ return (options?.normalized !== true &&
50
+ options?.harmonic !== true &&
51
+ options?.cutoff === undefined &&
52
+ options?.weights === undefined);
53
+ }
54
+ /**
55
+ * Whether the accelerator's all-pairs member, called with the snapshot alone, answers the question
56
+ * the CPU port would (at its own precision; see `AcceleratedAlgorithms`): no option that changes the answer, a size the port accepts by default, and
57
+ * weights under which no negative cycle can exist, so `hasNegativeCycle: false` is true.
58
+ * @param s - The snapshot
59
+ * @param options - The caller's port options
60
+ * @returns True when the call may go to the accelerator
61
+ */
62
+ function acceleratorAnswersApsp(s, options) {
63
+ return (options?.weights === undefined &&
64
+ (options?.method ?? "auto") === "auto" &&
65
+ options?.maxNodes === undefined &&
66
+ options?.paths !== true &&
67
+ options?.weighted !== false &&
68
+ s.nodeCount <= APSP_DEFAULT_MAX_NODES &&
69
+ s.flags.nonNegativeWeights &&
70
+ s.flags.finiteWeights);
71
+ }
72
+ /**
73
+ * Whether a PageRank call asks for something the accelerator members do not take.
74
+ * @param options - The caller's port options
75
+ * @returns True when the call must run the CPU port
76
+ */
77
+ function pageRankNeedsCpu(options) {
78
+ return options?.initialRanks !== undefined || options?.convergenceNorm === "max";
79
+ }
80
+ /**
81
+ * The PageRank options an accelerator is handed: only the members it takes, with `weighted`
82
+ * resolved to the port's default.
83
+ * @param options - The caller's port options
84
+ * @returns The accelerator's options
85
+ */
86
+ function pageRankOptionsLike(options) {
87
+ return {
88
+ dampingFactor: options?.dampingFactor,
89
+ maxIterations: options?.maxIterations,
90
+ tolerance: options?.tolerance,
91
+ weighted: options?.weighted === true,
92
+ };
93
+ }
94
+ /**
95
+ * Whether a personalized PageRank call must run the port: an all-zero personalization (plain
96
+ * PageRank in the port, an error in the accelerator) or a dangling node (the two spread its mass
97
+ * differently).
98
+ * @param s - The snapshot
99
+ * @param personalization - The caller's personalization
100
+ * @param options - The caller's port options
101
+ * @returns True when the call must run the CPU port
102
+ */
103
+ function personalizedNeedsCpu(s, personalization, options) {
104
+ const outW = options?.weighted === true && s.weights !== null ? s.weightedOutDegree() : s.outDegree();
105
+ return pageRankNeedsCpu(options) || !personalization.some((mass) => mass > 0) || outW.some((w) => w === 0);
106
+ }
107
+ /**
108
+ * Whether the accelerator's eigenvector member answers the port's question: an undirected
109
+ * snapshot with no parallel edges and no bipartite component, from the uniform start.
110
+ * @param s - The snapshot
111
+ * @param options - The caller's port options
112
+ * @returns True when the call may go to the accelerator
113
+ */
114
+ function acceleratorAnswersEigenvector(s, options) {
115
+ return options?.startVector === undefined && !s.directed && !s.flags.multigraph && !hasBipartiteComponent(s);
116
+ }
117
+ /**
118
+ * Whether some connected component with at least one edge is bipartite, by two-colouring each
119
+ * component breadth first. A self-loop is an odd cycle.
120
+ * @param s - An undirected snapshot
121
+ * @returns True when a component with an edge has no odd cycle
122
+ */
123
+ function hasBipartiteComponent(s) {
124
+ const n = s.nodeCount;
125
+ const colour = new Int8Array(n).fill(-1);
126
+ const queue = new Uint32Array(n);
127
+ for (let root = 0; root < n; root++) {
128
+ if (colour[root] !== -1 || s.rowPtr[root] === s.rowPtr[root + 1]) {
129
+ continue;
130
+ }
131
+ colour[root] = 0;
132
+ let tail = 0;
133
+ queue[tail++] = root;
134
+ let odd = false;
135
+ for (let head = 0; head < tail; head++) {
136
+ const u = queue[head];
137
+ for (let a = s.rowPtr[u]; a < s.rowPtr[u + 1]; a++) {
138
+ const v = s.colIdx[a];
139
+ if (colour[v] === -1) {
140
+ colour[v] = 1 - colour[u];
141
+ queue[tail++] = v;
142
+ }
143
+ else if (colour[v] === colour[u]) {
144
+ odd = true;
145
+ }
146
+ }
147
+ }
148
+ if (!odd) {
149
+ return true;
150
+ }
151
+ }
152
+ return false;
153
+ }
154
+ /**
155
+ * Give an accelerator's eigenvector result the port's contract: an unconverged run throws, and the
156
+ * unit-length vector is rescaled to [0, 1] unless `normalized: false`.
157
+ * @param like - The accelerator's result
158
+ * @param options - The caller's port options
159
+ * @returns The result, rescaled into a new vector when asked
160
+ */
161
+ function finishEigenvector(like, options) {
162
+ if (!like.converged) {
163
+ throw new ConvergenceError("eigenvectorCentrality", options?.maxIterations ?? 100, options?.tolerance ?? 1e-6);
164
+ }
165
+ if (options?.normalized === false) {
166
+ return like;
167
+ }
168
+ const scores = Float64Array.from(like.scores);
169
+ minMaxRescale(scores);
170
+ return { scores, iterations: like.iterations, converged: true };
171
+ }
172
+ /**
173
+ * Whether the accelerator's Katz member answers the port's question: the min-max rescaled score
174
+ * of a vector that is not constant. Raw sums (`normalized: false`) are lost to the accelerator's
175
+ * own rescaling, and a constant vector -- `alpha` 0, or the same in-degree (in-weight) everywhere
176
+ * -- is one the port leaves unscaled.
177
+ * @param s - The snapshot
178
+ * @param options - The caller's port options
179
+ * @returns True when the call may go to the accelerator
180
+ */
181
+ function acceleratorAnswersKatz(s, options) {
182
+ if (options?.normalized === false || options?.alpha === 0) {
183
+ return false;
184
+ }
185
+ const rev = s.reverse();
186
+ const weights = options?.weighted === true ? rev.weights : null;
187
+ let first;
188
+ for (let v = 0; v < s.nodeCount; v++) {
189
+ let inWeight = 0;
190
+ for (let a = rev.rowPtr[v]; a < rev.rowPtr[v + 1]; a++) {
191
+ inWeight += weights === null ? 1 : weights[a];
192
+ }
193
+ first ?? (first = inWeight);
194
+ if (inWeight !== first) {
195
+ return true;
196
+ }
197
+ }
198
+ return false;
199
+ }
200
+ /**
201
+ * Rescale a vector in place to [0, 1] by min-max, leaving a constant vector alone -- the Katz
202
+ * port's own rescaling.
203
+ * @param x - The vector
204
+ */
205
+ function katzRescale(x) {
206
+ let min = Infinity;
207
+ let max = -Infinity;
208
+ for (const value of x) {
209
+ min = Math.min(min, value);
210
+ max = Math.max(max, value);
211
+ }
212
+ const range = max - min;
213
+ if (range > 0) {
214
+ for (let v = 0; v < x.length; v++) {
215
+ x[v] = (x[v] - min) / range;
216
+ }
217
+ }
218
+ }
219
+ /**
220
+ * Give an accelerator's Katz result the port's scale: min-max rescaled to [0, 1], into a new vector.
221
+ * @param like - The accelerator's result
222
+ * @returns The rescaled result
223
+ */
224
+ function finishKatz(like) {
225
+ const scores = Float64Array.from(like.scores);
226
+ katzRescale(scores);
227
+ return { scores, iterations: like.iterations, converged: like.converged };
228
+ }
229
+ /**
230
+ * Rescale a vector in place to unit L2 length, or to a largest entry of 1; a vector with no
231
+ * positive scale is left alone, as the port leaves it.
232
+ * @param x - The vector
233
+ * @param norm - Which scale the port gives it
234
+ */
235
+ function hitsRescale(x, norm) {
236
+ let scale = 0;
237
+ for (const value of x) {
238
+ scale = norm === "l2" ? scale + value * value : Math.max(scale, value);
239
+ }
240
+ scale = norm === "l2" ? Math.sqrt(scale) : scale;
241
+ if (scale > 0) {
242
+ for (let v = 0; v < x.length; v++) {
243
+ x[v] /= scale;
244
+ }
245
+ }
246
+ }
247
+ /**
248
+ * Give an accelerator's HITS result the port's scale: each vector at unit length, or at a largest
249
+ * entry of 1 under `normalized: false`, into new vectors.
250
+ * @param like - The accelerator's result
251
+ * @param options - The caller's port options
252
+ * @returns The rescaled result
253
+ */
254
+ function finishHits(like, options) {
255
+ const norm = options?.normalized === false ? "max" : "l2";
256
+ const hubs = Float64Array.from(like.hubs);
257
+ const authorities = Float64Array.from(like.authorities);
258
+ hitsRescale(hubs, norm);
259
+ hitsRescale(authorities, norm);
260
+ return { hubs, authorities, iterations: like.iterations, converged: like.converged };
261
+ }
15
262
  /**
16
263
  * Attach `pathTo` / `pathEdges` to an accelerator's bare `{ dist, predArc }`, so both paths return
17
264
  * the design's `SsspResult` and the element keeps ONE result-writing loop. The GPU package cannot
@@ -39,11 +286,35 @@ function decorateSssp(s, source, like) {
39
286
  export function accelerated(acc) {
40
287
  return {
41
288
  accelerator: acc ?? null,
42
- pageRank: (s, options) => acc?.pageRank !== undefined ? acc.pageRank(s, options) : Promise.resolve(indexed.pageRank(s, options)),
289
+ pageRank: (s, options) => acc?.pageRank !== undefined && !pageRankNeedsCpu(options)
290
+ ? acc.pageRank(s, pageRankOptionsLike(options))
291
+ : Promise.resolve(indexed.pageRank(s, options)),
292
+ personalizedPageRank: (s, personalization, options) => acc?.personalizedPageRank !== undefined && !personalizedNeedsCpu(s, personalization, options)
293
+ ? acc.personalizedPageRank(s, personalization, pageRankOptionsLike(options))
294
+ : Promise.resolve(indexed.personalizedPageRank(s, personalization, options)),
295
+ eigenvectorCentrality: (s, options) => acc?.eigenvectorCentrality !== undefined && acceleratorAnswersEigenvector(s, options)
296
+ ? acc
297
+ .eigenvectorCentrality(s, {
298
+ maxIterations: options?.maxIterations,
299
+ tolerance: options?.tolerance,
300
+ weighted: false,
301
+ })
302
+ .then((like) => finishEigenvector(like, options))
303
+ : // The executor turns the port's ConvergenceError into a rejection, as on the accelerator path.
304
+ new Promise((resolve) => {
305
+ resolve(indexed.eigenvectorCentrality(s, options));
306
+ }),
43
307
  sssp: (s, source, options) => acc?.sssp !== undefined
44
308
  ? acc.sssp(s, source, options).then((like) => decorateSssp(s, source, like))
45
309
  : Promise.resolve(indexed.dijkstra(s, source, options)),
46
- breadthFirstSearch: (s, source, options) => acc?.breadthFirstSearch !== undefined
310
+ bellmanFord: (s, source, options) => acc?.bellmanFord !== undefined &&
311
+ (options?.weights === undefined || options.weights instanceof Float32Array)
312
+ ? acc.bellmanFord(s, source, options).then((like) => ({
313
+ ...decorateSssp(s, source, like),
314
+ hasNegativeCycle: like.hasNegativeCycle,
315
+ }))
316
+ : Promise.resolve(indexed.bellmanFord(s, source, options)),
317
+ breadthFirstSearch: (s, source, options) => acc?.breadthFirstSearch !== undefined && options?.target === undefined && options?.arcOrder === undefined
47
318
  ? acc.breadthFirstSearch(s, source, options)
48
319
  : Promise.resolve(indexed.breadthFirstSearch(s, source, options)),
49
320
  connectedComponents: (s) => acc?.connectedComponents !== undefined
@@ -58,11 +329,54 @@ export function accelerated(acc) {
58
329
  kCoreDecomposition: (s) => acc?.kCoreDecomposition !== undefined
59
330
  ? acc.kCoreDecomposition(s)
60
331
  : Promise.resolve(indexed.kCoreDecomposition(s)),
61
- katzCentrality: (s, options) => acc?.katzCentrality !== undefined
62
- ? acc.katzCentrality(s, options)
332
+ katzCentrality: (s, options) => acc?.katzCentrality !== undefined && acceleratorAnswersKatz(s, options)
333
+ ? acc
334
+ .katzCentrality(s, {
335
+ alpha: options?.alpha,
336
+ beta: options?.beta,
337
+ maxIterations: options?.maxIterations,
338
+ tolerance: options?.tolerance,
339
+ weighted: options?.weighted === true,
340
+ })
341
+ .then(finishKatz)
63
342
  : Promise.resolve(indexed.katzCentrality(s, options)),
64
- hits: (s, options) => acc?.hits !== undefined ? acc.hits(s, options) : Promise.resolve(indexed.hits(s, options)),
343
+ hits: (s, options) => acc?.hits !== undefined
344
+ ? acc
345
+ .hits(s, {
346
+ maxIterations: options?.maxIterations,
347
+ tolerance: options?.tolerance,
348
+ weighted: options?.weighted === true,
349
+ })
350
+ .then((like) => finishHits(like, options))
351
+ : Promise.resolve(indexed.hits(s, options)),
65
352
  louvain: (s, options) => acc?.louvain !== undefined ? acc.louvain(s, options) : Promise.resolve(indexed.louvain(s, options)),
353
+ allPairsShortestPath: (s, options) => acc?.allPairsShortestPath !== undefined && acceleratorAnswersApsp(s, options)
354
+ ? acc.allPairsShortestPath(s).then(({ dist, n }) => ({ dist, n, hasNegativeCycle: false }))
355
+ : Promise.resolve(indexed.allPairsShortestPath(s, options)),
356
+ betweennessCentrality: (s, options) => acc?.betweennessCentrality !== undefined && !s.flags.multigraph && options?.endpoints !== true
357
+ ? acc.betweennessCentrality(s, explicitSources(s, options))
358
+ : Promise.resolve(indexed.betweennessCentrality(s, options)),
359
+ edgeBetweennessCentrality: (s, options) => acc?.edgeBetweennessCentrality !== undefined && !s.flags.multigraph && options?.alive === undefined
360
+ ? acc.edgeBetweennessCentrality(s, explicitSources(s, options))
361
+ : Promise.resolve(indexed.edgeBetweennessCentrality(s, options)),
362
+ closenessCentrality: (s, options) => acc?.closenessCentrality !== undefined && acceleratorAnswersCloseness(options)
363
+ ? acc.closenessCentrality(s, { weighted: options?.weighted === true })
364
+ : Promise.resolve(indexed.closenessCentrality(s, options)),
365
+ labelPropagation: (s, options) => acc?.labelPropagation !== undefined && options?.randomSeed === undefined
366
+ ? acc.labelPropagation(s, options)
367
+ : Promise.resolve(indexed.labelPropagation(s, options)),
368
+ depthFirstSearch: (s, start, options) => onCpu(() => indexed.depthFirstSearch(s, start, options)),
369
+ stronglyConnectedComponents: (s, options) => onCpu(() => indexed.stronglyConnectedComponents(s, options)),
370
+ leiden: (s, options) => onCpu(() => indexed.leiden(s, options)),
371
+ girvanNewman: (s, options) => onCpu(() => indexed.girvanNewman(s, options)),
372
+ maxFlow: (s, source, sink, options) => onCpu(() => indexed.maxFlow(s, source, sink, options)),
373
+ minSTCut: (s, source, sink, options) => onCpu(() => indexed.minSTCut(s, source, sink, options)),
374
+ stoerWagner: (s, options) => onCpu(() => indexed.stoerWagner(s, options)),
375
+ kargerMinCut: (s, options) => onCpu(() => indexed.kargerMinCut(s, options)),
376
+ commonNeighborsPrediction: (s, options) => onCpu(() => indexed.commonNeighborsPrediction(s, options)),
377
+ adamicAdarPrediction: (s, options) => onCpu(() => indexed.adamicAdarPrediction(s, options)),
378
+ primMST: (s, options) => onCpu(() => indexed.primMST(s, options)),
379
+ maximumBipartiteMatching: (s, options) => onCpu(() => indexed.maximumBipartiteMatching(s, options)),
66
380
  };
67
381
  }
68
382
  //# sourceMappingURL=accelerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accelerator.js","sourceRoot":"","sources":["../../../src/indexed/accelerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAqC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/F,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAuKtC;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,CAAgB,EAAE,MAAc,EAAE,IAAoB;IACxE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,OAAO;QACH,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO;QACP,MAAM,EAAE,CAAC,MAAc,EAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QACzE,SAAS,EAAE,CAAC,MAAc,EAAO,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;KAChF,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAA4C;IACpE,OAAO;QACH,WAAW,EAAE,GAAG,IAAI,IAAI;QACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CACrB,GAAG,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1G,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CACzB,GAAG,EAAE,IAAI,KAAK,SAAS;YACnB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5E,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/D,kBAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CACvC,GAAG,EAAE,kBAAkB,KAAK,SAAS;YACjC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC;YAC5C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CACvB,GAAG,EAAE,mBAAmB,KAAK,SAAS;YAClC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACzD,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7B,GAAG,EAAE,yBAAyB,KAAK,SAAS;YACxC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;QAC/D,mBAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAChC,GAAG,EAAE,mBAAmB,KAAK,SAAS;YAClC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACzD,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CACtB,GAAG,EAAE,kBAAkB,KAAK,SAAS;YACjC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACxD,cAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAC3B,GAAG,EAAE,cAAc,KAAK,SAAS;YAC7B,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC;YAChC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CACjB,GAAG,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9F,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CACpB,GAAG,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KAC1G,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"accelerator.js","sourceRoot":"","sources":["../../../src/indexed/accelerator.ts"],"names":[],"mappings":"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"}