@graphty/algorithms 2.0.5 → 2.1.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 (75) hide show
  1. package/README.md +9 -11
  2. package/dist/algorithms.js +499 -30
  3. package/dist/algorithms.js.map +1 -1
  4. package/dist/algorithms.standalone.js +500 -31
  5. package/dist/algorithms.standalone.js.map +1 -1
  6. package/dist/src/algorithms/centrality/betweenness.js +2 -2
  7. package/dist/src/algorithms/centrality/betweenness.js.map +1 -1
  8. package/dist/src/algorithms/community/girvan-newman.js +1 -1
  9. package/dist/src/algorithms/community/girvan-newman.js.map +1 -1
  10. package/dist/src/algorithms/matching/isomorphism.js +3 -3
  11. package/dist/src/algorithms/matching/isomorphism.js.map +1 -1
  12. package/dist/src/algorithms/mst/prim.js +1 -1
  13. package/dist/src/algorithms/mst/prim.js.map +1 -1
  14. package/dist/src/algorithms/shortest-path/bellman-ford.js +1 -1
  15. package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -1
  16. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js +1 -1
  17. package/dist/src/algorithms/shortest-path/bidirectional-dijkstra.js.map +1 -1
  18. package/dist/src/algorithms/shortest-path/dijkstra.js +1 -1
  19. package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -1
  20. package/dist/src/algorithms/traversal/bfs-unified.js +2 -2
  21. package/dist/src/algorithms/traversal/bfs-unified.js.map +1 -1
  22. package/dist/src/algorithms/traversal/dfs.js +2 -2
  23. package/dist/src/algorithms/traversal/dfs.js.map +1 -1
  24. package/dist/src/clustering/spectral.js +2 -2
  25. package/dist/src/clustering/spectral.js.map +1 -1
  26. package/dist/src/index.d.ts +4 -0
  27. package/dist/src/index.d.ts.map +1 -1
  28. package/dist/src/index.js.map +1 -1
  29. package/dist/src/indexed/accelerator.d.ts +14 -2
  30. package/dist/src/indexed/accelerator.d.ts.map +1 -1
  31. package/dist/src/indexed/accelerator.js +8 -0
  32. package/dist/src/indexed/accelerator.js.map +1 -1
  33. package/dist/src/indexed/components.d.ts +8 -0
  34. package/dist/src/indexed/components.d.ts.map +1 -1
  35. package/dist/src/indexed/components.js +8 -1
  36. package/dist/src/indexed/components.js.map +1 -1
  37. package/dist/src/indexed/hits.d.ts +39 -0
  38. package/dist/src/indexed/hits.d.ts.map +1 -0
  39. package/dist/src/indexed/hits.js +95 -0
  40. package/dist/src/indexed/hits.js.map +1 -0
  41. package/dist/src/indexed/index.d.ts +5 -1
  42. package/dist/src/indexed/index.d.ts.map +1 -1
  43. package/dist/src/indexed/index.js +5 -1
  44. package/dist/src/indexed/index.js.map +1 -1
  45. package/dist/src/indexed/k-core.d.ts +32 -0
  46. package/dist/src/indexed/k-core.d.ts.map +1 -0
  47. package/dist/src/indexed/k-core.js +118 -0
  48. package/dist/src/indexed/k-core.js.map +1 -0
  49. package/dist/src/indexed/katz.d.ts +38 -0
  50. package/dist/src/indexed/katz.d.ts.map +1 -0
  51. package/dist/src/indexed/katz.js +61 -0
  52. package/dist/src/indexed/katz.js.map +1 -0
  53. package/dist/src/indexed/louvain.d.ts +33 -0
  54. package/dist/src/indexed/louvain.d.ts.map +1 -0
  55. package/dist/src/indexed/louvain.js +301 -0
  56. package/dist/src/indexed/louvain.js.map +1 -0
  57. package/package.json +6 -6
  58. package/src/algorithms/centrality/betweenness.ts +2 -2
  59. package/src/algorithms/community/girvan-newman.ts +1 -1
  60. package/src/algorithms/matching/isomorphism.ts +3 -3
  61. package/src/algorithms/mst/prim.ts +1 -1
  62. package/src/algorithms/shortest-path/bellman-ford.ts +3 -3
  63. package/src/algorithms/shortest-path/bidirectional-dijkstra.ts +1 -1
  64. package/src/algorithms/shortest-path/dijkstra.ts +1 -1
  65. package/src/algorithms/traversal/bfs-unified.ts +2 -2
  66. package/src/algorithms/traversal/dfs.ts +2 -2
  67. package/src/clustering/spectral.ts +2 -2
  68. package/src/index.ts +10 -0
  69. package/src/indexed/accelerator.ts +26 -2
  70. package/src/indexed/components.ts +8 -1
  71. package/src/indexed/hits.ts +126 -0
  72. package/src/indexed/index.ts +5 -7
  73. package/src/indexed/k-core.ts +138 -0
  74. package/src/indexed/katz.ts +88 -0
  75. package/src/indexed/louvain.ts +345 -0
@@ -20,6 +20,10 @@ export type { BfsOptions, BfsResult } from "./indexed/bfs.js";
20
20
  export type { CommonNeighborsOptions } from "./indexed/common-neighbors.js";
21
21
  export type { LabelResult } from "./indexed/components.js";
22
22
  export type { SsspOptions, SsspResult } from "./indexed/dijkstra.js";
23
+ export type { HitsOptions as IndexedHitsOptions, HitsResult as IndexedHitsResult } from "./indexed/hits.js";
24
+ export type { CorenessResult } from "./indexed/k-core.js";
25
+ export type { KatzOptions as IndexedKatzOptions, KatzResult as IndexedKatzResult } from "./indexed/katz.js";
26
+ export type { LouvainOptions as IndexedLouvainOptions, LouvainResult as IndexedLouvainResult, } from "./indexed/louvain.js";
23
27
  export type { MstOptions, MstResult } from "./indexed/mst.js";
24
28
  export type { PageRankOptions as IndexedPageRankOptions, PageRankResult as IndexedPageRankResult, } from "./indexed/pagerank.js";
25
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,YAAY,EACR,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,IAAI,EACJ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,SAAS,EACT,IAAI,EACJ,MAAM,EAON,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D,cAAc,uBAAuB,CAAC;AAGtC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC;AAKrC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAG9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAItD,YAAY,EACR,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,6BAA6B,EAC7B,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE9D,YAAY,EACR,eAAe,IAAI,sBAAsB,EACzC,cAAc,IAAI,qBAAqB,GAC1C,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,YAAY,EACR,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,IAAI,EACJ,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,SAAS,EACT,IAAI,EACJ,MAAM,EAON,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG9D,cAAc,uBAAuB,CAAC;AAGtC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC;AAKrC,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAG9C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAItD,YAAY,EACR,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,6BAA6B,EAC7B,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIrE,YAAY,EAAE,WAAW,IAAI,kBAAkB,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,WAAW,IAAI,kBAAkB,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC5G,YAAY,EACR,cAAc,IAAI,qBAAqB,EACvC,aAAa,IAAI,oBAAoB,GACxC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE9D,YAAY,EACR,eAAe,IAAI,sBAAsB,EACzC,cAAc,IAAI,qBAAqB,GAC1C,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA8BxC,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,oBAAoB;AACpB,cAAc,uBAAuB,CAAC;AAEtC,2CAA2C;AAC3C,cAAc,qBAAqB,CAAC;AAEpC,yBAAyB;AACzB,cAAc,4BAA4B,CAAC;AAE3C,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,sGAAsG;AACtG,qGAAqG;AACrG,0GAA0G;AAC1G,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAE9C,6DAA6D;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAsBtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAYvD,iDAAiD;AACjD,+DAA+D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAe;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA8BxC,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,oBAAoB;AACpB,cAAc,uBAAuB,CAAC;AAEtC,2CAA2C;AAC3C,cAAc,qBAAqB,CAAC;AAEpC,yBAAyB;AACzB,cAAc,4BAA4B,CAAC;AAE3C,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,sGAAsG;AACtG,qGAAqG;AACrG,0GAA0G;AAC1G,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAE9C,6DAA6D;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAsBtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAsBvD,iDAAiD;AACjD,+DAA+D"}
@@ -13,6 +13,9 @@
13
13
  import type { F32, F64, GraphSnapshot, NumericVector, U32 } from "@graphty/graph-format";
14
14
  import type { BfsOptions } from "./bfs.js";
15
15
  import { type SsspOptions, type SsspResult } from "./dijkstra.js";
16
+ import type { HitsOptions } from "./hits.js";
17
+ import type { KatzOptions } from "./katz.js";
18
+ import type { LouvainOptions } from "./louvain.js";
16
19
  import type { MstOptions } from "./mst.js";
17
20
  import type { PageRankOptions } from "./pagerank.js";
18
21
  /** A score vector with its convergence report. @public */
@@ -138,8 +141,13 @@ export interface BetweennessAcceleratorOptions {
138
141
  * accelerator when it has the method and runs the CPU port otherwise, wrapped in `Promise.resolve`
139
142
  * so both paths are async and graphty-element's `async run()` adapters treat them alike.
140
143
  *
141
- * The list GROWS with the A2 ports -- each port PR adds its method. Today it carries the six whose
142
- * ports exist (plan departure DEP-8A-E).
144
+ * The list GROWS with the A2 ports -- each port PR adds its method (plan departure DEP-8A-E).
145
+ *
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.
143
151
  * @public
144
152
  */
145
153
  export interface AcceleratedAlgorithms {
@@ -150,6 +158,10 @@ export interface AcceleratedAlgorithms {
150
158
  connectedComponents(s: GraphSnapshot): Promise<LabelResultLike>;
151
159
  weaklyConnectedComponents(s: GraphSnapshot): Promise<LabelResultLike>;
152
160
  minimumSpanningTree(s: GraphSnapshot, options?: MstOptions): Promise<MstResultLike>;
161
+ kCoreDecomposition(s: GraphSnapshot): Promise<CorenessResultLike>;
162
+ katzCentrality(s: GraphSnapshot, options?: KatzOptions): Promise<ScoresResultLike>;
163
+ hits(s: GraphSnapshot, options?: HitsOptions): Promise<HitsResultLike>;
164
+ louvain(s: GraphSnapshot, options?: LouvainOptions): Promise<CommunityResultLike>;
153
165
  }
154
166
  /**
155
167
  * 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":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAA+B,MAAM,eAAe,CAAC;AAC/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKrD,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AACD,qEAAqE;AACrE,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AACD,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AACD,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,IAAI,GAAG,EAAE,CAAC;CACnB;AACD,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC;AACD,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACzB;AACD,2DAA2D;AAC3D,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IACzD,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACtC;AACD,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAClC;AACD,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;CAC1B;AACD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAChC;AACD,+CAA+C;AAC/C,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAID;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpF,oBAAoB,CAAC,CACjB,CAAC,EAAE,aAAa,EAChB,eAAe,EAAE,GAAG,GAAG,GAAG,EAC1B,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5E,qBAAqB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/F,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxF,mBAAmB,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjE,yBAAyB,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACvE,kBAAkB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpG,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxF,WAAW,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtG,mBAAmB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7F,qBAAqB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7G,yBAAyB,CAAC,CACtB,CAAC,EAAE,aAAa,EAChB,OAAO,CAAC,EAAE,6BAA6B,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjC,oBAAoB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxF,kBAAkB,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACzF,mBAAmB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpF,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,IAAI,IAAI,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3C;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAID;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnF,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnF,kBAAkB,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnG,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAChE,yBAAyB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACtE,mBAAmB,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpF,kBAAkB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClE,cAAc,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnF,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrF;AAqBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAAG,qBAAqB,CAsC/F"}
@@ -55,6 +55,14 @@ export function accelerated(acc) {
55
55
  minimumSpanningTree: (s, options) => acc?.minimumSpanningTree !== undefined
56
56
  ? acc.minimumSpanningTree(s, options)
57
57
  : Promise.resolve(indexed.kruskalMST(s, options)),
58
+ kCoreDecomposition: (s) => acc?.kCoreDecomposition !== undefined
59
+ ? acc.kCoreDecomposition(s)
60
+ : Promise.resolve(indexed.kCoreDecomposition(s)),
61
+ katzCentrality: (s, options) => acc?.katzCentrality !== undefined
62
+ ? acc.katzCentrality(s, options)
63
+ : Promise.resolve(indexed.katzCentrality(s, options)),
64
+ hits: (s, options) => acc?.hits !== undefined ? acc.hits(s, options) : Promise.resolve(indexed.hits(s, options)),
65
+ louvain: (s, options) => acc?.louvain !== undefined ? acc.louvain(s, options) : Promise.resolve(indexed.louvain(s, options)),
58
66
  };
59
67
  }
60
68
  //# 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;AAC/F,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AA4JtC;;;;;;;;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;KAC5D,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"accelerator.js","sourceRoot":"","sources":["../../../src/indexed/accelerator.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,14 @@ export interface LabelResult {
11
11
  */
12
12
  groups(): U32[];
13
13
  }
14
+ /**
15
+ * Wrap a dense label array as a `LabelResult`, computing the grouping on first use. Shared with the
16
+ * Louvain port, whose result is a partition with a modularity attached.
17
+ * @param labels - Dense label per node index
18
+ * @param count - Number of distinct labels
19
+ * @returns The partition
20
+ */
21
+ export declare function withGroups(labels: U32, count: number): LabelResult;
14
22
  /**
15
23
  * Connected components of an UNDIRECTED snapshot.
16
24
  * @param s - An undirected snapshot
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/indexed/components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAIrE,gGAAgG;AAChG,MAAM,WAAW,WAAW;IACxB,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,IAAI,GAAG,EAAE,CAAC;CACnB;AAuCD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,CAOjE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,CAEvE"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/indexed/components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAIrE,gGAAgG;AAChG,MAAM,WAAW,WAAW;IACxB,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,IAAI,GAAG,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAyBlE;AAYD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,CAOjE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,CAEvE"}
@@ -1,5 +1,12 @@
1
1
  import { IntUnionFind } from "./structures/union-find.js";
2
- function withGroups(labels, count) {
2
+ /**
3
+ * Wrap a dense label array as a `LabelResult`, computing the grouping on first use. Shared with the
4
+ * Louvain port, whose result is a partition with a modularity attached.
5
+ * @param labels - Dense label per node index
6
+ * @param count - Number of distinct labels
7
+ * @returns The partition
8
+ */
9
+ export function withGroups(labels, count) {
3
10
  let cached = null;
4
11
  return {
5
12
  labels,
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/indexed/components.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAe1D,SAAS,UAAU,CAAC,MAAW,EAAE,KAAa;IAC1C,IAAI,MAAM,GAAiB,IAAI,CAAC;IAChC,OAAO;QACH,MAAM;QACN,KAAK;QACL,MAAM;YACF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,CAAC;gBACD,MAAM,GAAG,GAAU,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM,GAAG,GAAG,CAAC;YACjB,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,CAAgB;IAChC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACxC,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAgB;IAChD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACX,sHAAsH,CACzH,CAAC;IACN,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAgB;IACtD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/indexed/components.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAe1D;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,MAAW,EAAE,KAAa;IACjD,IAAI,MAAM,GAAiB,IAAI,CAAC;IAChC,OAAO;QACH,MAAM;QACN,KAAK;QACL,MAAM;YACF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,CAAC;gBACD,MAAM,GAAG,GAAU,EAAE,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM,GAAG,GAAG,CAAC;YACjB,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,UAAU,CAAC,CAAgB;IAChC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACxC,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAgB;IAChD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACX,sHAAsH,CACzH,CAAC;IACN,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAgB;IACtD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { F64, GraphSnapshot } from "@graphty/graph-format";
2
+ /** Options of the index-based HITS, matching the legacy `hits`. @public */
3
+ export interface HitsOptions {
4
+ /** Iteration cap; default 100. */
5
+ readonly maxIterations?: number | undefined;
6
+ /** Convergence tolerance on the largest single-node change; default 1e-6. */
7
+ readonly tolerance?: number | undefined;
8
+ /**
9
+ * `false` rescales both vectors so their largest entry is 1, which is what the legacy function
10
+ * does when normalization is switched OFF -- the iteration itself always divides by the L2
11
+ * norm. Default true, i.e. the L2-normalized vectors are returned unchanged.
12
+ */
13
+ readonly normalized?: boolean | undefined;
14
+ /** Weight a neighbour's contribution by the arc weight; default false. */
15
+ readonly weighted?: boolean | undefined;
16
+ }
17
+ /** Result of the index-based HITS. @public */
18
+ export interface HitsResult {
19
+ /** Hub score per node index. */
20
+ readonly hubs: F64;
21
+ /** Authority score per node index. */
22
+ readonly authorities: F64;
23
+ /** Iterations actually run. */
24
+ readonly iterations: number;
25
+ /** Whether the largest single-node change fell below the tolerance. */
26
+ readonly converged: boolean;
27
+ }
28
+ /**
29
+ * HITS by alternating power iteration: an authority sums the hub scores of the nodes pointing at
30
+ * it, a hub sums the authority scores of the nodes it points at, and both vectors are
31
+ * L2-normalized every round. On an undirected snapshot the two adjacencies are the same array, so
32
+ * the hubs and the authorities coincide.
33
+ * @param s - The snapshot
34
+ * @param o - Algorithm options
35
+ * @returns The two score vectors, the iteration count and the convergence flag
36
+ * @public
37
+ */
38
+ export declare function hits(s: GraphSnapshot, o?: HitsOptions): HitsResult;
39
+ //# sourceMappingURL=hits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hits.d.ts","sourceRoot":"","sources":["../../../src/indexed/hits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEhE,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IACxB,kCAAkC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3C;AAED,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACvB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AAqCD;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAE,WAAgB,GAAG,UAAU,CAkDtE"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Divide a vector by its L2 norm, in place; a zero vector is left alone.
3
+ * @param v - The vector to scale
4
+ */
5
+ function l2Normalize(v) {
6
+ let sum = 0;
7
+ for (let i = 0; i < v.length; i++) {
8
+ sum += v[i] * v[i];
9
+ }
10
+ const norm = Math.sqrt(sum);
11
+ if (norm > 0) {
12
+ for (let i = 0; i < v.length; i++) {
13
+ v[i] /= norm;
14
+ }
15
+ }
16
+ }
17
+ /**
18
+ * Divide a vector by its largest entry, in place; left alone when that entry is not positive.
19
+ * @param v - The vector to scale
20
+ */
21
+ function maxNormalize(v) {
22
+ let max = 0;
23
+ for (let i = 0; i < v.length; i++) {
24
+ if (v[i] > max) {
25
+ max = v[i];
26
+ }
27
+ }
28
+ if (max > 0) {
29
+ for (let i = 0; i < v.length; i++) {
30
+ v[i] /= max;
31
+ }
32
+ }
33
+ }
34
+ /**
35
+ * HITS by alternating power iteration: an authority sums the hub scores of the nodes pointing at
36
+ * it, a hub sums the authority scores of the nodes it points at, and both vectors are
37
+ * L2-normalized every round. On an undirected snapshot the two adjacencies are the same array, so
38
+ * the hubs and the authorities coincide.
39
+ * @param s - The snapshot
40
+ * @param o - Algorithm options
41
+ * @returns The two score vectors, the iteration count and the convergence flag
42
+ * @public
43
+ */
44
+ export function hits(s, o = {}) {
45
+ const n = s.nodeCount;
46
+ const maxIter = o.maxIterations ?? 100;
47
+ const tol = o.tolerance ?? 1e-6;
48
+ const rev = s.reverse();
49
+ const fwdW = o.weighted === true ? s.weights : null;
50
+ const revW = o.weighted === true ? rev.weights : null;
51
+ let hubs = new Float64Array(n).fill(n === 0 ? 0 : 1 / Math.sqrt(n));
52
+ let authorities = new Float64Array(n).fill(n === 0 ? 0 : 1 / Math.sqrt(n));
53
+ let nextHubs = new Float64Array(n);
54
+ let nextAuthorities = new Float64Array(n);
55
+ let it = 0;
56
+ let converged = false;
57
+ for (; it < maxIter && !converged; it++) {
58
+ for (let v = 0; v < n; v++) {
59
+ let auth = 0;
60
+ const inEnd = rev.rowPtr[v + 1];
61
+ for (let a = rev.rowPtr[v]; a < inEnd; a++) {
62
+ auth += hubs[rev.colIdx[a]] * (revW === null ? 1 : revW[a]);
63
+ }
64
+ nextAuthorities[v] = auth;
65
+ let hub = 0;
66
+ const outEnd = s.rowPtr[v + 1];
67
+ for (let a = s.rowPtr[v]; a < outEnd; a++) {
68
+ hub += authorities[s.colIdx[a]] * (fwdW === null ? 1 : fwdW[a]);
69
+ }
70
+ nextHubs[v] = hub;
71
+ }
72
+ l2Normalize(nextAuthorities);
73
+ l2Normalize(nextHubs);
74
+ let maxDiff = 0;
75
+ for (let v = 0; v < n; v++) {
76
+ const dh = Math.abs(nextHubs[v] - hubs[v]);
77
+ if (dh > maxDiff) {
78
+ maxDiff = dh;
79
+ }
80
+ const da = Math.abs(nextAuthorities[v] - authorities[v]);
81
+ if (da > maxDiff) {
82
+ maxDiff = da;
83
+ }
84
+ }
85
+ [hubs, nextHubs] = [nextHubs, hubs];
86
+ [authorities, nextAuthorities] = [nextAuthorities, authorities];
87
+ converged = maxDiff < tol;
88
+ }
89
+ if (o.normalized === false) {
90
+ maxNormalize(hubs);
91
+ maxNormalize(authorities);
92
+ }
93
+ return { hubs, authorities, iterations: it, converged };
94
+ }
95
+ //# sourceMappingURL=hits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hits.js","sourceRoot":"","sources":["../../../src/indexed/hits.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,11 @@
15
15
  export { type BfsOptions, type BfsResult, breadthFirstSearch } from "./bfs.js";
16
16
  export { type CommonNeighborsOptions, commonNeighborsScore } from "./common-neighbors.js";
17
17
  export { connectedComponents, type LabelResult, weaklyConnectedComponents } from "./components.js";
18
- export { dijkstra, type SsspOptions, type SsspResult, walkPredArcs, walkPredEdges, } from "./dijkstra.js";
18
+ export { dijkstra, type SsspOptions, type SsspResult, walkPredArcs, walkPredEdges } from "./dijkstra.js";
19
+ export { hits, type HitsOptions, type HitsResult } from "./hits.js";
20
+ export { type CorenessResult, kCoreDecomposition } from "./k-core.js";
21
+ export { katzCentrality, type KatzOptions, type KatzResult } from "./katz.js";
22
+ export { louvain, type LouvainOptions, type LouvainResult } from "./louvain.js";
19
23
  export { kruskalMST, type MstOptions, type MstResult } from "./mst.js";
20
24
  export { pageRank, type PageRankOptions, type PageRankResult } from "./pagerank.js";
21
25
  export { arcSourceIn, IndexedMinHeap, IntUnionFind } from "./structures/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/indexed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,KAAK,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,KAAK,WAAW,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EACH,QAAQ,EACR,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,YAAY,EACZ,aAAa,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/indexed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,KAAK,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,KAAK,WAAW,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,KAAK,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
@@ -15,7 +15,11 @@
15
15
  export { breadthFirstSearch } from "./bfs.js";
16
16
  export { commonNeighborsScore } from "./common-neighbors.js";
17
17
  export { connectedComponents, weaklyConnectedComponents } from "./components.js";
18
- export { dijkstra, walkPredArcs, walkPredEdges, } from "./dijkstra.js";
18
+ export { dijkstra, walkPredArcs, walkPredEdges } from "./dijkstra.js";
19
+ export { hits } from "./hits.js";
20
+ export { kCoreDecomposition } from "./k-core.js";
21
+ export { katzCentrality } from "./katz.js";
22
+ export { louvain } from "./louvain.js";
19
23
  export { kruskalMST } from "./mst.js";
20
24
  export { pageRank } from "./pagerank.js";
21
25
  export { arcSourceIn, IndexedMinHeap, IntUnionFind } from "./structures/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAmC,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAA+B,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAoB,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EACH,QAAQ,EAGR,YAAY,EACZ,aAAa,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAmC,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,QAAQ,EAA6C,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAmC,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAA+B,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAoB,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAqC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,IAAI,EAAqC,MAAM,WAAW,CAAC;AACpE,OAAO,EAAuB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAAqC,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,OAAO,EAA2C,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,UAAU,EAAmC,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,QAAQ,EAA6C,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { GraphSnapshot, U32 } from "@graphty/graph-format";
2
+ /**
3
+ * Result of the index-based k-core decomposition. `coreness` is the shape the accelerator seam
4
+ * declares (`CorenessResultLike`); `maxCore` and `cores()` are what the legacy
5
+ * `kCoreDecomposition` returns as `maxCore` and its `cores` map.
6
+ * @public
7
+ */
8
+ export interface CorenessResult {
9
+ /** Core number per node index. */
10
+ readonly coreness: U32;
11
+ /** The largest core number present; 0 on an empty graph. */
12
+ readonly maxCore: number;
13
+ /**
14
+ * Node indices grouped by core number, computed once and cached: `cores()[k]` holds the nodes
15
+ * whose coreness is exactly k, so the array has `maxCore + 1` entries.
16
+ * @returns One array per core number
17
+ */
18
+ cores(): U32[];
19
+ }
20
+ /**
21
+ * Core number of every node, by the Batagelj-Zaversnik bucket peel: O(nodes + arcs), no priority
22
+ * queue and no per-node object.
23
+ *
24
+ * Core numbers are defined on a SIMPLE graph, so a parallel arc counts once (parallels are
25
+ * adjacent within a row, invariant I4) and a self-loop does not count at all -- which is what the
26
+ * legacy implementation's adjacency-of-sets also does, and what NetworkX requires of its input.
27
+ * @param s - An undirected snapshot
28
+ * @returns The core numbers, the largest of them, and the lazy grouping
29
+ * @public
30
+ */
31
+ export declare function kCoreDecomposition(s: GraphSnapshot): CorenessResult;
32
+ //# sourceMappingURL=k-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k-core.d.ts","sourceRoot":"","sources":["../../../src/indexed/k-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,KAAK,IAAI,GAAG,EAAE,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,CAyGnE"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Core number of every node, by the Batagelj-Zaversnik bucket peel: O(nodes + arcs), no priority
3
+ * queue and no per-node object.
4
+ *
5
+ * Core numbers are defined on a SIMPLE graph, so a parallel arc counts once (parallels are
6
+ * adjacent within a row, invariant I4) and a self-loop does not count at all -- which is what the
7
+ * legacy implementation's adjacency-of-sets also does, and what NetworkX requires of its input.
8
+ * @param s - An undirected snapshot
9
+ * @returns The core numbers, the largest of them, and the lazy grouping
10
+ * @public
11
+ */
12
+ export function kCoreDecomposition(s) {
13
+ if (s.directed) {
14
+ throw new Error("k-core requires an undirected graph. Pass s.toUndirected().snapshot.");
15
+ }
16
+ const n = s.nodeCount;
17
+ const { rowPtr, colIdx } = s;
18
+ // degree[] is peeled in place: when a node is visited its entry is already its core number.
19
+ const degree = new Uint32Array(n);
20
+ let maxDegree = 0;
21
+ for (let u = 0; u < n; u++) {
22
+ let d = 0;
23
+ let last = -1;
24
+ const end = rowPtr[u + 1];
25
+ for (let a = rowPtr[u]; a < end; a++) {
26
+ const v = colIdx[a];
27
+ if (v !== u && v !== last) {
28
+ d++;
29
+ }
30
+ last = v;
31
+ }
32
+ degree[u] = d;
33
+ if (d > maxDegree) {
34
+ maxDegree = d;
35
+ }
36
+ }
37
+ // Bucket sort the nodes by degree; bin[d] is the start of degree d's block in vert.
38
+ const bin = new Uint32Array(maxDegree + 1);
39
+ for (let u = 0; u < n; u++) {
40
+ bin[degree[u]]++;
41
+ }
42
+ let start = 0;
43
+ for (let d = 0; d <= maxDegree; d++) {
44
+ const count = bin[d];
45
+ bin[d] = start;
46
+ start += count;
47
+ }
48
+ const vert = new Uint32Array(n);
49
+ const pos = new Uint32Array(n);
50
+ for (let u = 0; u < n; u++) {
51
+ pos[u] = bin[degree[u]];
52
+ vert[pos[u]] = u;
53
+ bin[degree[u]]++;
54
+ }
55
+ for (let d = maxDegree; d > 0; d--) {
56
+ bin[d] = bin[d - 1];
57
+ }
58
+ bin[0] = 0;
59
+ // Peel in nondecreasing degree order. A neighbour of higher degree swaps to the front of its
60
+ // bucket and loses one, which keeps vert sorted without re-sorting it.
61
+ let maxCore = 0;
62
+ for (let i = 0; i < n; i++) {
63
+ const v = vert[i];
64
+ const dv = degree[v];
65
+ if (dv > maxCore) {
66
+ maxCore = dv;
67
+ }
68
+ const end = rowPtr[v + 1];
69
+ let last = -1;
70
+ for (let a = rowPtr[v]; a < end; a++) {
71
+ const u = colIdx[a];
72
+ const skip = u === v || u === last;
73
+ last = u;
74
+ if (skip) {
75
+ continue;
76
+ }
77
+ const du = degree[u];
78
+ if (du > dv) {
79
+ const pu = pos[u];
80
+ const pw = bin[du];
81
+ const w = vert[pw];
82
+ if (u !== w) {
83
+ vert[pu] = w;
84
+ vert[pw] = u;
85
+ pos[u] = pw;
86
+ pos[w] = pu;
87
+ }
88
+ bin[du]++;
89
+ degree[u] = du - 1;
90
+ }
91
+ }
92
+ }
93
+ let cached = null;
94
+ return {
95
+ coreness: degree,
96
+ maxCore,
97
+ cores() {
98
+ if (cached === null) {
99
+ const sizes = new Uint32Array(maxCore + 1);
100
+ for (let u = 0; u < n; u++) {
101
+ sizes[degree[u]]++;
102
+ }
103
+ const out = [];
104
+ for (let k = 0; k <= maxCore; k++) {
105
+ out.push(new Uint32Array(sizes[k]));
106
+ }
107
+ const fill = new Uint32Array(maxCore + 1);
108
+ for (let u = 0; u < n; u++) {
109
+ const k = degree[u];
110
+ out[k][fill[k]++] = u;
111
+ }
112
+ cached = out;
113
+ }
114
+ return cached;
115
+ },
116
+ };
117
+ }
118
+ //# sourceMappingURL=k-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k-core.js","sourceRoot":"","sources":["../../../src/indexed/k-core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { F64, GraphSnapshot } from "@graphty/graph-format";
2
+ /** Options of the index-based Katz centrality, matching the legacy `katzCentrality`. @public */
3
+ export interface KatzOptions {
4
+ /** Attenuation factor applied to a neighbour's score; default 0.1. */
5
+ readonly alpha?: number | undefined;
6
+ /** Base score every node starts with and keeps; default 1. */
7
+ readonly beta?: number | undefined;
8
+ /** Iteration cap; default 100. */
9
+ readonly maxIterations?: number | undefined;
10
+ /** Convergence tolerance on the largest single-node change; default 1e-6. */
11
+ readonly tolerance?: number | undefined;
12
+ /** Rescale the scores to [0, 1] by min-max, as the legacy function does; default true. */
13
+ readonly normalized?: boolean | undefined;
14
+ /** Weight a neighbour's contribution by the arc weight; default false. */
15
+ readonly weighted?: boolean | undefined;
16
+ }
17
+ /** Result of the index-based Katz centrality. @public */
18
+ export interface KatzResult {
19
+ /** Score per node index. */
20
+ readonly scores: F64;
21
+ /** Iterations actually run. */
22
+ readonly iterations: number;
23
+ /** Whether the largest single-node change fell below the tolerance. */
24
+ readonly converged: boolean;
25
+ }
26
+ /**
27
+ * Katz centrality by power iteration over incoming arcs: `x[v] = alpha * sum(x[u] for u -> v) + beta`.
28
+ *
29
+ * `reverse()` supplies the in-arcs, and is the forward adjacency itself on an undirected snapshot,
30
+ * so one loop serves both directions exactly as the legacy function's in-neighbours / neighbours
31
+ * split does.
32
+ * @param s - The snapshot
33
+ * @param o - Algorithm options
34
+ * @returns The scores, the iteration count and the convergence flag
35
+ * @public
36
+ */
37
+ export declare function katzCentrality(s: GraphSnapshot, o?: KatzOptions): KatzResult;
38
+ //# sourceMappingURL=katz.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"katz.d.ts","sourceRoot":"","sources":["../../../src/indexed/katz.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEhE,gGAAgG;AAChG,MAAM,WAAW,WAAW;IACxB,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kCAAkC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3C;AAED,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAE,WAAgB,GAAG,UAAU,CAgDhF"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Katz centrality by power iteration over incoming arcs: `x[v] = alpha * sum(x[u] for u -> v) + beta`.
3
+ *
4
+ * `reverse()` supplies the in-arcs, and is the forward adjacency itself on an undirected snapshot,
5
+ * so one loop serves both directions exactly as the legacy function's in-neighbours / neighbours
6
+ * split does.
7
+ * @param s - The snapshot
8
+ * @param o - Algorithm options
9
+ * @returns The scores, the iteration count and the convergence flag
10
+ * @public
11
+ */
12
+ export function katzCentrality(s, o = {}) {
13
+ const n = s.nodeCount;
14
+ const alpha = o.alpha ?? 0.1;
15
+ const beta = o.beta ?? 1;
16
+ const maxIter = o.maxIterations ?? 100;
17
+ const tol = o.tolerance ?? 1e-6;
18
+ const rev = s.reverse();
19
+ const weights = o.weighted === true ? rev.weights : null;
20
+ let cur = new Float64Array(n).fill(beta);
21
+ let next = new Float64Array(n);
22
+ let it = 0;
23
+ let converged = false;
24
+ for (; it < maxIter && !converged; it++) {
25
+ let maxDiff = 0;
26
+ for (let v = 0; v < n; v++) {
27
+ let sum = 0;
28
+ const end = rev.rowPtr[v + 1];
29
+ for (let a = rev.rowPtr[v]; a < end; a++) {
30
+ sum += cur[rev.colIdx[a]] * (weights === null ? 1 : weights[a]);
31
+ }
32
+ next[v] = alpha * sum + beta;
33
+ const diff = Math.abs(next[v] - cur[v]);
34
+ if (diff > maxDiff) {
35
+ maxDiff = diff;
36
+ }
37
+ }
38
+ [cur, next] = [next, cur];
39
+ converged = maxDiff < tol;
40
+ }
41
+ if (o.normalized !== false) {
42
+ let min = Infinity;
43
+ let max = -Infinity;
44
+ for (let v = 0; v < n; v++) {
45
+ if (cur[v] < min) {
46
+ min = cur[v];
47
+ }
48
+ if (cur[v] > max) {
49
+ max = cur[v];
50
+ }
51
+ }
52
+ const range = max - min;
53
+ if (range > 0) {
54
+ for (let v = 0; v < n; v++) {
55
+ cur[v] = (cur[v] - min) / range;
56
+ }
57
+ }
58
+ }
59
+ return { scores: cur, iterations: it, converged };
60
+ }
61
+ //# sourceMappingURL=katz.js.map