@graphty/graph-samples 0.0.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +123 -0
- package/README.md +190 -1
- package/dist/chunks/build-DdCe60t3.js +47 -0
- package/dist/chunks/build-DdCe60t3.js.map +1 -0
- package/dist/chunks/meta-B6toBzaa.js +19 -0
- package/dist/chunks/meta-B6toBzaa.js.map +1 -0
- package/dist/chunks/meta-BM_YIhlA.js +28 -0
- package/dist/chunks/meta-BM_YIhlA.js.map +1 -0
- package/dist/chunks/meta-BMmtUpPx.js +30 -0
- package/dist/chunks/meta-BMmtUpPx.js.map +1 -0
- package/dist/chunks/meta-BXC7oi86.js +22 -0
- package/dist/chunks/meta-BXC7oi86.js.map +1 -0
- package/dist/chunks/meta-BaFPvhc1.js +19 -0
- package/dist/chunks/meta-BaFPvhc1.js.map +1 -0
- package/dist/chunks/meta-C58v1Oy0.js +28 -0
- package/dist/chunks/meta-C58v1Oy0.js.map +1 -0
- package/dist/chunks/meta-CQRXyexG.js +23 -0
- package/dist/chunks/meta-CQRXyexG.js.map +1 -0
- package/dist/chunks/meta-DrgM1eS0.js +23 -0
- package/dist/chunks/meta-DrgM1eS0.js.map +1 -0
- package/dist/chunks/meta-IhoaDXAV.js +19 -0
- package/dist/chunks/meta-IhoaDXAV.js.map +1 -0
- package/dist/chunks/meta-MQPbBUUB.js +29 -0
- package/dist/chunks/meta-MQPbBUUB.js.map +1 -0
- package/dist/chunks/meta-Qp4HNYAZ.js +24 -0
- package/dist/chunks/meta-Qp4HNYAZ.js.map +1 -0
- package/dist/chunks/meta-mns0uFIW.js +19 -0
- package/dist/chunks/meta-mns0uFIW.js.map +1 -0
- package/dist/datasets/celegans-neural.d.ts +1 -0
- package/dist/datasets/celegans-neural.js +7359 -0
- package/dist/datasets/celegans-neural.js.map +1 -0
- package/dist/datasets/contiguous-usa.d.ts +1 -0
- package/dist/datasets/contiguous-usa.js +501 -0
- package/dist/datasets/contiguous-usa.js.map +1 -0
- package/dist/datasets/davis-southern-women.d.ts +1 -0
- package/dist/datasets/davis-southern-women.js +235 -0
- package/dist/datasets/davis-southern-women.js.map +1 -0
- package/dist/datasets/dolphins.d.ts +1 -0
- package/dist/datasets/dolphins.js +406 -0
- package/dist/datasets/dolphins.js.map +1 -0
- package/dist/datasets/florentine-families.d.ts +1 -0
- package/dist/datasets/florentine-families.js +75 -0
- package/dist/datasets/florentine-families.js.map +1 -0
- package/dist/datasets/football.d.ts +1 -0
- package/dist/datasets/football.js +1508 -0
- package/dist/datasets/football.js.map +1 -0
- package/dist/datasets/karate.d.ts +1 -0
- package/dist/datasets/karate.js +295 -0
- package/dist/datasets/karate.js.map +1 -0
- package/dist/datasets/knuth-miles.d.ts +1 -0
- package/dist/datasets/knuth-miles.js +24933 -0
- package/dist/datasets/knuth-miles.js.map +1 -0
- package/dist/datasets/les-miserables.d.ts +1 -0
- package/dist/datasets/les-miserables.js +860 -0
- package/dist/datasets/les-miserables.js.map +1 -0
- package/dist/datasets/openflights.d.ts +1 -0
- package/dist/datasets/openflights.js +130277 -0
- package/dist/datasets/openflights.js.map +1 -0
- package/dist/datasets/political-blogs.d.ts +1 -0
- package/dist/datasets/political-blogs.js +42551 -0
- package/dist/datasets/political-blogs.js.map +1 -0
- package/dist/datasets/political-books.d.ts +1 -0
- package/dist/datasets/political-books.js +1124 -0
- package/dist/datasets/political-books.js.map +1 -0
- package/dist/generators.d.ts +1 -0
- package/dist/generators.js +4496 -0
- package/dist/generators.js.map +1 -0
- package/dist/graph-samples.d.ts +1 -0
- package/dist/graph-samples.js +142 -0
- package/dist/graph-samples.js.map +1 -0
- package/dist/src/datasets/build.d.ts +89 -0
- package/dist/src/datasets/build.d.ts.map +1 -0
- package/dist/src/datasets/build.js +53 -0
- package/dist/src/datasets/build.js.map +1 -0
- package/dist/src/datasets/catalog.d.ts +8 -0
- package/dist/src/datasets/catalog.d.ts.map +1 -0
- package/dist/src/datasets/catalog.js +34 -0
- package/dist/src/datasets/catalog.js.map +1 -0
- package/dist/src/datasets/celegans-neural/data.d.ts +3 -0
- package/dist/src/datasets/celegans-neural/data.d.ts.map +1 -0
- package/dist/src/datasets/celegans-neural/data.js +573 -0
- package/dist/src/datasets/celegans-neural/data.js.map +1 -0
- package/dist/src/datasets/celegans-neural/index.d.ts +11 -0
- package/dist/src/datasets/celegans-neural/index.d.ts.map +1 -0
- package/dist/src/datasets/celegans-neural/index.js +14 -0
- package/dist/src/datasets/celegans-neural/index.js.map +1 -0
- package/dist/src/datasets/celegans-neural/meta.d.ts +4 -0
- package/dist/src/datasets/celegans-neural/meta.d.ts.map +1 -0
- package/dist/src/datasets/celegans-neural/meta.js +21 -0
- package/dist/src/datasets/celegans-neural/meta.js.map +1 -0
- package/dist/src/datasets/contiguous-usa/data.d.ts +3 -0
- package/dist/src/datasets/contiguous-usa/data.d.ts.map +1 -0
- package/dist/src/datasets/contiguous-usa/data.js +162 -0
- package/dist/src/datasets/contiguous-usa/data.js.map +1 -0
- package/dist/src/datasets/contiguous-usa/index.d.ts +11 -0
- package/dist/src/datasets/contiguous-usa/index.d.ts.map +1 -0
- package/dist/src/datasets/contiguous-usa/index.js +14 -0
- package/dist/src/datasets/contiguous-usa/index.js.map +1 -0
- package/dist/src/datasets/contiguous-usa/meta.d.ts +4 -0
- package/dist/src/datasets/contiguous-usa/meta.d.ts.map +1 -0
- package/dist/src/datasets/contiguous-usa/meta.js +27 -0
- package/dist/src/datasets/contiguous-usa/meta.js.map +1 -0
- package/dist/src/datasets/davis-southern-women/data.d.ts +3 -0
- package/dist/src/datasets/davis-southern-women/data.d.ts.map +1 -0
- package/dist/src/datasets/davis-southern-women/data.js +57 -0
- package/dist/src/datasets/davis-southern-women/data.js.map +1 -0
- package/dist/src/datasets/davis-southern-women/index.d.ts +11 -0
- package/dist/src/datasets/davis-southern-women/index.d.ts.map +1 -0
- package/dist/src/datasets/davis-southern-women/index.js +14 -0
- package/dist/src/datasets/davis-southern-women/index.js.map +1 -0
- package/dist/src/datasets/davis-southern-women/meta.d.ts +4 -0
- package/dist/src/datasets/davis-southern-women/meta.d.ts.map +1 -0
- package/dist/src/datasets/davis-southern-women/meta.js +17 -0
- package/dist/src/datasets/davis-southern-women/meta.js.map +1 -0
- package/dist/src/datasets/dolphins/data.d.ts +3 -0
- package/dist/src/datasets/dolphins/data.d.ts.map +1 -0
- package/dist/src/datasets/dolphins/data.js +93 -0
- package/dist/src/datasets/dolphins/data.js.map +1 -0
- package/dist/src/datasets/dolphins/index.d.ts +11 -0
- package/dist/src/datasets/dolphins/index.d.ts.map +1 -0
- package/dist/src/datasets/dolphins/index.js +14 -0
- package/dist/src/datasets/dolphins/index.js.map +1 -0
- package/dist/src/datasets/dolphins/meta.d.ts +4 -0
- package/dist/src/datasets/dolphins/meta.d.ts.map +1 -0
- package/dist/src/datasets/dolphins/meta.js +17 -0
- package/dist/src/datasets/dolphins/meta.js.map +1 -0
- package/dist/src/datasets/florentine-families/data.d.ts +3 -0
- package/dist/src/datasets/florentine-families/data.d.ts.map +1 -0
- package/dist/src/datasets/florentine-families/data.js +31 -0
- package/dist/src/datasets/florentine-families/data.js.map +1 -0
- package/dist/src/datasets/florentine-families/index.d.ts +11 -0
- package/dist/src/datasets/florentine-families/index.d.ts.map +1 -0
- package/dist/src/datasets/florentine-families/index.js +14 -0
- package/dist/src/datasets/florentine-families/index.js.map +1 -0
- package/dist/src/datasets/florentine-families/meta.d.ts +4 -0
- package/dist/src/datasets/florentine-families/meta.d.ts.map +1 -0
- package/dist/src/datasets/florentine-families/meta.js +17 -0
- package/dist/src/datasets/florentine-families/meta.js.map +1 -0
- package/dist/src/datasets/football/data.d.ts +3 -0
- package/dist/src/datasets/football/data.d.ts.map +1 -0
- package/dist/src/datasets/football/data.js +210 -0
- package/dist/src/datasets/football/data.js.map +1 -0
- package/dist/src/datasets/football/index.d.ts +11 -0
- package/dist/src/datasets/football/index.d.ts.map +1 -0
- package/dist/src/datasets/football/index.js +14 -0
- package/dist/src/datasets/football/index.js.map +1 -0
- package/dist/src/datasets/football/meta.d.ts +4 -0
- package/dist/src/datasets/football/meta.d.ts.map +1 -0
- package/dist/src/datasets/football/meta.js +17 -0
- package/dist/src/datasets/football/meta.js.map +1 -0
- package/dist/src/datasets/hosted.d.ts +7 -0
- package/dist/src/datasets/hosted.d.ts.map +1 -0
- package/dist/src/datasets/hosted.js +80 -0
- package/dist/src/datasets/hosted.js.map +1 -0
- package/dist/src/datasets/karate/data.d.ts +3 -0
- package/dist/src/datasets/karate/data.d.ts.map +1 -0
- package/dist/src/datasets/karate/data.js +30 -0
- package/dist/src/datasets/karate/data.js.map +1 -0
- package/dist/src/datasets/karate/index.d.ts +11 -0
- package/dist/src/datasets/karate/index.d.ts.map +1 -0
- package/dist/src/datasets/karate/index.js +14 -0
- package/dist/src/datasets/karate/index.js.map +1 -0
- package/dist/src/datasets/karate/meta.d.ts +4 -0
- package/dist/src/datasets/karate/meta.d.ts.map +1 -0
- package/dist/src/datasets/karate/meta.js +22 -0
- package/dist/src/datasets/karate/meta.js.map +1 -0
- package/dist/src/datasets/knuth-miles/data.d.ts +3 -0
- package/dist/src/datasets/knuth-miles/data.d.ts.map +1 -0
- package/dist/src/datasets/knuth-miles/data.js +1203 -0
- package/dist/src/datasets/knuth-miles/data.js.map +1 -0
- package/dist/src/datasets/knuth-miles/index.d.ts +11 -0
- package/dist/src/datasets/knuth-miles/index.d.ts.map +1 -0
- package/dist/src/datasets/knuth-miles/index.js +14 -0
- package/dist/src/datasets/knuth-miles/index.js.map +1 -0
- package/dist/src/datasets/knuth-miles/meta.d.ts +4 -0
- package/dist/src/datasets/knuth-miles/meta.d.ts.map +1 -0
- package/dist/src/datasets/knuth-miles/meta.js +26 -0
- package/dist/src/datasets/knuth-miles/meta.js.map +1 -0
- package/dist/src/datasets/les-miserables/data.d.ts +3 -0
- package/dist/src/datasets/les-miserables/data.d.ts.map +1 -0
- package/dist/src/datasets/les-miserables/data.js +117 -0
- package/dist/src/datasets/les-miserables/data.js.map +1 -0
- package/dist/src/datasets/les-miserables/index.d.ts +11 -0
- package/dist/src/datasets/les-miserables/index.d.ts.map +1 -0
- package/dist/src/datasets/les-miserables/index.js +14 -0
- package/dist/src/datasets/les-miserables/index.js.map +1 -0
- package/dist/src/datasets/les-miserables/meta.d.ts +4 -0
- package/dist/src/datasets/les-miserables/meta.d.ts.map +1 -0
- package/dist/src/datasets/les-miserables/meta.js +21 -0
- package/dist/src/datasets/les-miserables/meta.js.map +1 -0
- package/dist/src/datasets/openflights/data.d.ts +3 -0
- package/dist/src/datasets/openflights/data.d.ts.map +1 -0
- package/dist/src/datasets/openflights/data.js +15457 -0
- package/dist/src/datasets/openflights/data.js.map +1 -0
- package/dist/src/datasets/openflights/index.d.ts +11 -0
- package/dist/src/datasets/openflights/index.d.ts.map +1 -0
- package/dist/src/datasets/openflights/index.js +14 -0
- package/dist/src/datasets/openflights/index.js.map +1 -0
- package/dist/src/datasets/openflights/meta.d.ts +4 -0
- package/dist/src/datasets/openflights/meta.d.ts.map +1 -0
- package/dist/src/datasets/openflights/meta.js +28 -0
- package/dist/src/datasets/openflights/meta.js.map +1 -0
- package/dist/src/datasets/political-blogs/data.d.ts +3 -0
- package/dist/src/datasets/political-blogs/data.d.ts.map +1 -0
- package/dist/src/datasets/political-blogs/data.js +4857 -0
- package/dist/src/datasets/political-blogs/data.js.map +1 -0
- package/dist/src/datasets/political-blogs/index.d.ts +11 -0
- package/dist/src/datasets/political-blogs/index.d.ts.map +1 -0
- package/dist/src/datasets/political-blogs/index.js +14 -0
- package/dist/src/datasets/political-blogs/index.js.map +1 -0
- package/dist/src/datasets/political-blogs/meta.d.ts +4 -0
- package/dist/src/datasets/political-blogs/meta.d.ts.map +1 -0
- package/dist/src/datasets/political-blogs/meta.js +26 -0
- package/dist/src/datasets/political-blogs/meta.js.map +1 -0
- package/dist/src/datasets/political-books/data.d.ts +3 -0
- package/dist/src/datasets/political-books/data.d.ts.map +1 -0
- package/dist/src/datasets/political-books/data.js +165 -0
- package/dist/src/datasets/political-books/data.js.map +1 -0
- package/dist/src/datasets/political-books/index.d.ts +11 -0
- package/dist/src/datasets/political-books/index.d.ts.map +1 -0
- package/dist/src/datasets/political-books/index.js +14 -0
- package/dist/src/datasets/political-books/index.js.map +1 -0
- package/dist/src/datasets/political-books/meta.d.ts +4 -0
- package/dist/src/datasets/political-books/meta.d.ts.map +1 -0
- package/dist/src/datasets/political-books/meta.js +20 -0
- package/dist/src/datasets/political-books/meta.js.map +1 -0
- package/dist/src/datasets/remote.d.ts +27 -0
- package/dist/src/datasets/remote.d.ts.map +1 -0
- package/dist/src/datasets/remote.js +30 -0
- package/dist/src/datasets/remote.js.map +1 -0
- package/dist/src/element.d.ts +20 -0
- package/dist/src/element.d.ts.map +1 -0
- package/dist/src/element.js +27 -0
- package/dist/src/element.js.map +1 -0
- package/dist/src/generators/bipartite.d.ts +51 -0
- package/dist/src/generators/bipartite.d.ts.map +1 -0
- package/dist/src/generators/bipartite.js +99 -0
- package/dist/src/generators/bipartite.js.map +1 -0
- package/dist/src/generators/block-model.d.ts +75 -0
- package/dist/src/generators/block-model.d.ts.map +1 -0
- package/dist/src/generators/block-model.js +116 -0
- package/dist/src/generators/block-model.js.map +1 -0
- package/dist/src/generators/classic.d.ts +208 -0
- package/dist/src/generators/classic.d.ts.map +1 -0
- package/dist/src/generators/classic.js +437 -0
- package/dist/src/generators/classic.js.map +1 -0
- package/dist/src/generators/degree-sequence.d.ts +273 -0
- package/dist/src/generators/degree-sequence.d.ts.map +1 -0
- package/dist/src/generators/degree-sequence.js +646 -0
- package/dist/src/generators/degree-sequence.js.map +1 -0
- package/dist/src/generators/directed.d.ts +141 -0
- package/dist/src/generators/directed.d.ts.map +1 -0
- package/dist/src/generators/directed.js +329 -0
- package/dist/src/generators/directed.js.map +1 -0
- package/dist/src/generators/erdos-renyi.d.ts +58 -0
- package/dist/src/generators/erdos-renyi.d.ts.map +1 -0
- package/dist/src/generators/erdos-renyi.js +154 -0
- package/dist/src/generators/erdos-renyi.js.map +1 -0
- package/dist/src/generators/flow.d.ts +153 -0
- package/dist/src/generators/flow.d.ts.map +1 -0
- package/dist/src/generators/flow.js +346 -0
- package/dist/src/generators/flow.js.map +1 -0
- package/dist/src/generators/geometric.d.ts +133 -0
- package/dist/src/generators/geometric.d.ts.map +1 -0
- package/dist/src/generators/geometric.js +495 -0
- package/dist/src/generators/geometric.js.map +1 -0
- package/dist/src/generators/growth.d.ts +187 -0
- package/dist/src/generators/growth.d.ts.map +1 -0
- package/dist/src/generators/growth.js +445 -0
- package/dist/src/generators/growth.js.map +1 -0
- package/dist/src/generators/hyperbolic.d.ts +84 -0
- package/dist/src/generators/hyperbolic.d.ts.map +1 -0
- package/dist/src/generators/hyperbolic.js +153 -0
- package/dist/src/generators/hyperbolic.js.map +1 -0
- package/dist/src/generators/index.d.ts +25 -0
- package/dist/src/generators/index.d.ts.map +1 -0
- package/dist/src/generators/index.js +24 -0
- package/dist/src/generators/index.js.map +1 -0
- package/dist/src/generators/lattices.d.ts +87 -0
- package/dist/src/generators/lattices.d.ts.map +1 -0
- package/dist/src/generators/lattices.js +237 -0
- package/dist/src/generators/lattices.js.map +1 -0
- package/dist/src/generators/lfr.d.ts +55 -0
- package/dist/src/generators/lfr.d.ts.map +1 -0
- package/dist/src/generators/lfr.js +178 -0
- package/dist/src/generators/lfr.js.map +1 -0
- package/dist/src/generators/named.d.ts +23 -0
- package/dist/src/generators/named.d.ts.map +1 -0
- package/dist/src/generators/named.js +191 -0
- package/dist/src/generators/named.js.map +1 -0
- package/dist/src/generators/preferential-attachment.d.ts +66 -0
- package/dist/src/generators/preferential-attachment.d.ts.map +1 -0
- package/dist/src/generators/preferential-attachment.js +157 -0
- package/dist/src/generators/preferential-attachment.js.map +1 -0
- package/dist/src/generators/trees-and-dags.d.ts +53 -0
- package/dist/src/generators/trees-and-dags.d.ts.map +1 -0
- package/dist/src/generators/trees-and-dags.js +108 -0
- package/dist/src/generators/trees-and-dags.js.map +1 -0
- package/dist/src/generators/util.d.ts +84 -0
- package/dist/src/generators/util.d.ts.map +1 -0
- package/dist/src/generators/util.js +138 -0
- package/dist/src/generators/util.js.map +1 -0
- package/dist/src/generators/variants.d.ts +85 -0
- package/dist/src/generators/variants.d.ts.map +1 -0
- package/dist/src/generators/variants.js +215 -0
- package/dist/src/generators/variants.js.map +1 -0
- package/dist/src/generators/weights.d.ts +65 -0
- package/dist/src/generators/weights.d.ts.map +1 -0
- package/dist/src/generators/weights.js +135 -0
- package/dist/src/generators/weights.js.map +1 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/random/exp.d.ts +23 -0
- package/dist/src/random/exp.d.ts.map +1 -0
- package/dist/src/random/exp.js +101 -0
- package/dist/src/random/exp.js.map +1 -0
- package/dist/src/random/log.d.ts +19 -0
- package/dist/src/random/log.d.ts.map +1 -0
- package/dist/src/random/log.js +83 -0
- package/dist/src/random/log.js.map +1 -0
- package/dist/src/random/stream.d.ts +93 -0
- package/dist/src/random/stream.d.ts.map +1 -0
- package/dist/src/random/stream.js +154 -0
- package/dist/src/random/stream.js.map +1 -0
- package/dist/src/random/threefry.d.ts +19 -0
- package/dist/src/random/threefry.d.ts.map +1 -0
- package/dist/src/random/threefry.js +43 -0
- package/dist/src/random/threefry.js.map +1 -0
- package/dist/src/random/trig.d.ts +16 -0
- package/dist/src/random/trig.d.ts.map +1 -0
- package/dist/src/random/trig.js +78 -0
- package/dist/src/random/trig.js.map +1 -0
- package/dist/src/types.d.ts +28 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +102 -5
- package/src/datasets/build.ts +140 -0
- package/src/datasets/catalog.ts +35 -0
- package/src/datasets/celegans-neural/data.ts +575 -0
- package/src/datasets/celegans-neural/index.ts +17 -0
- package/src/datasets/celegans-neural/meta.ts +25 -0
- package/src/datasets/contiguous-usa/data.ts +164 -0
- package/src/datasets/contiguous-usa/index.ts +17 -0
- package/src/datasets/contiguous-usa/meta.ts +31 -0
- package/src/datasets/davis-southern-women/data.ts +59 -0
- package/src/datasets/davis-southern-women/index.ts +17 -0
- package/src/datasets/davis-southern-women/meta.ts +20 -0
- package/src/datasets/dolphins/data.ts +95 -0
- package/src/datasets/dolphins/index.ts +17 -0
- package/src/datasets/dolphins/meta.ts +21 -0
- package/src/datasets/florentine-families/data.ts +33 -0
- package/src/datasets/florentine-families/index.ts +17 -0
- package/src/datasets/florentine-families/meta.ts +20 -0
- package/src/datasets/football/data.ts +212 -0
- package/src/datasets/football/index.ts +17 -0
- package/src/datasets/football/meta.ts +20 -0
- package/src/datasets/hosted.ts +90 -0
- package/src/datasets/karate/data.ts +32 -0
- package/src/datasets/karate/index.ts +17 -0
- package/src/datasets/karate/meta.ts +25 -0
- package/src/datasets/knuth-miles/data.ts +1205 -0
- package/src/datasets/knuth-miles/index.ts +17 -0
- package/src/datasets/knuth-miles/meta.ts +29 -0
- package/src/datasets/les-miserables/data.ts +119 -0
- package/src/datasets/les-miserables/index.ts +17 -0
- package/src/datasets/les-miserables/meta.ts +24 -0
- package/src/datasets/openflights/data.ts +15459 -0
- package/src/datasets/openflights/index.ts +17 -0
- package/src/datasets/openflights/meta.ts +31 -0
- package/src/datasets/political-blogs/data.ts +4859 -0
- package/src/datasets/political-blogs/index.ts +17 -0
- package/src/datasets/political-blogs/meta.ts +30 -0
- package/src/datasets/political-books/data.ts +167 -0
- package/src/datasets/political-books/index.ts +17 -0
- package/src/datasets/political-books/meta.ts +23 -0
- package/src/datasets/remote.ts +42 -0
- package/src/element.ts +41 -0
- package/src/generators/bipartite.ts +127 -0
- package/src/generators/block-model.ts +160 -0
- package/src/generators/classic.ts +461 -0
- package/src/generators/degree-sequence.ts +807 -0
- package/src/generators/directed.ts +418 -0
- package/src/generators/erdos-renyi.ts +188 -0
- package/src/generators/flow.ts +443 -0
- package/src/generators/geometric.ts +591 -0
- package/src/generators/growth.ts +532 -0
- package/src/generators/hyperbolic.ts +193 -0
- package/src/generators/index.ts +133 -0
- package/src/generators/lattices.ts +290 -0
- package/src/generators/lfr.ts +227 -0
- package/src/generators/named.ts +198 -0
- package/src/generators/preferential-attachment.ts +188 -0
- package/src/generators/trees-and-dags.ts +139 -0
- package/src/generators/util.ts +167 -0
- package/src/generators/variants.ts +253 -0
- package/src/generators/weights.ts +177 -0
- package/src/index.ts +12 -0
- package/src/random/exp.ts +104 -0
- package/src/random/log.ts +86 -0
- package/src/random/stream.ts +169 -0
- package/src/random/threefry.ts +45 -0
- package/src/random/trig.ts +83 -0
- package/src/types.ts +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"degree-sequence.js","sourceRoot":"","sources":["../../../src/generators/degree-sequence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directed random graphs: stochastic Kronecker graphs and R-MAT (the recursive-matrix family behind
|
|
3
|
+
* the Graph500 benchmark), Price's citation network and the random-order DAG.
|
|
4
|
+
*/
|
|
5
|
+
import { type SampleGraph } from "../types.js";
|
|
6
|
+
import { type EdgePolicy } from "./degree-sequence.js";
|
|
7
|
+
import { EdgeBuffer } from "./util.js";
|
|
8
|
+
import { type WeightOptions } from "./weights.js";
|
|
9
|
+
/** The options R-MAT and Kronecker graphs share. */
|
|
10
|
+
interface RecursiveOptions extends WeightOptions {
|
|
11
|
+
/** Self-loops: "keep" (the default) or "erase" them. */
|
|
12
|
+
selfLoops?: EdgePolicy | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Repeated pairs: "keep" (the default) or "erase" all but the first occurrence in edge order.
|
|
15
|
+
* For an undirected graph (u, v) and (v, u) are the same pair.
|
|
16
|
+
*/
|
|
17
|
+
multiEdges?: EdgePolicy | undefined;
|
|
18
|
+
/** Relabel the nodes by a uniformly random permutation, as Graph500 does; default false. */
|
|
19
|
+
permute?: boolean | undefined;
|
|
20
|
+
/** Whether the graph is directed; default true. */
|
|
21
|
+
directed?: boolean | undefined;
|
|
22
|
+
/** The seed, an integer in [0, 2^53); default 0. */
|
|
23
|
+
seed?: number | undefined;
|
|
24
|
+
}
|
|
25
|
+
/** Options of {@link kroneckerGraph}. */
|
|
26
|
+
export interface KroneckerOptions extends RecursiveOptions {
|
|
27
|
+
/** The k x k initiator matrix, k >= 1, entries in [0, 1]. */
|
|
28
|
+
initiator: readonly (readonly number[])[];
|
|
29
|
+
/** The Kronecker power, in [1, 64]; the graph has k^power nodes. */
|
|
30
|
+
power: number;
|
|
31
|
+
/** The number of edges to sample; default round((sum of the initiator)^power). */
|
|
32
|
+
edges?: number | undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A stochastic Kronecker graph (J. Leskovec, D. Chakrabarti, J. Kleinberg, C. Faloutsos and
|
|
36
|
+
* Z. Ghahramani, "Kronecker graphs: an approach to modeling networks", JMLR 11, 985-1042, 2010)
|
|
37
|
+
* by their fast O(E power) sampling: n = k^power nodes and E = round(S^power) edges, S the sum of
|
|
38
|
+
* the initiator (S^power by repeated multiplication), unless `edges` is given. Edge e draws from
|
|
39
|
+
* stream (seed, "kronecker", e): `power` descents, most significant first, each drawing
|
|
40
|
+
* u = nextFloat() and picking the first initiator cell (row-major) whose cumulative entry over S
|
|
41
|
+
* exceeds u; cell (r, c) appends digit r to the source and c to the target in base k. Edges are
|
|
42
|
+
* listed in sampling order. A multigraph unless erased: see `selfLoops`, `multiEdges`, `permute`
|
|
43
|
+
* (stream (seed, "kronecker-permute", 0)) and `directed`.
|
|
44
|
+
* @param options - initiator, power, edges, the shared recursive options and seed
|
|
45
|
+
* @returns the graph
|
|
46
|
+
*/
|
|
47
|
+
export declare function kroneckerGraph(options: KroneckerOptions): SampleGraph;
|
|
48
|
+
/** Options of {@link rmatGraph}. */
|
|
49
|
+
export interface RmatOptions extends RecursiveOptions {
|
|
50
|
+
/** log2 of the node count, in [0, 31]. */
|
|
51
|
+
scale: number;
|
|
52
|
+
/** Edges per node, an integer >= 0; default 16 (Graph500). */
|
|
53
|
+
edgeFactor?: number | undefined;
|
|
54
|
+
/** The top-left quadrant probability; default 0.57 (Graph500). */
|
|
55
|
+
a?: number | undefined;
|
|
56
|
+
/** The top-right quadrant probability; default 0.19. */
|
|
57
|
+
b?: number | undefined;
|
|
58
|
+
/** The bottom-left quadrant probability; default 0.19. */
|
|
59
|
+
c?: number | undefined;
|
|
60
|
+
/** The bottom-right quadrant probability; default 0.05. a + b + c + d must be 1. */
|
|
61
|
+
d?: number | undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* R-MAT (D. Chakrabarti, Y. Zhan and C. Faloutsos, "R-MAT: a recursive model for graph mining",
|
|
65
|
+
* SIAM SDM 2004, 442-446, doi:10.1137/1.9781611972740.43) with Graph500's defaults: n = 2^scale
|
|
66
|
+
* nodes and m = edgeFactor n edges in O(m scale). Edge e draws from stream (seed, "rmat", e):
|
|
67
|
+
* `scale` levels, most significant bit first, each comparing one nextFloat() with a, a + b and
|
|
68
|
+
* a + b + c to pick the top-left, top-right, bottom-left or else bottom-right quadrant (bit 0/1 of
|
|
69
|
+
* the source for top/bottom, of the target for left/right). Edges are listed in sampling order.
|
|
70
|
+
* A multigraph with self-loops unless erased: see `selfLoops`, `multiEdges`, `permute` (stream
|
|
71
|
+
* (seed, "rmat-permute", 0)) and `directed`.
|
|
72
|
+
*
|
|
73
|
+
* webgpu-graph-algorithms carries three private R-MAT copies on xorshift / LCG streams
|
|
74
|
+
* (benchmarks/datasets.ts, test/helpers/graphs.ts, demo/main.ts) that should move to this. Two
|
|
75
|
+
* of them move a self-loop to (u, (v + 1) mod n), keeping exactly m edges; `selfLoops: "erase"`
|
|
76
|
+
* drops the loop instead (about m / n^0.4 fewer edges at the defaults), and `weights: { kind:
|
|
77
|
+
* "integer", min: 1, max: 10 }` reproduces their 1..10 weights. The third keeps self-loops, which
|
|
78
|
+
* is this function's default.
|
|
79
|
+
* @param options - scale, edgeFactor, a, b, c, d, the shared recursive options and seed
|
|
80
|
+
* @returns the graph
|
|
81
|
+
*/
|
|
82
|
+
export declare function rmatGraph(options: RmatOptions): SampleGraph;
|
|
83
|
+
/** Options of {@link priceGraph}. */
|
|
84
|
+
export interface PriceOptions extends WeightOptions {
|
|
85
|
+
/** The node count, >= 1. */
|
|
86
|
+
n: number;
|
|
87
|
+
/** The number of earlier nodes each new node cites, >= 1 (fewer while fewer exist). */
|
|
88
|
+
citations: number;
|
|
89
|
+
/** The attractiveness a > 0 added to every in-degree; default 1. */
|
|
90
|
+
attractiveness?: number | undefined;
|
|
91
|
+
/** The seed, an integer in [0, 2^53); default 0. */
|
|
92
|
+
seed?: number | undefined;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Price's citation network (D. J. de S. Price, "Networks of scientific papers", Science 149,
|
|
96
|
+
* 510-515, 1965, doi:10.1126/science.149.3683.510; "A general theory of bibliometric and other
|
|
97
|
+
* cumulative advantage processes", J. Am. Soc. Inf. Sci. 27, 292-306, 1976): a directed acyclic
|
|
98
|
+
* graph with arcs from the citing (newer) node to the cited (older) one, in-degrees following a
|
|
99
|
+
* power law with exponent 2 + a / m.
|
|
100
|
+
*
|
|
101
|
+
* Node t = 1 .. n - 1 cites min(m, t) distinct earlier nodes, each chosen with probability
|
|
102
|
+
* proportional to in-degree + a, the in-degrees as they were when t arrived. When t <= m it cites
|
|
103
|
+
* every earlier node, ascending, without drawing. Otherwise, with E arcs made before t, every draw
|
|
104
|
+
* takes x = nextFloat() * (E + a t) and then, if x < E, the target of a uniformly chosen earlier
|
|
105
|
+
* arc (nextBelow(E) into the list of cited targets), else a uniform node nextBelow(t); a node t
|
|
106
|
+
* already cites is redrawn. All draws come from the single stream (seed, "price", 0): the process
|
|
107
|
+
* is sequential. Arcs are listed by citing node, in draw order. O(n m) expected.
|
|
108
|
+
* @param options - n, citations, attractiveness and seed
|
|
109
|
+
* @returns the directed graph
|
|
110
|
+
*/
|
|
111
|
+
export declare function priceGraph(options: PriceOptions): SampleGraph;
|
|
112
|
+
/** Options of {@link randomOrderDagGraph}. */
|
|
113
|
+
export interface RandomOrderDagOptions extends WeightOptions {
|
|
114
|
+
/** The node count, >= 0. */
|
|
115
|
+
n: number;
|
|
116
|
+
/** The probability of each arc i -> j, i < j, in [0, 1]. */
|
|
117
|
+
p: number;
|
|
118
|
+
/** The seed, an integer in [0, 2^53); default 0. */
|
|
119
|
+
seed?: number | undefined;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Rows [start, end) of the random-order DAG: row u draws from stream (seed, "order-dag", u) and
|
|
123
|
+
* holds the arcs u -> v, v = u + 1 .. n - 1 chosen, ascending. Any split of [0, n) into
|
|
124
|
+
* consecutive ranges concatenates to the whole graph's arc list.
|
|
125
|
+
* @param options - the generator's options (already checked)
|
|
126
|
+
* @param start - the first row
|
|
127
|
+
* @param end - one past the last row
|
|
128
|
+
* @param out - receives the arcs
|
|
129
|
+
*/
|
|
130
|
+
export declare function orderDagRows(options: RandomOrderDagOptions, start: number, end: number, out: EdgeBuffer): void;
|
|
131
|
+
/**
|
|
132
|
+
* The random-order DAG: a directed G(n, p) restricted to the arcs i -> j with i < j, so node
|
|
133
|
+
* index order is a topological order (B. Karrer and M. E. J. Newman, "Random acyclic networks",
|
|
134
|
+
* Phys. Rev. Lett. 102, 128701, 2009, doi:10.1103/PhysRevLett.102.128701). O(n + m) by geometric
|
|
135
|
+
* skipping; arcs in row-major order, see {@link orderDagRows}.
|
|
136
|
+
* @param options - n, p and seed
|
|
137
|
+
* @returns the directed acyclic graph
|
|
138
|
+
*/
|
|
139
|
+
export declare function randomOrderDagGraph(options: RandomOrderDagOptions): SampleGraph;
|
|
140
|
+
export {};
|
|
141
|
+
//# sourceMappingURL=directed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directed.d.ts","sourceRoot":"","sources":["../../../src/generators/directed.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAMH,UAAU,EAEb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,oDAAoD;AACpD,UAAU,gBAAiB,SAAQ,aAAa;IAC5C,wDAAwD;IACxD,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAkGD,yCAAyC;AACzC,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,6DAA6D;IAC7D,SAAS,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAC1C,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,WAAW,CA6DrE;AAED,oCAAoC;AACpC,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACjD,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kEAAkE;IAClE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,wDAAwD;IACxD,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,0DAA0D;IAC1D,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,oFAAoF;IACpF,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAgD3D;AAED,qCAAqC;AACrC,MAAM,WAAW,YAAa,SAAQ,aAAa;IAC/C,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW,CAmC7D;AAED,8CAA8C;AAC9C,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IACxD,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,4DAA4D;IAC5D,CAAC,EAAE,MAAM,CAAC;IACV,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAQ9G;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW,CAQ/E"}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directed random graphs: stochastic Kronecker graphs and R-MAT (the recursive-matrix family behind
|
|
3
|
+
* the Graph500 benchmark), Price's citation network and the random-order DAG.
|
|
4
|
+
*/
|
|
5
|
+
import { detLog } from "../random/log.js";
|
|
6
|
+
import { RandomStream, resolveSeed } from "../random/stream.js";
|
|
7
|
+
import { bernoulliSegment, binomialBuffer, checkEdgeCount, checkInt, checkProbability, EdgeBuffer, toGraph, } from "./util.js";
|
|
8
|
+
import { applyWeights } from "./weights.js";
|
|
9
|
+
/**
|
|
10
|
+
* Throw unless `value` is undefined or a duplicate policy.
|
|
11
|
+
* @param name - the option name
|
|
12
|
+
* @param value - the value
|
|
13
|
+
*/
|
|
14
|
+
function checkPolicy(name, value) {
|
|
15
|
+
if (value !== undefined && value !== "keep" && value !== "erase") {
|
|
16
|
+
throw new RangeError(`${name} must be "keep" or "erase", got ${String(value)}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Apply `permute`, `selfLoops` and `multiEdges` to freshly sampled edges, then build the graph.
|
|
21
|
+
* The permutation is a Fisher-Yates shuffle of 0 .. n - 1 (for i = n - 1 down to 1, swap i with
|
|
22
|
+
* nextBelow(i + 1)) from stream (seed, permuteDomain, 0); node u becomes perm[u]. Erasing keeps
|
|
23
|
+
* the first occurrence of a pair in edge order, and is not affected by the relabelling.
|
|
24
|
+
* @param n - the node count
|
|
25
|
+
* @param src - the sources, in edge order
|
|
26
|
+
* @param dst - the targets
|
|
27
|
+
* @param options - the options
|
|
28
|
+
* @param seed - the resolved seed
|
|
29
|
+
* @param permuteDomain - the permutation's stream domain
|
|
30
|
+
* @returns the graph (before weights)
|
|
31
|
+
*/
|
|
32
|
+
function finishRecursive(n, src, dst, options, seed, permuteDomain) {
|
|
33
|
+
const directed = options.directed ?? true;
|
|
34
|
+
const m = src.length;
|
|
35
|
+
if (options.permute === true) {
|
|
36
|
+
const perm = new Uint32Array(n);
|
|
37
|
+
for (let i = 0; i < n; i++) {
|
|
38
|
+
perm[i] = i;
|
|
39
|
+
}
|
|
40
|
+
const stream = new RandomStream(seed, permuteDomain, 0);
|
|
41
|
+
for (let i = n - 1; i > 0; i--) {
|
|
42
|
+
const j = stream.nextBelow(i + 1);
|
|
43
|
+
const t = perm[i];
|
|
44
|
+
perm[i] = perm[j];
|
|
45
|
+
perm[j] = t;
|
|
46
|
+
}
|
|
47
|
+
for (let e = 0; e < m; e++) {
|
|
48
|
+
src[e] = perm[src[e]];
|
|
49
|
+
dst[e] = perm[dst[e]];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const keep = new Uint8Array(m).fill(1);
|
|
53
|
+
if (options.selfLoops === "erase") {
|
|
54
|
+
for (let e = 0; e < m; e++) {
|
|
55
|
+
if (src[e] === dst[e]) {
|
|
56
|
+
keep[e] = 0;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (options.multiEdges === "erase") {
|
|
61
|
+
const lo = directed ? src : src.map((u, e) => Math.min(u, dst[e]));
|
|
62
|
+
const hi = directed ? dst : src.map((u, e) => Math.max(u, dst[e]));
|
|
63
|
+
// ponytail: O(m log m) comparator sort of edge indices; a hash set if erasing 100M+ edges matters
|
|
64
|
+
const order = new Uint32Array(m);
|
|
65
|
+
for (let e = 0; e < m; e++) {
|
|
66
|
+
order[e] = e;
|
|
67
|
+
}
|
|
68
|
+
order.sort((a, b) => lo[a] - lo[b] || hi[a] - hi[b] || a - b);
|
|
69
|
+
for (let i = 1; i < m; i++) {
|
|
70
|
+
const a = order[i - 1];
|
|
71
|
+
const b = order[i];
|
|
72
|
+
if (lo[a] === lo[b] && hi[a] === hi[b]) {
|
|
73
|
+
keep[b] = 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const out = new EdgeBuffer(m);
|
|
78
|
+
for (let e = 0; e < m; e++) {
|
|
79
|
+
if (keep[e] === 1) {
|
|
80
|
+
out.push(src[e], dst[e]);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return toGraph(n, out, directed);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check the options R-MAT and Kronecker graphs share.
|
|
87
|
+
* @param options - the options
|
|
88
|
+
* @returns the resolved seed
|
|
89
|
+
*/
|
|
90
|
+
function checkRecursive(options) {
|
|
91
|
+
checkPolicy("selfLoops", options.selfLoops);
|
|
92
|
+
checkPolicy("multiEdges", options.multiEdges);
|
|
93
|
+
return resolveSeed(options.seed);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* A stochastic Kronecker graph (J. Leskovec, D. Chakrabarti, J. Kleinberg, C. Faloutsos and
|
|
97
|
+
* Z. Ghahramani, "Kronecker graphs: an approach to modeling networks", JMLR 11, 985-1042, 2010)
|
|
98
|
+
* by their fast O(E power) sampling: n = k^power nodes and E = round(S^power) edges, S the sum of
|
|
99
|
+
* the initiator (S^power by repeated multiplication), unless `edges` is given. Edge e draws from
|
|
100
|
+
* stream (seed, "kronecker", e): `power` descents, most significant first, each drawing
|
|
101
|
+
* u = nextFloat() and picking the first initiator cell (row-major) whose cumulative entry over S
|
|
102
|
+
* exceeds u; cell (r, c) appends digit r to the source and c to the target in base k. Edges are
|
|
103
|
+
* listed in sampling order. A multigraph unless erased: see `selfLoops`, `multiEdges`, `permute`
|
|
104
|
+
* (stream (seed, "kronecker-permute", 0)) and `directed`.
|
|
105
|
+
* @param options - initiator, power, edges, the shared recursive options and seed
|
|
106
|
+
* @returns the graph
|
|
107
|
+
*/
|
|
108
|
+
export function kroneckerGraph(options) {
|
|
109
|
+
const { initiator, power } = options;
|
|
110
|
+
const k = initiator.length;
|
|
111
|
+
checkInt("initiator.length", k, 1);
|
|
112
|
+
let sum = 0;
|
|
113
|
+
for (let r = 0; r < k; r++) {
|
|
114
|
+
checkInt(`initiator[${r}].length`, initiator[r].length, k, k);
|
|
115
|
+
for (const value of initiator[r]) {
|
|
116
|
+
checkProbability(`initiator[${r}] entries`, value);
|
|
117
|
+
sum += value;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
checkInt("power", power, 1, 64);
|
|
121
|
+
let n = 1;
|
|
122
|
+
let mean = 1;
|
|
123
|
+
for (let i = 0; i < power; i++) {
|
|
124
|
+
n *= k;
|
|
125
|
+
mean *= sum;
|
|
126
|
+
}
|
|
127
|
+
checkInt("k^power (the node count)", n, 1);
|
|
128
|
+
const m = options.edges ?? Math.round(mean);
|
|
129
|
+
checkEdgeCount(m);
|
|
130
|
+
checkInt("edges", m, 0);
|
|
131
|
+
if (m > 0 && sum === 0) {
|
|
132
|
+
throw new RangeError("edges must be 0 when the initiator is all zeros");
|
|
133
|
+
}
|
|
134
|
+
const seed = checkRecursive(options);
|
|
135
|
+
// cumulative table over S; from the last positive cell on it is exactly 1, so u < 1 always hits
|
|
136
|
+
const cells = k * k;
|
|
137
|
+
const cumulative = new Float64Array(cells);
|
|
138
|
+
let partial = 0;
|
|
139
|
+
let lastPositive = 0;
|
|
140
|
+
for (let i = 0; i < cells; i++) {
|
|
141
|
+
const value = initiator[Math.floor(i / k)][i % k];
|
|
142
|
+
partial += value;
|
|
143
|
+
cumulative[i] = partial / sum;
|
|
144
|
+
if (value > 0) {
|
|
145
|
+
lastPositive = i;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
cumulative.fill(1, lastPositive);
|
|
149
|
+
const src = new Uint32Array(m);
|
|
150
|
+
const dst = new Uint32Array(m);
|
|
151
|
+
const stream = new RandomStream(seed, "kronecker", 0);
|
|
152
|
+
for (let e = 0; e < m; e++) {
|
|
153
|
+
stream.reset(e);
|
|
154
|
+
let u = 0;
|
|
155
|
+
let v = 0;
|
|
156
|
+
for (let level = 0; level < power; level++) {
|
|
157
|
+
const x = stream.nextFloat();
|
|
158
|
+
let cell = 0;
|
|
159
|
+
while (x >= cumulative[cell]) {
|
|
160
|
+
cell++;
|
|
161
|
+
}
|
|
162
|
+
u = u * k + Math.floor(cell / k);
|
|
163
|
+
v = v * k + (cell % k);
|
|
164
|
+
}
|
|
165
|
+
src[e] = u;
|
|
166
|
+
dst[e] = v;
|
|
167
|
+
}
|
|
168
|
+
return applyWeights(finishRecursive(n, src, dst, options, seed, "kronecker-permute"), options);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* R-MAT (D. Chakrabarti, Y. Zhan and C. Faloutsos, "R-MAT: a recursive model for graph mining",
|
|
172
|
+
* SIAM SDM 2004, 442-446, doi:10.1137/1.9781611972740.43) with Graph500's defaults: n = 2^scale
|
|
173
|
+
* nodes and m = edgeFactor n edges in O(m scale). Edge e draws from stream (seed, "rmat", e):
|
|
174
|
+
* `scale` levels, most significant bit first, each comparing one nextFloat() with a, a + b and
|
|
175
|
+
* a + b + c to pick the top-left, top-right, bottom-left or else bottom-right quadrant (bit 0/1 of
|
|
176
|
+
* the source for top/bottom, of the target for left/right). Edges are listed in sampling order.
|
|
177
|
+
* A multigraph with self-loops unless erased: see `selfLoops`, `multiEdges`, `permute` (stream
|
|
178
|
+
* (seed, "rmat-permute", 0)) and `directed`.
|
|
179
|
+
*
|
|
180
|
+
* webgpu-graph-algorithms carries three private R-MAT copies on xorshift / LCG streams
|
|
181
|
+
* (benchmarks/datasets.ts, test/helpers/graphs.ts, demo/main.ts) that should move to this. Two
|
|
182
|
+
* of them move a self-loop to (u, (v + 1) mod n), keeping exactly m edges; `selfLoops: "erase"`
|
|
183
|
+
* drops the loop instead (about m / n^0.4 fewer edges at the defaults), and `weights: { kind:
|
|
184
|
+
* "integer", min: 1, max: 10 }` reproduces their 1..10 weights. The third keeps self-loops, which
|
|
185
|
+
* is this function's default.
|
|
186
|
+
* @param options - scale, edgeFactor, a, b, c, d, the shared recursive options and seed
|
|
187
|
+
* @returns the graph
|
|
188
|
+
*/
|
|
189
|
+
export function rmatGraph(options) {
|
|
190
|
+
const { scale } = options;
|
|
191
|
+
const edgeFactor = options.edgeFactor ?? 16;
|
|
192
|
+
const a = options.a ?? 0.57;
|
|
193
|
+
const b = options.b ?? 0.19;
|
|
194
|
+
const c = options.c ?? 0.19;
|
|
195
|
+
const d = options.d ?? 0.05;
|
|
196
|
+
checkInt("scale", scale, 0, 31);
|
|
197
|
+
checkInt("edgeFactor", edgeFactor, 0);
|
|
198
|
+
checkProbability("a", a);
|
|
199
|
+
checkProbability("b", b);
|
|
200
|
+
checkProbability("c", c);
|
|
201
|
+
checkProbability("d", d);
|
|
202
|
+
if (Math.abs(a + b + c + d - 1) > 1e-9) {
|
|
203
|
+
throw new RangeError(`a + b + c + d must be 1, got ${a + b + c + d}`);
|
|
204
|
+
}
|
|
205
|
+
const n = 2 ** scale;
|
|
206
|
+
const m = edgeFactor * n;
|
|
207
|
+
checkEdgeCount(m);
|
|
208
|
+
const seed = checkRecursive(options);
|
|
209
|
+
const ab = a + b;
|
|
210
|
+
const abc = a + b + c;
|
|
211
|
+
const src = new Uint32Array(m);
|
|
212
|
+
const dst = new Uint32Array(m);
|
|
213
|
+
const stream = new RandomStream(seed, "rmat", 0);
|
|
214
|
+
for (let e = 0; e < m; e++) {
|
|
215
|
+
stream.reset(e);
|
|
216
|
+
let u = 0;
|
|
217
|
+
let v = 0;
|
|
218
|
+
for (let level = 0; level < scale; level++) {
|
|
219
|
+
const x = stream.nextFloat();
|
|
220
|
+
u *= 2;
|
|
221
|
+
v *= 2;
|
|
222
|
+
if (x < a) {
|
|
223
|
+
// top-left
|
|
224
|
+
}
|
|
225
|
+
else if (x < ab) {
|
|
226
|
+
v += 1;
|
|
227
|
+
}
|
|
228
|
+
else if (x < abc) {
|
|
229
|
+
u += 1;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
u += 1;
|
|
233
|
+
v += 1;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
src[e] = u;
|
|
237
|
+
dst[e] = v;
|
|
238
|
+
}
|
|
239
|
+
return applyWeights(finishRecursive(n, src, dst, options, seed, "rmat-permute"), options);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Price's citation network (D. J. de S. Price, "Networks of scientific papers", Science 149,
|
|
243
|
+
* 510-515, 1965, doi:10.1126/science.149.3683.510; "A general theory of bibliometric and other
|
|
244
|
+
* cumulative advantage processes", J. Am. Soc. Inf. Sci. 27, 292-306, 1976): a directed acyclic
|
|
245
|
+
* graph with arcs from the citing (newer) node to the cited (older) one, in-degrees following a
|
|
246
|
+
* power law with exponent 2 + a / m.
|
|
247
|
+
*
|
|
248
|
+
* Node t = 1 .. n - 1 cites min(m, t) distinct earlier nodes, each chosen with probability
|
|
249
|
+
* proportional to in-degree + a, the in-degrees as they were when t arrived. When t <= m it cites
|
|
250
|
+
* every earlier node, ascending, without drawing. Otherwise, with E arcs made before t, every draw
|
|
251
|
+
* takes x = nextFloat() * (E + a t) and then, if x < E, the target of a uniformly chosen earlier
|
|
252
|
+
* arc (nextBelow(E) into the list of cited targets), else a uniform node nextBelow(t); a node t
|
|
253
|
+
* already cites is redrawn. All draws come from the single stream (seed, "price", 0): the process
|
|
254
|
+
* is sequential. Arcs are listed by citing node, in draw order. O(n m) expected.
|
|
255
|
+
* @param options - n, citations, attractiveness and seed
|
|
256
|
+
* @returns the directed graph
|
|
257
|
+
*/
|
|
258
|
+
export function priceGraph(options) {
|
|
259
|
+
const { n, citations: m } = options;
|
|
260
|
+
const attractiveness = options.attractiveness ?? 1;
|
|
261
|
+
checkInt("n", n, 1);
|
|
262
|
+
checkInt("citations", m, 1);
|
|
263
|
+
if (!(attractiveness > 0 && Number.isFinite(attractiveness))) {
|
|
264
|
+
throw new RangeError(`attractiveness must be a positive number, got ${String(attractiveness)}`);
|
|
265
|
+
}
|
|
266
|
+
const seed = resolveSeed(options.seed);
|
|
267
|
+
const full = Math.min(m, n);
|
|
268
|
+
const edgeCount = (full * (full - 1)) / 2 + (n - full) * m;
|
|
269
|
+
checkEdgeCount(edgeCount);
|
|
270
|
+
const stream = new RandomStream(seed, "price", 0);
|
|
271
|
+
const out = new EdgeBuffer(edgeCount);
|
|
272
|
+
const citedBy = new Int32Array(n).fill(-1);
|
|
273
|
+
for (let t = 1; t < n; t++) {
|
|
274
|
+
const arcs = out.length;
|
|
275
|
+
if (t <= m) {
|
|
276
|
+
for (let v = 0; v < t; v++) {
|
|
277
|
+
out.push(t, v);
|
|
278
|
+
}
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
const total = arcs + attractiveness * t;
|
|
282
|
+
for (let found = 0; found < m;) {
|
|
283
|
+
const x = stream.nextFloat() * total;
|
|
284
|
+
const v = x < arcs ? out.dst[stream.nextBelow(arcs)] : stream.nextBelow(t);
|
|
285
|
+
if (citedBy[v] !== t) {
|
|
286
|
+
citedBy[v] = t;
|
|
287
|
+
out.push(t, v);
|
|
288
|
+
found++;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return applyWeights(toGraph(n, out, true), options);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Rows [start, end) of the random-order DAG: row u draws from stream (seed, "order-dag", u) and
|
|
296
|
+
* holds the arcs u -> v, v = u + 1 .. n - 1 chosen, ascending. Any split of [0, n) into
|
|
297
|
+
* consecutive ranges concatenates to the whole graph's arc list.
|
|
298
|
+
* @param options - the generator's options (already checked)
|
|
299
|
+
* @param start - the first row
|
|
300
|
+
* @param end - one past the last row
|
|
301
|
+
* @param out - receives the arcs
|
|
302
|
+
*/
|
|
303
|
+
export function orderDagRows(options, start, end, out) {
|
|
304
|
+
const { n, p } = options;
|
|
305
|
+
const logQ = detLog(1 - p);
|
|
306
|
+
const stream = new RandomStream(resolveSeed(options.seed), "order-dag", 0);
|
|
307
|
+
for (let u = start; u < end; u++) {
|
|
308
|
+
stream.reset(u);
|
|
309
|
+
bernoulliSegment(stream, p, logQ, u, u + 1, n, out);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* The random-order DAG: a directed G(n, p) restricted to the arcs i -> j with i < j, so node
|
|
314
|
+
* index order is a topological order (B. Karrer and M. E. J. Newman, "Random acyclic networks",
|
|
315
|
+
* Phys. Rev. Lett. 102, 128701, 2009, doi:10.1103/PhysRevLett.102.128701). O(n + m) by geometric
|
|
316
|
+
* skipping; arcs in row-major order, see {@link orderDagRows}.
|
|
317
|
+
* @param options - n, p and seed
|
|
318
|
+
* @returns the directed acyclic graph
|
|
319
|
+
*/
|
|
320
|
+
export function randomOrderDagGraph(options) {
|
|
321
|
+
const { n, p } = options;
|
|
322
|
+
checkInt("n", n, 0);
|
|
323
|
+
checkProbability("p", p);
|
|
324
|
+
resolveSeed(options.seed);
|
|
325
|
+
const out = binomialBuffer((n * (n - 1)) / 2, p);
|
|
326
|
+
orderDagRows(options, 0, n, out);
|
|
327
|
+
return applyWeights(toGraph(n, out, true), options);
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=directed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directed.js","sourceRoot":"","sources":["../../../src/generators/directed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Erdos-Renyi random graphs: Gilbert's G(n, p) (every pair independently with probability p) and
|
|
3
|
+
* Erdos-Renyi's G(n, m) (m pairs uniformly without replacement).
|
|
4
|
+
*/
|
|
5
|
+
import { type SampleGraph } from "../types.js";
|
|
6
|
+
import { EdgeBuffer } from "./util.js";
|
|
7
|
+
import { type WeightOptions } from "./weights.js";
|
|
8
|
+
/** Options of {@link erdosRenyiGraph}. */
|
|
9
|
+
export interface ErdosRenyiOptions extends WeightOptions {
|
|
10
|
+
/** The node count, >= 0. */
|
|
11
|
+
n: number;
|
|
12
|
+
/** The probability of each pair, in [0, 1]. */
|
|
13
|
+
p: number;
|
|
14
|
+
/**
|
|
15
|
+
* Directed: every ordered pair (u, v), u != v, is an arc independently with probability p.
|
|
16
|
+
* Default false (unordered pairs).
|
|
17
|
+
*/
|
|
18
|
+
directed?: boolean | undefined;
|
|
19
|
+
/** The seed, an integer in [0, 2^53); default 0. */
|
|
20
|
+
seed?: number | undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Rows [start, end) of G(n, p): row u draws from stream (seed, "gnp", u) and holds the pairs
|
|
24
|
+
* (u, v), v = u + 1 .. n - 1, in ascending v. Concatenating any split of [0, n) into consecutive
|
|
25
|
+
* ranges gives exactly the whole graph's edge list.
|
|
26
|
+
* @param options - the generator's options (already checked)
|
|
27
|
+
* @param start - the first row
|
|
28
|
+
* @param end - one past the last row
|
|
29
|
+
* @param out - receives the edges
|
|
30
|
+
*/
|
|
31
|
+
export declare function erdosRenyiRows(options: ErdosRenyiOptions, start: number, end: number, out: EdgeBuffer): void;
|
|
32
|
+
/**
|
|
33
|
+
* Gilbert's G(n, p) in O(n + m) by geometric skipping (Batagelj and Brandes 2005). Edges are the
|
|
34
|
+
* pairs (u, v), u < v, in row-major order; row u draws from its own stream, so the graph does not
|
|
35
|
+
* depend on how the rows are split between workers. With `directed: true`, the arcs (u, v) of
|
|
36
|
+
* every ordered pair u != v, by u then v ascending, each row from stream (seed, "gnp-directed", u).
|
|
37
|
+
* @param options - n, p and seed
|
|
38
|
+
* @returns the undirected graph
|
|
39
|
+
*/
|
|
40
|
+
export declare function erdosRenyiGraph(options: ErdosRenyiOptions): SampleGraph;
|
|
41
|
+
/** Options of {@link erdosRenyiGnmGraph}. */
|
|
42
|
+
export interface ErdosRenyiGnmOptions extends WeightOptions {
|
|
43
|
+
/** The node count, >= 0. */
|
|
44
|
+
n: number;
|
|
45
|
+
/** The edge count, in [0, n (n - 1) / 2]. */
|
|
46
|
+
m: number;
|
|
47
|
+
/** The seed, an integer in [0, 2^53); default 0. */
|
|
48
|
+
seed?: number | undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Erdos-Renyi's G(n, m): m distinct pairs chosen uniformly, by Floyd's sampling over the pair
|
|
52
|
+
* indices 0 .. n (n - 1) / 2 - 1 (exactly m draws from stream (seed, "gnm", 0), no rejection
|
|
53
|
+
* loop), in O(m log m). Edges are the pairs (u, v), u < v, in row-major order.
|
|
54
|
+
* @param options - n, m and seed
|
|
55
|
+
* @returns the undirected graph
|
|
56
|
+
*/
|
|
57
|
+
export declare function erdosRenyiGnmGraph(options: ErdosRenyiGnmOptions): SampleGraph;
|
|
58
|
+
//# sourceMappingURL=erdos-renyi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erdos-renyi.d.ts","sourceRoot":"","sources":["../../../src/generators/erdos-renyi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAgE,UAAU,EAAW,MAAM,WAAW,CAAC;AAC9G,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,0CAA0C;AAC1C,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACpD,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,+CAA+C;IAC/C,CAAC,EAAE,MAAM,CAAC;IACV;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAY5G;AA6BD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAUvE;AAED,6CAA6C;AAC7C,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACvD,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,6CAA6C;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AA2CD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CAiC7E"}
|