@graphty/graph-format 0.0.0 → 0.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 (224) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -43
  3. package/dist/graph-format.d.ts +1 -0
  4. package/dist/graph-format.d.ts.map +1 -0
  5. package/dist/graph-format.js +15798 -0
  6. package/dist/graph-format.js.map +1 -0
  7. package/dist/src/builder/arena.d.ts +85 -0
  8. package/dist/src/builder/arena.d.ts.map +1 -0
  9. package/dist/src/builder/arena.js +154 -0
  10. package/dist/src/builder/arena.js.map +1 -0
  11. package/dist/src/builder/compact.d.ts +515 -0
  12. package/dist/src/builder/compact.d.ts.map +1 -0
  13. package/dist/src/builder/compact.js +1553 -0
  14. package/dist/src/builder/compact.js.map +1 -0
  15. package/dist/src/builder/counting-sort.d.ts +96 -0
  16. package/dist/src/builder/counting-sort.d.ts.map +1 -0
  17. package/dist/src/builder/counting-sort.js +430 -0
  18. package/dist/src/builder/counting-sort.js.map +1 -0
  19. package/dist/src/builder/freeze.d.ts +72 -0
  20. package/dist/src/builder/freeze.d.ts.map +1 -0
  21. package/dist/src/builder/freeze.js +548 -0
  22. package/dist/src/builder/freeze.js.map +1 -0
  23. package/dist/src/builder/graph-builder.d.ts +602 -0
  24. package/dist/src/builder/graph-builder.d.ts.map +1 -0
  25. package/dist/src/builder/graph-builder.js +1940 -0
  26. package/dist/src/builder/graph-builder.js.map +1 -0
  27. package/dist/src/builder/options.d.ts +16 -0
  28. package/dist/src/builder/options.d.ts.map +1 -0
  29. package/dist/src/builder/options.js +21 -0
  30. package/dist/src/builder/options.js.map +1 -0
  31. package/dist/src/columns/bitmap.d.ts +96 -0
  32. package/dist/src/columns/bitmap.d.ts.map +1 -0
  33. package/dist/src/columns/bitmap.js +184 -0
  34. package/dist/src/columns/bitmap.js.map +1 -0
  35. package/dist/src/columns/column.d.ts +220 -0
  36. package/dist/src/columns/column.d.ts.map +1 -0
  37. package/dist/src/columns/column.js +2109 -0
  38. package/dist/src/columns/column.js.map +1 -0
  39. package/dist/src/columns/dictionary.d.ts +60 -0
  40. package/dist/src/columns/dictionary.d.ts.map +1 -0
  41. package/dist/src/columns/dictionary.js +102 -0
  42. package/dist/src/columns/dictionary.js.map +1 -0
  43. package/dist/src/columns/growable.d.ts +198 -0
  44. package/dist/src/columns/growable.d.ts.map +1 -0
  45. package/dist/src/columns/growable.js +296 -0
  46. package/dist/src/columns/growable.js.map +1 -0
  47. package/dist/src/columns/infer.d.ts +121 -0
  48. package/dist/src/columns/infer.d.ts.map +1 -0
  49. package/dist/src/columns/infer.js +268 -0
  50. package/dist/src/columns/infer.js.map +1 -0
  51. package/dist/src/columns/remap.d.ts +143 -0
  52. package/dist/src/columns/remap.d.ts.map +1 -0
  53. package/dist/src/columns/remap.js +588 -0
  54. package/dist/src/columns/remap.js.map +1 -0
  55. package/dist/src/columns/table.d.ts +184 -0
  56. package/dist/src/columns/table.d.ts.map +1 -0
  57. package/dist/src/columns/table.js +485 -0
  58. package/dist/src/columns/table.js.map +1 -0
  59. package/dist/src/constants.d.ts +34 -0
  60. package/dist/src/constants.d.ts.map +1 -0
  61. package/dist/src/constants.js +79 -0
  62. package/dist/src/constants.js.map +1 -0
  63. package/dist/src/errors.d.ts +76 -0
  64. package/dist/src/errors.d.ts.map +1 -0
  65. package/dist/src/errors.js +32 -0
  66. package/dist/src/errors.js.map +1 -0
  67. package/dist/src/ids/edge-id-index.d.ts +77 -0
  68. package/dist/src/ids/edge-id-index.d.ts.map +1 -0
  69. package/dist/src/ids/edge-id-index.js +155 -0
  70. package/dist/src/ids/edge-id-index.js.map +1 -0
  71. package/dist/src/ids/node-id-map.d.ts +280 -0
  72. package/dist/src/ids/node-id-map.d.ts.map +1 -0
  73. package/dist/src/ids/node-id-map.js +1139 -0
  74. package/dist/src/ids/node-id-map.js.map +1 -0
  75. package/dist/src/ids/string-store.d.ts +219 -0
  76. package/dist/src/ids/string-store.d.ts.map +1 -0
  77. package/dist/src/ids/string-store.js +526 -0
  78. package/dist/src/ids/string-store.js.map +1 -0
  79. package/dist/src/index.d.ts +30 -0
  80. package/dist/src/index.d.ts.map +1 -0
  81. package/dist/src/index.js +29 -0
  82. package/dist/src/index.js.map +1 -0
  83. package/dist/src/populate/from-csr.d.ts +61 -0
  84. package/dist/src/populate/from-csr.d.ts.map +1 -0
  85. package/dist/src/populate/from-csr.js +706 -0
  86. package/dist/src/populate/from-csr.js.map +1 -0
  87. package/dist/src/populate/from-edge-arrays.d.ts +51 -0
  88. package/dist/src/populate/from-edge-arrays.d.ts.map +1 -0
  89. package/dist/src/populate/from-edge-arrays.js +217 -0
  90. package/dist/src/populate/from-edge-arrays.js.map +1 -0
  91. package/dist/src/populate/from-records.d.ts +51 -0
  92. package/dist/src/populate/from-records.d.ts.map +1 -0
  93. package/dist/src/populate/from-records.js +447 -0
  94. package/dist/src/populate/from-records.js.map +1 -0
  95. package/dist/src/snapshot/derived.d.ts +211 -0
  96. package/dist/src/snapshot/derived.d.ts.map +1 -0
  97. package/dist/src/snapshot/derived.js +1254 -0
  98. package/dist/src/snapshot/derived.js.map +1 -0
  99. package/dist/src/snapshot/graph-meta.d.ts +23 -0
  100. package/dist/src/snapshot/graph-meta.d.ts.map +1 -0
  101. package/dist/src/snapshot/graph-meta.js +159 -0
  102. package/dist/src/snapshot/graph-meta.js.map +1 -0
  103. package/dist/src/snapshot/graph-snapshot.d.ts +509 -0
  104. package/dist/src/snapshot/graph-snapshot.d.ts.map +1 -0
  105. package/dist/src/snapshot/graph-snapshot.js +1247 -0
  106. package/dist/src/snapshot/graph-snapshot.js.map +1 -0
  107. package/dist/src/snapshot/hash.d.ts +90 -0
  108. package/dist/src/snapshot/hash.d.ts.map +1 -0
  109. package/dist/src/snapshot/hash.js +228 -0
  110. package/dist/src/snapshot/hash.js.map +1 -0
  111. package/dist/src/snapshot/queries.d.ts +74 -0
  112. package/dist/src/snapshot/queries.d.ts.map +1 -0
  113. package/dist/src/snapshot/queries.js +131 -0
  114. package/dist/src/snapshot/queries.js.map +1 -0
  115. package/dist/src/snapshot/validate.d.ts +192 -0
  116. package/dist/src/snapshot/validate.d.ts.map +1 -0
  117. package/dist/src/snapshot/validate.js +990 -0
  118. package/dist/src/snapshot/validate.js.map +1 -0
  119. package/dist/src/snapshot/views.d.ts +274 -0
  120. package/dist/src/snapshot/views.d.ts.map +1 -0
  121. package/dist/src/snapshot/views.js +856 -0
  122. package/dist/src/snapshot/views.js.map +1 -0
  123. package/dist/src/types/builder.d.ts +456 -0
  124. package/dist/src/types/builder.d.ts.map +1 -0
  125. package/dist/src/types/builder.js +11 -0
  126. package/dist/src/types/builder.js.map +1 -0
  127. package/dist/src/types/columns.d.ts +615 -0
  128. package/dist/src/types/columns.d.ts.map +1 -0
  129. package/dist/src/types/columns.js +14 -0
  130. package/dist/src/types/columns.js.map +1 -0
  131. package/dist/src/types/index.d.ts +14 -0
  132. package/dist/src/types/index.d.ts.map +1 -0
  133. package/dist/src/types/index.js +11 -0
  134. package/dist/src/types/index.js.map +1 -0
  135. package/dist/src/types/internal.d.ts +172 -0
  136. package/dist/src/types/internal.d.ts.map +1 -0
  137. package/dist/src/types/internal.js +13 -0
  138. package/dist/src/types/internal.js.map +1 -0
  139. package/dist/src/types/snapshot.d.ts +801 -0
  140. package/dist/src/types/snapshot.d.ts.map +1 -0
  141. package/dist/src/types/snapshot.js +14 -0
  142. package/dist/src/types/snapshot.js.map +1 -0
  143. package/dist/src/types/wire.d.ts +196 -0
  144. package/dist/src/types/wire.d.ts.map +1 -0
  145. package/dist/src/types/wire.js +8 -0
  146. package/dist/src/types/wire.js.map +1 -0
  147. package/dist/src/util/mask.d.ts +55 -0
  148. package/dist/src/util/mask.d.ts.map +1 -0
  149. package/dist/src/util/mask.js +71 -0
  150. package/dist/src/util/mask.js.map +1 -0
  151. package/dist/src/util/options.d.ts +22 -0
  152. package/dist/src/util/options.d.ts.map +1 -0
  153. package/dist/src/util/options.js +49 -0
  154. package/dist/src/util/options.js.map +1 -0
  155. package/dist/src/util/shared-buffers.d.ts +42 -0
  156. package/dist/src/util/shared-buffers.d.ts.map +1 -0
  157. package/dist/src/util/shared-buffers.js +52 -0
  158. package/dist/src/util/shared-buffers.js.map +1 -0
  159. package/dist/src/util/typed-array.d.ts +205 -0
  160. package/dist/src/util/typed-array.d.ts.map +1 -0
  161. package/dist/src/util/typed-array.js +289 -0
  162. package/dist/src/util/typed-array.js.map +1 -0
  163. package/dist/src/wire/bytes.d.ts +69 -0
  164. package/dist/src/wire/bytes.d.ts.map +1 -0
  165. package/dist/src/wire/bytes.js +361 -0
  166. package/dist/src/wire/bytes.js.map +1 -0
  167. package/dist/src/wire/carried-views.d.ts +111 -0
  168. package/dist/src/wire/carried-views.d.ts.map +1 -0
  169. package/dist/src/wire/carried-views.js +286 -0
  170. package/dist/src/wire/carried-views.js.map +1 -0
  171. package/dist/src/wire/from-wire.d.ts +144 -0
  172. package/dist/src/wire/from-wire.d.ts.map +1 -0
  173. package/dist/src/wire/from-wire.js +1425 -0
  174. package/dist/src/wire/from-wire.js.map +1 -0
  175. package/dist/src/wire/to-wire.d.ts +171 -0
  176. package/dist/src/wire/to-wire.d.ts.map +1 -0
  177. package/dist/src/wire/to-wire.js +652 -0
  178. package/dist/src/wire/to-wire.js.map +1 -0
  179. package/dist/tsconfig.build.tsbuildinfo +1 -0
  180. package/package.json +72 -7
  181. package/src/builder/arena.ts +192 -0
  182. package/src/builder/compact.ts +1811 -0
  183. package/src/builder/counting-sort.ts +506 -0
  184. package/src/builder/freeze.ts +689 -0
  185. package/src/builder/graph-builder.ts +2264 -0
  186. package/src/builder/options.ts +29 -0
  187. package/src/columns/bitmap.ts +196 -0
  188. package/src/columns/column.ts +2574 -0
  189. package/src/columns/dictionary.ts +114 -0
  190. package/src/columns/growable.ts +350 -0
  191. package/src/columns/infer.ts +285 -0
  192. package/src/columns/remap.ts +663 -0
  193. package/src/columns/table.ts +568 -0
  194. package/src/constants.ts +89 -0
  195. package/src/errors.ts +115 -0
  196. package/src/ids/edge-id-index.ts +179 -0
  197. package/src/ids/node-id-map.ts +1340 -0
  198. package/src/ids/string-store.ts +589 -0
  199. package/src/index.ts +139 -0
  200. package/src/lib-resizable-array-buffer.d.ts +34 -0
  201. package/src/populate/from-csr.ts +802 -0
  202. package/src/populate/from-edge-arrays.ts +257 -0
  203. package/src/populate/from-records.ts +536 -0
  204. package/src/snapshot/derived.ts +1486 -0
  205. package/src/snapshot/graph-meta.ts +167 -0
  206. package/src/snapshot/graph-snapshot.ts +1503 -0
  207. package/src/snapshot/hash.ts +241 -0
  208. package/src/snapshot/queries.ts +136 -0
  209. package/src/snapshot/validate.ts +1108 -0
  210. package/src/snapshot/views.ts +943 -0
  211. package/src/types/builder.ts +480 -0
  212. package/src/types/columns.ts +727 -0
  213. package/src/types/index.ts +14 -0
  214. package/src/types/internal.ts +195 -0
  215. package/src/types/snapshot.ts +886 -0
  216. package/src/types/wire.ts +207 -0
  217. package/src/util/mask.ts +89 -0
  218. package/src/util/options.ts +57 -0
  219. package/src/util/shared-buffers.ts +56 -0
  220. package/src/util/typed-array.ts +371 -0
  221. package/src/wire/bytes.ts +440 -0
  222. package/src/wire/carried-views.ts +327 -0
  223. package/src/wire/from-wire.ts +1690 -0
  224. package/src/wire/to-wire.ts +755 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../src/builder/compact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * The two stable counting-sort passes of the freeze pipeline (design section 6.3 steps 3-6, 8): arc
3
+ * materialisation (doubled storage for undirected graphs, self-loops once, invariant I7), the
4
+ * identity check for directed input that is already grouped by source and sorted by target (step 4),
5
+ * pass 1 by target, pass 2 by source into rowPtr with the scatter writing colIdx / arcToEdge /
6
+ * edgeToArc straight into the target arrays (the arena, for a "keep" freeze), and the flag
7
+ * predicates of design section 3.8 computed on the way (I9). There is no comparator sort anywhere;
8
+ * the cost is O(n + A).
9
+ *
10
+ * Because pass 2 is stable and consumes arcs in pass-1 order, every row ends sorted by target with
11
+ * parallel arcs in ascending logical-edge order (I4), and the k-th `u -> v` arc in row u and the
12
+ * k-th `v -> u` arc in row v come from the same edge (design section 6.4).
13
+ *
14
+ * Layout of the passes, chosen from the memory profile of the 100k-node / 1M-edge benchmark (the
15
+ * scatters are cache-miss bound, so the rule is: as few random streams per loop as possible, and no
16
+ * random LOAD whose value a branch depends on inside a scatter):
17
+ *
18
+ * - One sequential pass over the edges counts arcs per target and per source (both prefix sums come
19
+ * out of it), counts the self-loops, and scans the weights (NaN refusal, I8; the min / max of the
20
+ * stored f32 values, from which the three weight flags follow, I9). Every edge lands on at least
21
+ * one arc, so predicates over the edges equal predicates over the arcs.
22
+ * - Pass 1 scatters (source, edge) PAIRS into target order, one 8-byte write per arc into a single
23
+ * `byTarget` transient of 2A words; for an undirected graph a bitmap over the pass-1 positions
24
+ * marks the arc whose stored orientation is the declared one (the mirror arc of an edge is
25
+ * emitted right after it, so arcs stay in edge order within a bucket).
26
+ * - Pass 2 reads `byTarget` sequentially bucket by bucket and scatters ONLY colIdx and arcToEdge (and
27
+ * edgeToArc when undirected, where the declared bit is at hand).
28
+ * - Sequential post-passes derive edgeToArc from arcToEdge (directed), gather the arc weights
29
+ * through arcToEdge, and test adjacent targets within each row for the multigraph flag.
30
+ *
31
+ * Every loop lives in its own small function: V8 optimises a hot loop by on-stack replacement of the
32
+ * function that contains it, and a function invoked once per freeze with a dozen loops in it is
33
+ * re-entered through stale OSR code that deoptimises at every loop exit.
34
+ *
35
+ * Transients of the non-identity path: 2 x U32(n + 1), U32(2A), and for an undirected graph a bitmap
36
+ * of A bits.
37
+ */
38
+ import { type F32, type F64, type SnapshotFlags, type U32 } from "../types/index.js";
39
+ import { type CoreArrays } from "./arena.js";
40
+ /** The per-logical-edge input of the sort: views over the (compacted) staging arrays. */
41
+ export interface SortInput {
42
+ /** Whether the graph is directed. */
43
+ readonly directed: boolean;
44
+ /** The node count n; every endpoint is below it. */
45
+ readonly nodeCount: number;
46
+ /** The logical edge count E; only the first E entries of src / dst / weights are read. */
47
+ readonly edgeCount: number;
48
+ /** Declared source of every edge. */
49
+ readonly src: U32;
50
+ /** Declared target of every edge. */
51
+ readonly dst: U32;
52
+ /** Per-edge staging weights (f32 or f64), or null when unweighted. */
53
+ readonly weights: F32 | F64 | null;
54
+ }
55
+ /** What the sort produces: the core arrays, the counts and the truthful flags. */
56
+ export interface SortResult {
57
+ /** The core arrays (in the arena when requested). */
58
+ readonly core: CoreArrays;
59
+ /** colIdx.length. */
60
+ readonly arcCount: number;
61
+ /** Logical edges with source === target. */
62
+ readonly selfLoopCount: number;
63
+ /** The flags of design section 3.8, computed from the arrays (invariant I9). */
64
+ readonly flags: SnapshotFlags;
65
+ }
66
+ /**
67
+ * The number of self-loop edges among the first `edgeCount` entries.
68
+ * @param src - sources
69
+ * @param dst - targets
70
+ * @param edgeCount - how many edges to inspect
71
+ * @returns the loop count
72
+ */
73
+ export declare function countSelfLoops(src: U32, dst: U32, edgeCount: number): number;
74
+ /**
75
+ * The identity check of design section 6.3 step 4: whether (src[e], dst[e]) is non-decreasing
76
+ * lexicographically, so that a stable sort by (source, target) moves nothing and the CSR permutation is
77
+ * the identity.
78
+ * @param src - sources
79
+ * @param dst - targets
80
+ * @param edgeCount - how many edges to inspect
81
+ * @returns true when the edges are already in CSR order
82
+ */
83
+ export declare function isSortedEdgeList(src: U32, dst: U32, edgeCount: number): boolean;
84
+ /**
85
+ * Sort a per-edge list into a CSR core (design section 6.3 steps 3-6 and 8). Directed input that is
86
+ * already in CSR order takes the identity path (one count + scan + copy, no permutation arrays,
87
+ * `flags.arcToEdgeIsIdentity`); everything else takes the two counting-sort passes. Undirected input
88
+ * emits the mirror arc of every non-loop edge (I7). Weights are stored as f32 (design section 3.7) and
89
+ * the flags are computed from the stored values (I9). A NaN weight is E_INVALID_WEIGHT (I8) naming
90
+ * the lowest such edge, thrown before anything is allocated.
91
+ * @param input - the per-edge arrays
92
+ * @param useArena - allocate the core inside one 256-aligned arena (true) or as separate buffers
93
+ * @returns the core, the counts and the flags
94
+ */
95
+ export declare function sortIntoCore(input: SortInput, useArena: boolean): SortResult;
96
+ //# sourceMappingURL=counting-sort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counting-sort.d.ts","sourceRoot":"","sources":["../../../src/builder/counting-sort.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,aAAa,EAAE,KAAK,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEjE,yFAAyF;AACzF,MAAM,WAAW,SAAS;IACtB,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CACtC;AAED,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACvB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,qBAAqB;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAS/E;AAgTD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,UAAU,CAqF5E"}
@@ -0,0 +1,430 @@
1
+ /**
2
+ * The two stable counting-sort passes of the freeze pipeline (design section 6.3 steps 3-6, 8): arc
3
+ * materialisation (doubled storage for undirected graphs, self-loops once, invariant I7), the
4
+ * identity check for directed input that is already grouped by source and sorted by target (step 4),
5
+ * pass 1 by target, pass 2 by source into rowPtr with the scatter writing colIdx / arcToEdge /
6
+ * edgeToArc straight into the target arrays (the arena, for a "keep" freeze), and the flag
7
+ * predicates of design section 3.8 computed on the way (I9). There is no comparator sort anywhere;
8
+ * the cost is O(n + A).
9
+ *
10
+ * Because pass 2 is stable and consumes arcs in pass-1 order, every row ends sorted by target with
11
+ * parallel arcs in ascending logical-edge order (I4), and the k-th `u -> v` arc in row u and the
12
+ * k-th `v -> u` arc in row v come from the same edge (design section 6.4).
13
+ *
14
+ * Layout of the passes, chosen from the memory profile of the 100k-node / 1M-edge benchmark (the
15
+ * scatters are cache-miss bound, so the rule is: as few random streams per loop as possible, and no
16
+ * random LOAD whose value a branch depends on inside a scatter):
17
+ *
18
+ * - One sequential pass over the edges counts arcs per target and per source (both prefix sums come
19
+ * out of it), counts the self-loops, and scans the weights (NaN refusal, I8; the min / max of the
20
+ * stored f32 values, from which the three weight flags follow, I9). Every edge lands on at least
21
+ * one arc, so predicates over the edges equal predicates over the arcs.
22
+ * - Pass 1 scatters (source, edge) PAIRS into target order, one 8-byte write per arc into a single
23
+ * `byTarget` transient of 2A words; for an undirected graph a bitmap over the pass-1 positions
24
+ * marks the arc whose stored orientation is the declared one (the mirror arc of an edge is
25
+ * emitted right after it, so arcs stay in edge order within a bucket).
26
+ * - Pass 2 reads `byTarget` sequentially bucket by bucket and scatters ONLY colIdx and arcToEdge (and
27
+ * edgeToArc when undirected, where the declared bit is at hand).
28
+ * - Sequential post-passes derive edgeToArc from arcToEdge (directed), gather the arc weights
29
+ * through arcToEdge, and test adjacent targets within each row for the multigraph flag.
30
+ *
31
+ * Every loop lives in its own small function: V8 optimises a hot loop by on-stack replacement of the
32
+ * function that contains it, and a function invoked once per freeze with a dozen loops in it is
33
+ * re-entered through stale OSR code that deoptimises at every loop exit.
34
+ *
35
+ * Transients of the non-identity path: 2 x U32(n + 1), U32(2A), and for an undirected graph a bitmap
36
+ * of A bits.
37
+ */
38
+ import { GraphFormatError } from "../errors.js";
39
+ import { allocateCoreArrays } from "./arena.js";
40
+ /**
41
+ * The number of self-loop edges among the first `edgeCount` entries.
42
+ * @param src - sources
43
+ * @param dst - targets
44
+ * @param edgeCount - how many edges to inspect
45
+ * @returns the loop count
46
+ */
47
+ export function countSelfLoops(src, dst, edgeCount) {
48
+ let loops = 0;
49
+ for (let e = 0; e < edgeCount; e++) {
50
+ if (src[e] === dst[e]) {
51
+ loops++;
52
+ }
53
+ }
54
+ return loops;
55
+ }
56
+ /**
57
+ * The identity check of design section 6.3 step 4: whether (src[e], dst[e]) is non-decreasing
58
+ * lexicographically, so that a stable sort by (source, target) moves nothing and the CSR permutation is
59
+ * the identity.
60
+ * @param src - sources
61
+ * @param dst - targets
62
+ * @param edgeCount - how many edges to inspect
63
+ * @returns true when the edges are already in CSR order
64
+ */
65
+ export function isSortedEdgeList(src, dst, edgeCount) {
66
+ for (let e = 1; e < edgeCount; e++) {
67
+ const u = src[e];
68
+ const prev = src[e - 1];
69
+ if (u < prev || (u === prev && dst[e] < dst[e - 1])) {
70
+ return false;
71
+ }
72
+ }
73
+ return true;
74
+ }
75
+ /**
76
+ * The E_INVALID_WEIGHT error for a NaN staging weight (invariant I8).
77
+ * @param e - the logical edge
78
+ * @param w - the value
79
+ * @returns the error
80
+ */
81
+ function nanWeight(e, w) {
82
+ return new GraphFormatError("E_INVALID_WEIGHT", `edge ${e} has a NaN weight`, { edge: e, weight: w });
83
+ }
84
+ // ============================================================ the sequential edge pass
85
+ /**
86
+ * The weight scan of design section 6.3 step 8 over the first `edgeCount` staging weights: NaN is
87
+ * refused (invariant I8, the bulk-input re-check, naming the lowest such edge), and the smallest and
88
+ * largest STORED values -- the values as the f32 arc array holds them (invariant I9: an f64 that
89
+ * rounds to 1, to -0 or to Infinity counts as its rounded value) -- are left in `bounds[0]` and
90
+ * `bounds[1]`. They are written from inside the loop whenever they change, so the loop's optimised
91
+ * code has no exit path without type feedback.
92
+ * @param edgeWeights - the staging weights
93
+ * @param edgeCount - how many edges to inspect; at least 1
94
+ * @param bounds - two slots initialised to +Infinity / -Infinity; receive the minimum and the maximum
95
+ */
96
+ function scanStoredWeights(edgeWeights, edgeCount, bounds) {
97
+ let min = Infinity;
98
+ let max = -Infinity;
99
+ for (let e = 0; e < edgeCount; e++) {
100
+ const w = Math.fround(edgeWeights[e]);
101
+ if (w !== w) {
102
+ throw nanWeight(e, edgeWeights[e]);
103
+ }
104
+ if (w < min) {
105
+ min = w;
106
+ bounds[0] = w;
107
+ }
108
+ if (w > max) {
109
+ max = w;
110
+ bounds[1] = w;
111
+ }
112
+ }
113
+ }
114
+ /**
115
+ * The counting half of the directed sort (design section 6.3 steps 5 and 6, the `cnt` arrays):
116
+ * arcs per target into `targetCount[v + 1]` and arcs per source into `rowCount[u + 1]`, ready for the
117
+ * exclusive prefix sums.
118
+ * @param src - sources
119
+ * @param dst - targets
120
+ * @param edgeCount - the logical edge count
121
+ * @param targetCount - n + 1 zeroed counters, by target
122
+ * @param rowCount - n + 1 zeroed counters, by source
123
+ * @returns the self-loop count
124
+ */
125
+ function countDirectedArcs(src, dst, edgeCount, targetCount, rowCount) {
126
+ let loops = 0;
127
+ for (let e = 0; e < edgeCount; e++) {
128
+ const u = src[e];
129
+ const v = dst[e];
130
+ targetCount[v + 1]++;
131
+ rowCount[u + 1]++;
132
+ if (u === v) {
133
+ loops++;
134
+ }
135
+ }
136
+ return loops;
137
+ }
138
+ /**
139
+ * The counting half of the undirected sort (design section 6.3 steps 3, 5 and 6): every non-loop
140
+ * edge contributes an arc in each direction, a self-loop one arc (invariant I7).
141
+ * @param src - sources
142
+ * @param dst - targets
143
+ * @param edgeCount - the logical edge count
144
+ * @param targetCount - n + 1 zeroed counters, by target
145
+ * @param rowCount - n + 1 zeroed counters, by source
146
+ * @returns the self-loop count
147
+ */
148
+ function countUndirectedArcs(src, dst, edgeCount, targetCount, rowCount) {
149
+ let loops = 0;
150
+ for (let e = 0; e < edgeCount; e++) {
151
+ const u = src[e];
152
+ const v = dst[e];
153
+ targetCount[v + 1]++;
154
+ rowCount[u + 1]++;
155
+ if (u === v) {
156
+ loops++;
157
+ }
158
+ else {
159
+ targetCount[u + 1]++;
160
+ rowCount[v + 1]++;
161
+ }
162
+ }
163
+ return loops;
164
+ }
165
+ /**
166
+ * Turn per-node counts stored at index + 1 into exclusive prefix sums in place: afterwards
167
+ * `counts[v]` is the start of v's bucket and `counts[nodeCount]` the total.
168
+ * @param counts - n + 1 counters with `counts[0] === 0`
169
+ * @param nodeCount - n
170
+ */
171
+ function prefixSum(counts, nodeCount) {
172
+ for (let v = 0; v < nodeCount; v++) {
173
+ counts[v + 1] += counts[v];
174
+ }
175
+ }
176
+ // ============================================================ the identity path
177
+ /**
178
+ * The identity path of design section 6.3 step 4 (directed input already in CSR order): colIdx is a
179
+ * copy of dst, and the multigraph flag is one comparison of adjacent edges.
180
+ * @param src - sources, grouped
181
+ * @param dst - targets, sorted within each group
182
+ * @param edgeCount - the logical edge count
183
+ * @param colIdx - receives dst
184
+ * @returns true when two adjacent edges connect the same pair
185
+ */
186
+ function copySortedTargets(src, dst, edgeCount, colIdx) {
187
+ let multigraph = false;
188
+ for (let e = 0; e < edgeCount; e++) {
189
+ const v = dst[e];
190
+ colIdx[e] = v;
191
+ if (e > 0 && src[e] === src[e - 1] && dst[e - 1] === v) {
192
+ multigraph = true;
193
+ }
194
+ }
195
+ return multigraph;
196
+ }
197
+ // ============================================================ pass 1: by target
198
+ /**
199
+ * Pass 1 of a directed sort (design section 6.3 step 5): scatter every edge into target order as a
200
+ * (source, edge) pair, `byTarget[2p] = src[e]`, `byTarget[2p + 1] = e`.
201
+ * @param src - sources
202
+ * @param dst - targets
203
+ * @param edgeCount - the logical edge count
204
+ * @param cursor - the target bucket starts; advanced in place
205
+ * @param byTarget - 2A words receiving the pairs
206
+ */
207
+ function scatterDirectedByTarget(src, dst, edgeCount, cursor, byTarget) {
208
+ for (let e = 0; e < edgeCount; e++) {
209
+ const p = 2 * cursor[dst[e]]++;
210
+ byTarget[p] = src[e];
211
+ byTarget[p + 1] = e;
212
+ }
213
+ }
214
+ /**
215
+ * Pass 1 of an undirected sort (design section 6.3 steps 3 and 5, fused): the declared arc
216
+ * `(src, dst, e)` goes into bucket dst and, for a non-loop, the mirror `(dst, src, e)` into bucket
217
+ * src right after it, so arcs stay in edge order within every bucket. The pass-1 position of every
218
+ * declared arc is marked in `declared` (bit p).
219
+ * @param src - sources
220
+ * @param dst - targets
221
+ * @param edgeCount - the logical edge count
222
+ * @param cursor - the target bucket starts; advanced in place
223
+ * @param byTarget - 2A words receiving the (source, edge) pairs
224
+ * @param declared - a zeroed bitmap of A bits
225
+ */
226
+ function scatterUndirectedByTarget(src, dst, edgeCount, cursor, byTarget, declared) {
227
+ for (let e = 0; e < edgeCount; e++) {
228
+ const u = src[e];
229
+ const v = dst[e];
230
+ const p = cursor[v]++;
231
+ byTarget[2 * p] = u;
232
+ byTarget[2 * p + 1] = e;
233
+ declared[p >>> 5] |= 1 << (p & 31);
234
+ if (u !== v) {
235
+ const q = 2 * cursor[u]++;
236
+ byTarget[q] = v;
237
+ byTarget[q + 1] = e;
238
+ }
239
+ }
240
+ }
241
+ // ============================================================ pass 2: by source
242
+ /**
243
+ * Pass 2 of a directed sort (design section 6.3 step 6): walk the target buckets in order and
244
+ * scatter every arc into its row, writing colIdx and arcToEdge. Stable, so rows end sorted by target
245
+ * with parallels in edge order (I4).
246
+ * @param nodeCount - n
247
+ * @param targetStart - the target bucket starts (pass-1 layout)
248
+ * @param byTarget - the pass-1 (source, edge) pairs
249
+ * @param cursor - the row starts (a copy of rowPtr); advanced in place
250
+ * @param colIdx - receives the targets
251
+ * @param arcToEdge - receives the edges
252
+ */
253
+ function scatterDirectedBySource(nodeCount, targetStart, byTarget, cursor, colIdx, arcToEdge) {
254
+ for (let v = 0; v < nodeCount; v++) {
255
+ const end = 2 * targetStart[v + 1];
256
+ for (let p = 2 * targetStart[v]; p < end; p += 2) {
257
+ const a = cursor[byTarget[p]]++;
258
+ colIdx[a] = v;
259
+ arcToEdge[a] = byTarget[p + 1];
260
+ }
261
+ }
262
+ }
263
+ /**
264
+ * Pass 2 of an undirected sort (design section 6.3 step 6): as the directed pass, plus
265
+ * `edgeToArc[e] = a` for the arc whose stored orientation is the declared one (for a self-loop the
266
+ * single arc), which the pass-1 bitmap identifies.
267
+ * @param nodeCount - n
268
+ * @param targetStart - the target bucket starts (pass-1 layout)
269
+ * @param byTarget - the pass-1 (source, edge) pairs
270
+ * @param declared - bit p set when pass-1 position p holds a declared arc
271
+ * @param cursor - the row starts (a copy of rowPtr); advanced in place
272
+ * @param colIdx - receives the targets
273
+ * @param arcToEdge - receives the edges
274
+ * @param edgeToArc - receives the declared arc of every edge
275
+ */
276
+ function scatterUndirectedBySource(nodeCount, targetStart, byTarget, declared, cursor, colIdx, arcToEdge, edgeToArc) {
277
+ for (let v = 0; v < nodeCount; v++) {
278
+ const end = targetStart[v + 1];
279
+ for (let p = targetStart[v]; p < end; p++) {
280
+ const e = byTarget[2 * p + 1];
281
+ const a = cursor[byTarget[2 * p]]++;
282
+ colIdx[a] = v;
283
+ arcToEdge[a] = e;
284
+ if (((declared[p >>> 5] >>> (p & 31)) & 1) === 1) {
285
+ edgeToArc[e] = a;
286
+ }
287
+ }
288
+ }
289
+ }
290
+ // ============================================================ sequential post-passes
291
+ /**
292
+ * The inverse of a directed permutation: `edgeToArc[arcToEdge[a]] = a` (every arc is its edge's only
293
+ * arc).
294
+ * @param arcToEdge - the arc permutation
295
+ * @param edgeToArc - receives the inverse
296
+ */
297
+ function invertPermutation(arcToEdge, edgeToArc) {
298
+ const arcCount = arcToEdge.length;
299
+ for (let a = 0; a < arcCount; a++) {
300
+ edgeToArc[arcToEdge[a]] = a;
301
+ }
302
+ }
303
+ /**
304
+ * The arc weights (design section 3.7): `weights[a] = f32(edgeWeights[arcToEdge[a]])`, a sequential
305
+ * write with one independent random read per arc.
306
+ * @param arcToEdge - the arc permutation
307
+ * @param edgeWeights - the staging weights
308
+ * @param weights - receives the f32 arc weights
309
+ */
310
+ function gatherWeights(arcToEdge, edgeWeights, weights) {
311
+ const arcCount = arcToEdge.length;
312
+ for (let a = 0; a < arcCount; a++) {
313
+ weights[a] = edgeWeights[arcToEdge[a]];
314
+ }
315
+ }
316
+ /**
317
+ * The multigraph flag (design section 3.8): whether some row holds two adjacent arcs with the same
318
+ * target; rows are sorted by target, so parallels are adjacent (I4).
319
+ * @param rowPtr - the row starts
320
+ * @param colIdx - the sorted targets
321
+ * @param nodeCount - n
322
+ * @returns true when a parallel pair exists
323
+ */
324
+ function hasAdjacentParallels(rowPtr, colIdx, nodeCount) {
325
+ for (let u = 0; u < nodeCount; u++) {
326
+ const end = rowPtr[u + 1];
327
+ for (let a = rowPtr[u] + 1; a < end; a++) {
328
+ if (colIdx[a] === colIdx[a - 1]) {
329
+ return true;
330
+ }
331
+ }
332
+ }
333
+ return false;
334
+ }
335
+ // ============================================================ the sort
336
+ /**
337
+ * Sort a per-edge list into a CSR core (design section 6.3 steps 3-6 and 8). Directed input that is
338
+ * already in CSR order takes the identity path (one count + scan + copy, no permutation arrays,
339
+ * `flags.arcToEdgeIsIdentity`); everything else takes the two counting-sort passes. Undirected input
340
+ * emits the mirror arc of every non-loop edge (I7). Weights are stored as f32 (design section 3.7) and
341
+ * the flags are computed from the stored values (I9). A NaN weight is E_INVALID_WEIGHT (I8) naming
342
+ * the lowest such edge, thrown before anything is allocated.
343
+ * @param input - the per-edge arrays
344
+ * @param useArena - allocate the core inside one 256-aligned arena (true) or as separate buffers
345
+ * @returns the core, the counts and the flags
346
+ */
347
+ export function sortIntoCore(input, useArena) {
348
+ const { directed, nodeCount, edgeCount, src, dst } = input;
349
+ const edgeWeights = input.weights;
350
+ // step 8's weight predicates, over the edges: every edge lands on at least one arc, so the
351
+ // per-value predicates over the stored arc weights equal those over the f32-rounded edge weights
352
+ let allOne = true;
353
+ let nonNegative = true;
354
+ let finite = true;
355
+ if (edgeWeights !== null && edgeCount > 0) {
356
+ const bounds = new Float64Array([Infinity, -Infinity]);
357
+ scanStoredWeights(edgeWeights, edgeCount, bounds);
358
+ const min = bounds[0];
359
+ const max = bounds[1];
360
+ allOne = min === 1 && max === 1;
361
+ nonNegative = min >= 0;
362
+ finite = min > -Infinity && max < Infinity;
363
+ }
364
+ // steps 3-6 counts: one sequential pass over the edges yields both prefix sums and the loop count
365
+ const targetStart = new Uint32Array(nodeCount + 1);
366
+ const rowCount = new Uint32Array(nodeCount + 1);
367
+ const selfLoopCount = directed
368
+ ? countDirectedArcs(src, dst, edgeCount, targetStart, rowCount)
369
+ : countUndirectedArcs(src, dst, edgeCount, targetStart, rowCount);
370
+ const arcCount = directed ? edgeCount : 2 * edgeCount - selfLoopCount;
371
+ const identity = directed && isSortedEdgeList(src, dst, edgeCount);
372
+ const core = allocateCoreArrays({ nodeCount, arcCount, edgeCount, weighted: edgeWeights !== null, identity }, useArena);
373
+ const { rowPtr, colIdx, weights, arcToEdge, edgeToArc } = core;
374
+ prefixSum(rowCount, nodeCount);
375
+ rowPtr.set(rowCount);
376
+ let multigraph;
377
+ if (identity) {
378
+ // step 4: the edge arrays are the arc arrays -- copy, and round the weights to f32
379
+ multigraph = copySortedTargets(src, dst, edgeCount, colIdx);
380
+ if (weights !== null && edgeWeights !== null) {
381
+ weights.set(edgeWeights.subarray(0, edgeCount));
382
+ }
383
+ }
384
+ else if (arcToEdge !== null && edgeToArc !== null) {
385
+ // step 5: pass 1 by target; `rowCount` is reused as the pass-1 cursor
386
+ prefixSum(targetStart, nodeCount);
387
+ const cursor = rowCount;
388
+ cursor.set(targetStart);
389
+ const byTarget = new Uint32Array(2 * arcCount);
390
+ let declared = null;
391
+ if (directed) {
392
+ scatterDirectedByTarget(src, dst, edgeCount, cursor, byTarget);
393
+ }
394
+ else {
395
+ declared = new Uint32Array((arcCount + 31) >>> 5);
396
+ scatterUndirectedByTarget(src, dst, edgeCount, cursor, byTarget, declared);
397
+ }
398
+ // step 6: pass 2 by source into the rows; the cursor now walks rowPtr
399
+ cursor.set(rowPtr);
400
+ if (declared === null) {
401
+ scatterDirectedBySource(nodeCount, targetStart, byTarget, cursor, colIdx, arcToEdge);
402
+ invertPermutation(arcToEdge, edgeToArc);
403
+ }
404
+ else {
405
+ scatterUndirectedBySource(nodeCount, targetStart, byTarget, declared, cursor, colIdx, arcToEdge, edgeToArc);
406
+ }
407
+ if (weights !== null && edgeWeights !== null) {
408
+ gatherWeights(arcToEdge, edgeWeights, weights);
409
+ }
410
+ multigraph = hasAdjacentParallels(rowPtr, colIdx, nodeCount);
411
+ }
412
+ else {
413
+ // allocateCoreArrays materialises both permutations whenever the sort is not the identity
414
+ throw new GraphFormatError("E_UNSUPPORTED", "unreachable: a non-identity core without permutation arrays", {
415
+ directed,
416
+ arcCount,
417
+ });
418
+ }
419
+ const flags = Object.freeze({
420
+ multigraph,
421
+ hasSelfLoops: selfLoopCount > 0,
422
+ arcToEdgeIsIdentity: identity,
423
+ weighted: weights !== null,
424
+ allWeightsOne: allOne,
425
+ nonNegativeWeights: nonNegative,
426
+ finiteWeights: finite,
427
+ });
428
+ return { core, arcCount, selfLoopCount, flags };
429
+ }
430
+ //# sourceMappingURL=counting-sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counting-sort.js","sourceRoot":"","sources":["../../../src/builder/counting-sort.ts"],"names":[],"mappings":"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"}