7.3. Topological Sorting
This section discusses two algorithms for topological sorting.
The task of topological sorting is to sort vertices in a linear order such that for each vertex, all target vertices associated with its incoming edges must appear prior to it.
By Incoming Scores
The followings demonstrate how to perform a topological sort by incoming scores, where the incoming score of a vertex is define as the sum of all source vertices:
By Depth-First
The followings demonstrate how to perform a topological sort by depth-first traversing:
Implementation
Let us define the topological_sort() method under the Graph class that performs topological sort by either incoming scores or depth-first search:
L2: starts with vertices with no incoming edges.L3: retrieves outgoing edges of each source vertex.L4: consists of the list of vertices in topological order.L6: iterates until no more vertex to visit:L8-9: adds a source vertex toorder.L12: iterates through all the outgoing edges of the source vertex:L17: removes the outgoing edge from the graph.L20-21: adds the target vertex if it has no incoming edge left tolocal.
L25-27: adds all vertices inlocaltoglobal.
What is the worst-case complexity of the
topological_sort()method?
Last updated
Was this helpful?