A package for finding the best path through a network graph
Project description
Introduction
Fastpath is a fast and lightweight tool for finding the shortest path in a weighted
graph. As input it only needs the starting node, the ending node, and the weights
of each node to node edge. For versatility it uses the Bellman-Ford algorithm, which
allows for negative weights. Future version will incorporate the Dijkstra algorithm
to speed up runtimes on graphs that do not contain negative edges.
To install fastpath
,
git clone git@github.com:deprekate/fastpath.git
cd fastpath; make
The only library dependency for fastpath is uthash (which is included). The fastpathz has the extra dependency of mini-gmp (which is included).
Fastpath Example
Run on included sample data:
fastpath --source a --target e < edges.txt
Output is the path of nodes, and should look like
a
c
d
e
The structure of the graph looks like:
a ─────▶ b ◀───── f
│ │
│ │
▼ ▼
c ─────▶ d ─────▶ e
- Strings can be used for the nodes, and the weights can be positive or negative long double numbers. The weights can even be in the form of scientific shorthand (1.6E+9).
Python Example
FastPath is now available as a pypi.org package, and is installable by simply using pip
pip install fastpath
To use in your python code, first import the module, write edges to the graph, and then provide a beginning node (source) and an end node (target)
import fastpath as fp
f = open("edges.txt", "r")
for line in f:
ret = fp.add_edge(line)
for edge in fp.get_path(source="a", target="e"):
print(edge)
Output is the path of nodes, and should look like
$ python example.py
a
c
d
e
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for fastpath-1.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e35c5b5c52ccf0abb5a0ca00a5806ede91c4be00ec0b75cdf2e6d054eda00607 |
|
MD5 | c23c111825eabf6dfea51e31aa7829f9 |
|
BLAKE2b-256 | e66e8b2c2d92bf43c7c0968639f46b65a68621d8d9a280937358a11466fb87a8 |