3.6: Directed Acyclic Graphs and Topological Ordering

If an undirected graph has no cycles, then it has an extremely simple structure: each of its connected components is a tree. But it is possible for a directed graph to have no directed cycles and still have a very rich structure. If a directed graph has no cycles, it is a directed acyclic graph, or a DAG for short.

Many kinds of dependency networks are DAGs. DAGs can be used to encode precedence relations or dependencies in a natural way.

In a topological ordering, nodes are ordered as v(1), v(2),….v(n) so that for every edge (v(i), v(j)), we have i< j. All edges point “forward.” Also, if G has a topological ordering, then G is a DAG. Its contrapositive is also true; if g is a DAG, then G has a topological ordering.

Designing and Analyzing an Algorithm

In every DAG G, there is a node v with no incoming edges.

To compute a topological ordering of G:
Find a node v with no incoming edges and order it first
Delete v from G
Recursively compute a topological ordering of G-{v}
 and append this order after v.

This algorithm runs at O(n^2).

This section describes DAGs and topological orderings. Some nice diagrams on p.103. 9/10.

courses/cs211/winter2014/journals/stephen/home/chapter-3.6.txt · Last modified: 2014/02/11 05:25 by rowleys
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0