Topological Ordering
Pseudocode for finding a Topological Ordering of a DAG
TOPO(G){
Q // queue of nodes with no incoming edge
L // topological ordering
//Initialization
for each(v in V){
I[v] = number of incoming edges
if(I[v] == 0){
add v to Q
}
}
while(Q is not empty){
v = Q.pop
add v to L
for each(u in AdjList(v)){
I[u]--
if(I[u] == 0){
add u to Q
}
}
}
return L
}