***** Topologicalsorter class *****
class graphlib.
TopologicalSorter
(graph=None)
-provides functionality to topologically sort a group of Hashable nodes.
Topological sorting when Graph is initialised:
If the optional graph argument is provided it must be a dictionary representing a directed cyclic graph where the keys are nodes and the values are iterables of all predecessors of that node in the graph.
Example
import graphlib
graph = {1 : {6}, 2 : { 3 }, 3 : { 1 }, 4 : { 0 , 1 }, 5 : { 0 , 2 }}
ts = graphlib.TopologicalSorter(graph)
print ([ * ts.static_order()])
output:
[6, 0, 1, 3, 4, 2, 5]
|
TOPOLOGICAL SORTING WHEN GRAPH IS unINITIALISED:
To add a new node to the graph use add
(node, *predecessors)
from
graphlib
import
TopologicalSorter
ts
=
TopologicalSorter()
ts.add(
3
,
2
,
1
)
ts.add(
1
,
0
)
print
([
*
ts.static_order()])
output
[2, 0, 1, 3]
The particular order that is returned may depend on the specific order in which the items were inserted in the graph.
For example:
from
graphlib
import
TopologicalSorter
ts
=
TopologicalSorter()
ts.add(1,0)
ts.add(
3
,
2
,
1
)
print
([
*
ts.static_order()])
output:
[0, 2, 1, 3]
Here, 0 and 2 are at the same level
Comments