|
1 | | -# Tsinghua Single Source Shortest Paths algorithm |
| 1 | +# BMSSP: Bounded Multi-Source Shortest Paths |
| 2 | +[](https://codecov.io/gh/sirivasv/bmssp-js) |
| 3 | +[](https://www.npmjs.com/package/bmssp) |
| 4 | +[](https://hub.docker.com/r/sirivasv/bmssp-js) |
| 5 | +[](https://github.com/sirivasv/bmssp-js/stargazers) |
2 | 6 |
|
3 | | -This is a repository containing a simple community driven implementation in Javascript based on the paper written by Duan Ran et. al. from Tsinghua University. |
4 | | -"Breaking the Sorting Barrier for Directed Single-Source Shortest Paths". |
| 7 | +This repository provides a community-driven JavaScript implementation of the Tsinghua Single Source Shortest Paths algorithm, based on the paper ["Breaking the Sorting Barrier for Directed Single-Source Shortest Paths"](https://dl.acm.org/doi/10.1145/3717823.3718179) by Duan Ran et al. from Tsinghua University. |
5 | 8 |
|
6 | | -https://dl.acm.org/doi/10.1145/3717823.3718179 |
| 9 | +BMSSP stands for Bounded Multi-Source Shortest Paths. |
7 | 10 |
|
8 | | -BMSSP - Bounded multi-source shortest paths. |
| 11 | +## Project Overview |
9 | 12 |
|
10 | | -## Abstract |
| 13 | +- **Language:** JavaScript (ES Modules) |
| 14 | +- **Goal:** Provide an easy-to-use, modern implementation of the algorithm, published to [npmjs.com](https://www.npmjs.com/). |
| 15 | +- **Reference:** For more on ES modules, see the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules). |
11 | 16 |
|
12 | | -We give a deterministic O(mlog2/3n)-time algorithm for single-source shortest paths (SSSP) on directed graphs with real non-negative edge weights in the comparison-addition model. This is the first result to break the O(m+nlogn) time bound of Dijkstra’s algorithm on sparse graphs, showing that Dijkstra’s algorithm is not optimal for SSSP. |
13 | 17 |
|
14 | | -## Development Details |
| 18 | +## Installation |
15 | 19 |
|
16 | | -This project is mainly focused in Javascript in order to be published to npmjs.com as a JS module (esmodule). |
| 20 | +To install this package, you can use npm: |
| 21 | + |
| 22 | +```bash |
| 23 | +npm install bmssp |
| 24 | +``` |
| 25 | + |
| 26 | +## Usage |
| 27 | + |
| 28 | +To use this package, you can import it in your JavaScript code as follows: |
| 29 | + |
| 30 | +```javascript |
| 31 | +import { printMessage, processMessage } from "bmssp"; |
| 32 | + |
| 33 | +printMessage("Hello, World!"); |
| 34 | +processMessage("Hello, World!"); |
| 35 | +``` |
| 36 | + |
| 37 | +The file must use ECMAScript modules (ESM) syntax and have the `.mjs` file extension. Go to the `examples` directory for more usage examples. |
| 38 | + |
| 39 | +### Using the docker image |
| 40 | + |
| 41 | +You can also use the published docker image and run your tests (assuming a `mytest.mjs` in this example) in a pre-configured environment: |
| 42 | + |
| 43 | +```bash |
| 44 | +docker run -it -v ./mytest.mjs:/bmssp-js/mytest.mjs sirivasv/bmssp-js:latest node /bmssp-js/mytest.mjs |
| 45 | +``` |
| 46 | + |
| 47 | +Other versions of the docker image can be found on [Docker Hub](https://hub.docker.com/r/sirivasv/bmssp-js/tags). |
17 | 48 |
|
18 | 49 | ### Other Implementations in GitHub |
19 | 50 |
|
|
0 commit comments