Open In App

Topological Sorting using graphlib Python module

Last Updated : 17 Dec, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

Topological Sorting is a linear ordering for vertices of Directed Acyclic Graph. For every directed edge u v, vertex u comes before v in the topological sorting.

Python’s module graphlib introduced in Python 3.9.0, gives the topological sorting of a graph, where the graph is represented in a dictionary. Assume the graph with no parallel edges, the graph can be represented by a dictionary with vertices as keys and values are the nodes to which they are connected.

To install this module run this command into your terminal.

pip install graphlib

We will use class graphlib. TopologicalSorter(graph= None), and the following functions with the TopologicalSorter instance:

add( node, *predecessors ):

Adds a new node and it’s dependencies to a graph. For example, ts.add(3, 2, 1) adds key value 3 and it’s predecessors 2, 1 to the graph.  

static_order():

Returns an iterable of nodes in a topological order.

Check the programs below for topological sorting with graphlib.TopologicalSorter()

Example 1: Topological sorting using TopologicalSorter with graph not initialized.

Python3




# Python 3.9.0 program for
# topological sorting using
# graphlib module
from graphlib import TopologicalSorter
  
# creating an instance of TopologicalSorter
# initial graph is optional
ts = TopologicalSorter()
  
# adding vertex and it's nodes
ts.add(3, 2, 1)
# adding more node and predecessor
ts.add(1, 0)
  
# printing the topological order
# returned by static_order()
print([*ts.static_order()])


Output:

[2, 0, 1, 3]

Example 2: Topological sorting using TopologicalSorter using graph initialized.

Python3




# Python program for topological sorting
# through graphlib module
  
from graphlib import TopologicalSorter
  
# making graph
graph = {2: {3}, 3: {1}, 4: {0, 1}, 5: {0, 2}}
  
# creating an instance of TopolocialSorter
# with initial graph(initial graph is optional)
ts = TopologicalSorter(graph)
  
# printing the topological order
# returned by static_order()
print([*ts.static_order()])


Output:

[1, 0, 3, 4, 2, 5]


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads