Note
This is the documentation for the current state of the development branch of rustworkx. The documentation or APIs here can change prior to being released.
rustworkx.topological_sort#
- topological_sort(graph, /)#
Return the topological sort of node indices from the provided directed graph.
Computes a topological ordering of the nodes in the given directed graph, ensuring that for every directed edge from node \(u\) to node \(v\), node \(u\) appears before node \(v\) in the resulting sequence. This is particularly useful in scenarios such as task scheduling and dependency resolution, where certain tasks must be completed before others.
>>> G = rx.PyDiGraph() >>> G.add_nodes_from(["A", "B", "C", "D", "E", "F", "G"]) >>> G.add_edges_from_no_data([(0, 1),(1, 2), (2, 3), (3, 4), (5, 2), (6, 3)]) >>> rx.topological_sort(G) NodeIndices[6, 5, 0, 1, 2, 3, 4]
For more advanced control over the nodes iteration, see
TopologicalSorter.For custom sorting algorithm, see
lexicographical_topological_sort().- Parameters:
graph (PyDiGraph) – The directed graph to get the topological sort on.
- Returns:
A list of node indices topologically sorted.
- Return type:
- Raises:
DAGHasCycle – if a cycle is encountered while sorting the graph.