This package uses pip for installation. You can find out more information about pip here.
Installation can be done directly through pip, using pip install negative-cycles.
If this doesn't work, or you prefer having the source code on your machine, you can also execute the following:
git clone https://github.com/mnpatil17/negative_cycles.gitcd negative_cyclespip install -e .
This package allows you to perform the following tasks in Python:
- Run the multiplicative Bellman-Ford algorithm
- Run the additive Bellman-Ford algorithm
- Find negative cycles based on the multiplicative Bellman-Ford algorithm
You can run the multiplicative Bellman-Ford Algorithm as follows:
from negative_cycles import multiplicative_bellman_ford
graph = <YOUR GRAPH HERE> # Note: for nodes without a connecting edge, the weights must be None
distance_vector, predecessor_list = multiplicative_bellman_ford(graph)
You can run the additive Bellman-Ford Algorithm as follows:
from negative_cycles import additive_bellman_ford
graph = <YOUR GRAPH HERE> # Note: for nodes without a connecting edge, the weights must be None
distance_vector, predecessor_list = additive_bellman_ford(graph)
You can run the multiplicative negative cycles as follows:
from negative_cycles import find_negative_cycle
graph = <YOUR GRAPH HERE> # Note: for nodes without a connecting edge, the weights must be None
graph_labels = <YOUR NODE NAMES> # The names of the nodes of the graph, in order
cycle, gain = find_negative_cycle(graph, graph_labels)
Note that if a negative cycle is NOT found, both cycle and gain will be None.
If a negative cycle is found, the cycle returned will be of the form
['Node A', 'Node C', 'Node D', 'Node A'], where the names in the list are based on your
graph_labels, and the first and last elements of the list are repeated to emphasize that the list
represents a cycle.
Additionally, if a negative cycle is found, the gain variable will be a number greater than
(or equal to) 1.0. This is to say that if you start with 1 unit and follow thecycle, then you
will get gain units at the end of the cycle.
If you choose, you can clone this repository locally and run the tests yourself.
To run tests, simply run nosetests from the negative_cycles/ directory.