Download presentation
Presentation is loading. Please wait.
1
1 Topological Sort Introduction. Definition of Topological Sort. Topological Sort is Not Unique. Topological Sort Algorithms. An Example. Implementation of Source Removal Algorithm. Review Questions.
2
2 Introduction There are many problems involving a set of tasks in which some of the tasks must be done before others. For example, consider the problem of taking a course only after taking its prerequisites. Is there any systematic way of linearly arranging the courses in the order that they should be taken? Yes! - Topological sort.
3
3 What is a DAG? A directed acyclic graph (DAG) is a directed graph without cycles. DAGs arrise in modeling many problems that involve prerequisite constraints (construction projects, course prerequisites, document version control, compilers, etc.) Some properties of DAGs: –Every DAG must have at least one vertex with in-degree zero and at least one vertex with out-degree zero A vertex with in-degree zero is called a source vertex, a vertex with out- degree zero is called a sink vertex. –G is a DAG iff each vertex in G is in its own strongly connected component –Every edge (v, w) in a DAG G has finishingTime[w] < finishingTime[v] in a DFS traversal of G Example:
4
4 Definition of Topological Sort Given a directed graph G = (V, E) a topological sort of G is an ordering of V such that for any edge (u, v), u comes before v in the ordering. Example1: Example2:
5
5 Definition of Topological Sort Example3: The graph in (a) can be topologically sorted as in (b) (a)(b)
6
6 Topological Sort is not unique Topological sort is not unique. The following are all topological sort of the graph below: s1 = {a, b, c, d, e, f, g, h, i} s2 = {a, c, b, f, e, d, h, g, i} s3 = {a, b, d, c, e, g, f, h, i} s4 = {a, c, f, b, e, h, d, g, i} etc.
7
7 Topological Sort Algorithms: DFS based algorithm Topological-Sort(G) { 1. Call dfsAllVertices on G to compute f[v] for each vertex v 2. If G contains a back edge (v, w) (i.e., if f[w] > f[v]), report error ; 3. else, as each vertex is finished prepend it to a list; // or push in stack 4. Return the list; // list is a valid topological sort } Running time is O(V+E), which is the running time for DFS. Topological order: A C D B E H F G
8
8 Topological Sort Algorithms: Source Removal Algorithm The Source Removal Topological sort algorithm is: –Pick a source u [vertex with in-degree zero], output it. –Remove u and all edges out of u. –Repeat until graph is empty. int topologicalOrderTraversal( ){ int numVisitedVertices = 0; while(there are more vertices to be visited){ if(there is no vertex with in-degree 0) break; else{ select a vertex v that has in-degree 0; visit v; numVisitedVertices++; delete v and all its emanating edges; } return numVisitedVertices; }
9
9 Topological Sort: Source Removal Example The number beside each vertex is the in-degree of the vertex at the start of the algorithm. A F B G C H D I E J 1 2 3 02 10 2 20 D G A B F H J E I C
10
10 Implementation of Topological Sort The algorithm is implemented as a traversal method that visits the vertices in a topological sort order. An array of length |V| is used to record the in-degrees of the vertices. Hence no need to remove vertices or edges. A priority queue is used to keep track of vertices with in-degree zero that are not yet visited. public int topologicalOrderTraversal(Visitor visitor){ int numVerticesVisited = 0; int[] inDegree = new int[numberOfVertices]; for(int i = 0; i < numberOfVertices; i++) inDegree[i] = 0; Iterator p = getEdges(); while (p.hasNext()) { Edge edge = (Edge) p.next(); Vertex to = edge.getToVertex(); inDegree[getIndex(to)]++; }
11
11 Implementation of Topological Sort BinaryHeap queue = new BinaryHeap(numberOfVertices); p = getVertices(); while(p.hasNext()){ Vertex v = (Vertex)p.next(); if(inDegree[getIndex(v)] == 0) queue.enqueue(v); } while(!queue.isEmpty() && !visitor.isDone()){ Vertex v = (Vertex)queue.dequeueMin(); visitor.visit(v); numVerticesVisited++; p = v.getSuccessors(); while (p.hasNext()){ Vertex to = (Vertex) p.next(); if(--inDegree[getIndex(to)] == 0) queue.enqueue(to); } return numVerticesVisited; }
12
12 Review Questions 1.List the order in which the nodes of the directed graph GB are visited by topological order traversal that starts from vertex a. Use both DFS-based and Source Removal algorithm 2. What kind of DAG has a unique topological sort? 3. Generate a directed graph using the required courses for your major. Now apply topological sort on the directed graph you obtained.
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.