Weighted Topological Sorting
============================================
This an implementation of Topological sort using depth first search (DFS), with provision of weights/priority for nodes to be processed. There are multiple paths for a graph to be topologically sorted, this implementation allows the order to be tweaked using priority/weights to the nodes. The nodes with lowest weight is processed first.
Installation
------------
``weighted-topsort`` is available on the Python package index and is installable via pip:
.. code:: bash
pip3 install weighted-topsort
### Usage:
Example 1:
>>> from weighted_topsort import TopSort
>>> graph = {"A": "C", "B": "", "C": "D",
"D": "", "E": "C"}
>>> weight={'A': 10, 'B': 5, 'C': 17, 'D': 10, 'E': 10}
>>> result = TopSort(graph, weight)
>>> print(list(result))
['B', 'D', 'C', 'A', 'E']
Example 2:
>>> gr={"N2": ["N11"], "N9": ["N11", "N8", "N10"],
"N10": ["N11", "N3"], "N11": ["N7", "N5"],
"N8": ["N7", "N3"]}
>>> wt = {"N7": 3, "N5": 2, "N11": 1, "N2": 1, "N3": 1, "N8": 1, "N10": 1, "N9": 1}
>>> result = TopSort(gr, wt)
>>> print(list(result))
['N5', 'N7', 'N11', 'N3', 'N10', 'N2', 'N8', 'N9']
Input is a directed graph, must be a json with dependency or list of dependencies for nodes.
The weights for the nodes is also a JSON with node name as mentioned in the Graph and corresponding weight.
The result is an iteratable sroted list.
.. toctree::
:maxdepth: 1
weighted_topsort
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`