A set of nodes joined by directed edges such that no chain of edges ever
returns to its origin. Direction makes each relation asymmetric; a global
no-return constraint forbids cycles — together imposing a one-way order on
the whole graph.
Imagine arrows connecting dots, where every arrow points one way only — like 'you must put on socks BEFORE shoes.' The special rule is that if you keep following arrows forward, you can never end up back where you started. So everything lines up in an order with a real beginning, and nothing ever loops around.
One-Way Map, No Loops
A Directed Acyclic Graph is a bunch of dots connected by one-way arrows, with one big rule: no matter which arrows you follow forward, you can never get back to where you started — no loops allowed. Two facts do all the work: every arrow points one direction (so the relationship is one-way at each step), and the whole thing forbids cycles. Together they force everything into a one-way order, which is exactly the shape of 'this must come before that' — like course prerequisites or steps in a recipe. Because there are no loops, you can always lay everything out in a valid order and figure out what has to be done first.
One-Way Order Network
A Directed Acyclic Graph is a set of nodes joined by directed edges such that no sequence of edges leads back to its origin. Two structural facts do all the work: each edge has a direction, so the relation it encodes is asymmetric at every step, and a global no-return constraint forbids cycles. Together they impose a one-way structure on the whole graph — pick any node, follow edges forward as far as you like, and you can never revisit yourself. This is the abstract shape of prerequisite order, causal flow, and irreversibility lifted to the scope of an entire network. The acyclicity isn't decorative: it's what makes operations like topological sort (a linear ordering consistent with every arrow), well-founded induction (guaranteed base cases), and terminating dependency resolution well-defined. Remove the constraint and none of those procedures is even definable, and the substrate doesn't matter — the nodes may be files, tasks, commits, random variables, species, or courses.
A directed acyclic graph is a set of nodes joined by directed edges such that no sequence of edges leads back to its origin. Two structural facts do all the work: each edge has a direction, so the relation it encodes is asymmetric at every step, and a global no-return constraint forbids cycles. Together these impose a one-way structure on the whole graph — pick any node, follow edges forward as far as you like, and you can never revisit yourself. This is the abstract shape of prerequisite order, causal flow, and irreversibility lifted to the scope of an entire network. Acyclicity is not a decorative side-condition; it is what makes an entire class of operations well-defined. It licenses topological sort — a linear ordering consistent with every arrow — well-founded induction — guaranteed base cases from which to build — and terminating dependency resolution — the assurance that leaves can always be evaluated first and the rest in order. Remove the constraint and none of these procedures is even definable. A DAG is therefore not merely a network that happens to lack loops; it is the structural precondition for ordering, finite evaluation, and bottom-up reasoning. The substrate is irrelevant: the nodes may be files, tasks, commits, random variables, species, or courses, and the directed-and-acyclic skeleton confers the same powers regardless of what they are.
Naming the shape forces the load-bearing question — is acyclicity actually
enforced here, or merely assumed? — and exposes that many real "hierarchies"
are DAGs whose single-parent tree assumption silently fails.
A DAG converts unstructured interdependence into a schedule via topological
sort, and localizes change: editing one node invalidates exactly its forward
closure and nothing upstream.
Software → data engineering: "a change invalidates its forward closure" tells you which downstream tables to refresh.
Code → research planning: breaking an import cycle by adding a shared module is the same maneuver as introducing a pilot-study node to break a method-selection loop.
Logic → causal modeling: the cycle-detection reflex catches circular justification and backward-causation errors alike.
A build system topologically sorts files so independent compilations run in
parallel; inject a cycle and topological order, source nodes, and bounded
invalidation all become undefined.
Parents (1) — more general patterns this builds on
Directed Acyclic Graphis a kind ofNetwork — A DAG is a specific KIND of network/graph — directed edges plus a global no-return (acyclicity) constraint. A specialization of the general network with the added direction + acyclicity invariants.
Directed Acyclic Graph is not Hierarchy because a DAG permits multiple parents and multiple sources, whereas a tree gives each node at most one parent and a single root.
Directed Acyclic Graph is not Cycle because a DAG is defined by the global absence of any return path, whereas a cycle is the closed path it forbids — they are structural opposites.
Directed Acyclic Graph is not Causality because the same acyclic skeleton encodes prerequisite, precedence, or citation, whereas only a genuinely causal reading licenses interventional reasoning.