You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"description": "A deterministic single-source shortest paths solver with an optional transform, benchmarking tools, and documentation.",
3
+
"description": "Reference implementation of the deterministic BMSSP algorithm from \"Breaking the Sorting Barrier for Directed Single-Source Shortest Paths\" (Duan, Mao, Mao, Shu, Yin), with tests and benchmarks for directed graphs with non-negative weights.",
4
4
"version": "v0.1.2",
5
5
"upload_type": "software",
6
6
"access_right": "open",
@@ -9,17 +9,31 @@
9
9
{
10
10
"name": "Ribeiro, Diogo",
11
11
"orcid": "0009-0001-2022-7072",
12
-
"affiliation": "ESMAD - Instituto Politécnico do Porto"
12
+
"affiliation": "ESMAD - Instituto Politécnico do Porto; MySense"
`ssspx` is a clean, typed, and tested implementation of a deterministic **Single‑Source Shortest Paths** solver for directed graphs with non‑negative weights. It follows a BMSSP‑style divide‑and‑conquer design (levels, `FindPivots`, bounded base case) and includes a switchable frontier, an optional constant‑outdegree transform, a CLI, exports, and a small benchmark harness.
`ssspx` is a clean, typed, and tested implementation of a deterministic **Single-Source Shortest Paths** solver for directed graphs with non-negative weights.
11
+
It follows a BMSSP-style divide-and-conquer design (levels, `FindPivots`, bounded base case) and includes a switchable frontier, an optional constant-outdegree transform, a CLI, exports, and a small benchmark harness.
9
12
10
-
> For the advertised asymptotics, use the **block frontier** with the **constant‑outdegree transform** enabled. Distances are exact either way.
13
+
> Research context: this is an implementation of the algorithmic approach from
14
+
> **“Breaking the Sorting Barrier for Directed Single-Source Shortest Paths” (arXiv:2504.17033)** by Duan, Mao, Mao, Shu, and Yin.
15
+
> Distances are exact. For the advertised asymptotics, use the **block frontier** with the **constant-outdegree transform** enabled.
11
16
12
17
---
13
18
14
19
## Features
15
20
16
-
* Two frontiers: `block` (paper‑style) and `heap` (baseline)
`NumpyGraph` is drop‑in because the solver only needs `G.n` and iteration over `G.adj[u] -> (v, w)`.
155
+
`NumpyGraph` is drop-in because the solver only needs `G.n` and iteration over `G.adj[u] -> (v, w)`.
152
156
153
157
---
154
158
@@ -158,7 +162,7 @@ res = SSSPSolver(G_np, 0).solve()
158
162
poetry run python -m ssspx.bench
159
163
```
160
164
161
-
This uses a small default graph set; provide ``--sizes`` to benchmark custom
165
+
This uses a small default graph set; provide `--sizes` to benchmark custom
162
166
graphs. Treat results as sanity checks. For serious evaluations, pin seeds and
163
167
sizes and run multiple trials.
164
168
@@ -200,39 +204,39 @@ track the upstream resolution.
200
204
201
205
---
202
206
203
-
## Versioning, releases & archiving (optional)
204
-
205
-
Configured for **semantic‑release** with Conventional Commits (Angular style). On pushes to `main`, it bumps the version, updates `CHANGELOG.md`, and creates a GitHub Release.
207
+
## Versioning, releases & archiving
206
208
207
-
To mint a DOI, enable the repository at [Zenodo](https://zenodo.org/account/settings/github/). After the first tagged release, Zenodo will archive it and assign a DOI. Replace the badge at the top of this README with the issued DOI.
209
+
Configured for **semantic-release** with Conventional Commits (Angular style). On pushes to `main`, it bumps the version, updates `CHANGELOG.md`, and creates a GitHub Release.
208
210
209
-
Guidance on publishing to PyPI and preparing a conda-forge feedstock lives in the [Publishing how-to](docs/howto/publish.md).
211
+
Releases are archived on **Zenodo**. The latest release DOI is **[10.5281/zenodo.17381998](https://doi.org/10.5281/zenodo.17381998)** (badge at the top).
210
212
211
213
Common prefixes: `feat:`, `fix:`, `perf:`, `refactor:`, `docs:`, `test:`, `chore:`.
212
214
213
215
---
214
216
215
217
## Cite this work
216
218
217
-
If you use `ssspx` in academic work, please cite it using the metadata in
218
-
[CITATION.cff](CITATION.cff) or the following BibTeX entry:
219
+
If you use `ssspx` in academic work, please cite:
220
+
221
+
**The algorithmic paper**
222
+
223
+
> Duan, R., Mao, J., Mao, X., Shu, X., & Yin, L. (2025). *Breaking the Sorting Barrier for Directed Single-Source Shortest Paths.* arXiv:2504.17033.
224
+
225
+
**This software**
219
226
220
227
```bibtex
221
228
@software{ribeiro_ssspx_2025,
222
229
author = {Ribeiro, Diogo},
223
-
title = {ssspx},
224
-
year = {2024},
225
-
doi = {10.5281/zenodo.0000000},
226
-
url = {https://github.com/DiogoRibeiro7/ssspx},
230
+
title = {ssspx — Production-grade Single-Source Shortest Paths (Python)},
231
+
year = {2025},
232
+
doi = {10.5281/zenodo.17381998},
233
+
url = {https://github.com/DiogoRibeiro7/bmssp},
227
234
publisher = {Zenodo}
228
235
}
229
236
```
230
237
231
-
The DOI above is a placeholder. After your first release, run `python tools/update_citation.py <doi>` to update this citation and CITATION.cff.
0 commit comments