3.4 KiB
id | title | author | prerequisites | description | ||
---|---|---|---|---|---|---|
toposort | Topological Sort | Benjamin Qi, Michael Cao |
|
? |
To review, a directed graph consists of edges that can only be traversed in one direction. Additionally, a acyclic graph defines a graph which does not contain cycles, meaning you are unable to traverse across one or more edges and return to the node you started on. Putting these definitions together, a directed acyclic graph, sometimes abbreviated as DAG, is a graph which has edges which can only be traversed in one direction and does not contain cycles.
Topological Sort
A topological sort of a directed acyclic graph is a linear ordering of its vertices such that for every directed edge u\to v
from vertex u
to vertex v
, u
comes before v
in the ordering.
Tutorial
- CPH 16.1, 16.2
- DFS
- cp-algorithms
- DFS
- CSAcademy
- both BFS, DFS
Consider Khan's Algorithm for topological sorting.
Problems
- Milking Order
- Binary search and check if a valid topological sort exists.
- CSES Course Schedule II
- Tricky!
Dynamic Programming
One useful property of directed acyclic graphs is, as the name suggests, that there exists no cycles. If we consider each node in the graph as a state, we can perform dynamic programming on the graph if we process the states in an order that guarantees for every edge, u\to v
that u
is processed before v
. Fortunately, this is the exact definition of a topological sort!
Let's consider the classical problem CSES Longest Flight Route, where we must find the longest path in a DAG.
Let `dp[curr] = longest path ending at the node curr`. Then, if we process states in topological order, the transition is relatively straightforward: `dp[curr] = max of all dp[prev] where prev represents a node with an edge going into the current node` (word better?). To reiterate, since the states a processed in topological order, we can guarantee that all possible `dp[prev]` are computed before we compute `dp[curr]`.However, not all problems clearly give you directed acyclic graphs (ex. Plat - Cave Paintings). An important step in many problems is to reduce the statement into a directed acyclic graph. See the editorial of the linked problem for more information.
(Ben - this last paragraph doesn't seem very helpful.)
Problems
- CSES Game Routes
- counting paths on DAG
- Quantum
- enumerating paths on DAG
- USACO Gold - Timeline
- not explicitly given, but graph is a DAG
Problems
- Other