有向无环图

来自集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织
跳到导航 跳到搜索

此词条暂由彩云小译翻译,翻译字数共4005,未经人工整理和审校,带来阅读不便,请见谅。

模板:Good article

文件:Tred-G.svg
Example of a directed acyclic graph.

Example of a directed acyclic graph.

有向无环图的例子。

In mathematics, particularly graph theory, and computer science, a directed acyclic graph (DAG or dag 模板:IPAc-en) is a directed graph with no directed cycles. That is, it consists of vertices and edges (also called arcs), with each edge directed from one vertex to another, such that following those directions will never form a closed loop. A directed graph is a DAG if and only if it can be topologically ordered, by arranging the vertices as a linear ordering that is consistent with all edge directions. DAGs have numerous scientific and computational applications, ranging from biology (evolution, family trees, epidemiology) to sociology (citation networks) to computation (scheduling).

In mathematics, particularly graph theory, and computer science, a directed acyclic graph (DAG or dag ) is a directed graph with no directed cycles. That is, it consists of vertices and edges (also called arcs), with each edge directed from one vertex to another, such that following those directions will never form a closed loop. A directed graph is a DAG if and only if it can be topologically ordered, by arranging the vertices as a linear ordering that is consistent with all edge directions. DAGs have numerous scientific and computational applications, ranging from biology (evolution, family trees, epidemiology) to sociology (citation networks) to computation (scheduling).

在数学,特别是图论计算机科学中,有向无环图DAG 或 dag是一个没有定向循环的有向图。也就是说,它由顶点Vertex边Edge(也称为弧)组成,每条边都从一个顶点指向另一个顶点,沿着这些顶点的方向 不会形成一个闭合的环Loop。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成拓扑排序Topologically ordered。有向无环图有许多科学的和计算的应用,从生物学(进化论,家谱,流行病学)到社会学(引文网络)到计算(调度)。



Definitions

A graph is formed by vertices and by edges connecting pairs of vertices, where the vertices can be any kind of object that is connected in pairs by edges. In the case of a directed graph, each edge has an orientation, from one vertex to another vertex. A path in a directed graph is a sequence of edges having the property that the ending vertex of each edge in the sequence is the same as the starting vertex of the next edge in the sequence; a path forms a cycle if the starting vertex of its first edge equals the ending vertex of its last edge. A directed acyclic graph is a directed graph that has no cycles.[1][2][3]

A graph is formed by vertices and by edges connecting pairs of vertices, where the vertices can be any kind of object that is connected in pairs by edges. In the case of a directed graph, each edge has an orientation, from one vertex to another vertex. A path in a directed graph is a sequence of edges having the property that the ending vertex of each edge in the sequence is the same as the starting vertex of the next edge in the sequence; a path forms a cycle if the starting vertex of its first edge equals the ending vertex of its last edge. A directed acyclic graph is a directed graph that has no cycles.

图是由顶点和连接顶点对的边组成的,顶点可以是任何一种由边成对连接的对象。在有向图中,每条边都有一个方向,从一个顶点到另一个顶点。有向图中的路径Path是一个边序列,序列中每条边的结束顶点是序列中下一条边的起始顶点; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同,那么它就形成了一个环。有向无环图是一个没有环的有向图[1][2][3]。


A vertex v of a directed graph is said to be reachable from another vertex u when there exists a path that starts at u and ends at v. As a special case, every vertex is considered to be reachable from itself (by a path with zero edges). If a vertex can reach itself via a nontrivial path (a path with one or more edges), then that path is a cycle, so another way to define directed acyclic graphs is that they are the graphs in which no vertex can reach itself via a nontrivial path.[4]

A vertex of a directed graph is said to be reachable from another vertex when there exists a path that starts at and ends at . As a special case, every vertex is considered to be reachable from itself (by a path with zero edges). If a vertex can reach itself via a nontrivial path (a path with one or more edges), then that path is a cycle, so another way to define directed acyclic graphs is that they are the graphs in which no vertex can reach itself via a nontrivial path.

当存在一条从顶点u到顶点v的路径时,顶点v被称作是从顶点u可达的Reachability。每个顶点都是从自身可达的(通过一条没有边的路径)。如果一个顶点可以从一条 非平凡路径(一条由一个或更多边组成的路径)到达自身,那么这条路径就是一个环。因此,有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。[4]



Mathematical properties 数学性质

Reachability, transitive closure, and transitive reduction

可达性,传递闭包和传递归约

页面模板:Multiple image/styles.css没有内容。

A DAG G
Transitive reduction of G

The reachability relationship in any directed acyclic graph can be formalized as a partial order on the vertices of the DAG. In this partial order, two vertices u and v are ordered as uv exactly when there exists a directed path from u to v in the DAG; that is, when v is reachable from u.[5] However, different DAGs may give rise to the same reachability relation and the same partial order.[6] For example, the DAG with two edges ab and bc has the same reachability relation as the graph with three edges ab, bc, and ac. Both of these DAGS produce the same partial order, in which the vertices are ordered as abc.

The reachability relationship in any directed acyclic graph can be formalized as a partial order on the vertices of the DAG. In this partial order, two vertices and are ordered as exactly when there exists a directed path from to in the DAG; that is, when is reachable from . However, different DAGs may give rise to the same reachability relation and the same partial order. For example, the DAG with two edges and has the same reachability relation as the graph with three edges , , and . Both of these DAGS produce the same partial order, in which the vertices are ordered as .

有向无环图的可达性可以用其顶点的 偏序关系≤来表示。在偏序关系中,如果存在一条路径从顶点u指向顶点v,它们的偏序关系可被写作u ≤ v。也就是,从节点u是可达节点v。[5] 不同的有向无环图可以有着相同的可达关系和偏序关系[6]。例如,有两条边a → b,b → c的有向无环图,和有三条边的a → b, b → c,a → c的有向无环图有着相同的偏序关系a ≤ b ≤ c。


文件:Hasse diagram of powerset of 3.svg
A Hasse diagram representing the partial order of set inclusion (⊆) among the subsets of a three-element set.

A Hasse diagram representing the partial order of set inclusion (⊆) among the subsets of a three-element set.

Hasse 图表示三元素集合子集中集合包含(something)的偏序

If G is a DAG, its transitive closure is the graph with the most edges that represents the same reachability relation. It has an edge uv whenever u can reach v. That is, it has an edge for every related pair u ≤ v of distinct elements in the reachability relation of G, and may therefore be thought of as a direct translation of the reachability relation into graph-theoretic terms. The same method of translating partial orders into DAGs works more generally: for every finite partially ordered set (S, ≤), the graph that has a vertex for each member of S and an edge for each pair of elements related by u ≤ v is automatically a transitively closed DAG, and has (S, ≤) as its reachability relation. In this way, every finite partially ordered set can be represented as the reachability relation of a DAG.

If is a DAG, its transitive closure is the graph with the most edges that represents the same reachability relation. It has an edge whenever can reach . That is, it has an edge for every related pair of distinct elements in the reachability relation of , and may therefore be thought of as a direct translation of the reachability relation into graph-theoretic terms. The same method of translating partial orders into DAGs works more generally: for every finite partially ordered set , the graph that has a vertex for each member of and an edge for each pair of elements related by is automatically a transitively closed DAG, and has as its reachability relation. In this way, every finite partially ordered set can be represented as the reachability relation of a DAG.

对于一个有向无环图G,它的传递闭包等同于一个在保持与其相同可达性的情况下,边数最多的图。在这个图中,当u可达v的时候,边u → v必定存在。换句话说,每个G中的非相同元素偏序关系对u ≤ v都在这个图中有一条边。这可以被视作用图来可视化图G的可达性关系。


The transitive reduction of a DAG G is the graph with the fewest edges that represents the same reachability relation as G. It is a subgraph of G, formed by discarding the edges uv for which G also contains a longer path connecting the same two vertices.

The transitive reduction of a DAG is the graph with the fewest edges that represents the same reachability relation as . It is a subgraph of , formed by discarding the edges for which also contains a longer path connecting the same two vertices.


Like the transitive closure, the transitive reduction is uniquely defined for DAGs. In contrast, for a directed graph that is not acyclic, there can be more than one minimal subgraph with the same reachability relation.[7]

Like the transitive closure, the transitive reduction is uniquely defined for DAGs. In contrast, for a directed graph that is not acyclic, there can be more than one minimal subgraph with the same reachability relation.

有向无环图G的传递规约为和其有着相同可达性,边数最少的图。它是G的一个子图。构造方法为当G有着一条更长的路径连接顶点u和v的时候,消去边u → v。 传递约简和传递闭包都是有向无环图的特有概念。相反的,对于有向有环图,可以存在多个与原图有着相同可达性的最简子图。[7]


If a DAG G has a reachability relation described by the partial order , then the transitive reduction of G is a subgraph of G that has an edge uv for every pair in the covering relation of . Transitive reductions are useful in visualizing the partial orders they represent, because they have fewer edges than other graphs representing the same orders and therefore lead to simpler graph drawings. A Hasse diagram of a partial order is a drawing of the transitive reduction in which the orientation of each edge is shown by placing the starting vertex of the edge in a lower position than its ending vertex.[8]

If a DAG has a reachability relation described by the partial order , then the transitive reduction of is a subgraph of that has an edge for every pair in the covering relation of . Transitive reductions are useful in visualizing the partial orders they represent, because they have fewer edges than other graphs representing the same orders and therefore lead to simpler graph drawings. A Hasse diagram of a partial order is a drawing of the transitive reduction in which the orientation of each edge is shown by placing the starting vertex of the edge in a lower position than its ending vertex.

对于有向无环图G和表达其可达性的偏序关系≤,它的传递规约也可以看作包含G的覆盖关系covering relation中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用,因为它们比其他具有相同偏序关系的图的边数要少,这简化了绘图。偏序关系的哈斯图由将传递规约中的每条边的起点绘制在其终点的下方而得到。[9]

Topological ordering 拓扑排序

页面模板:Multiple image/styles.css没有内容。

A topological ordering of a directed acyclic graph: every edge goes from earlier in the ordering (upper left) to later in the ordering (lower right). A directed graph is acyclic if and only if it has a topological ordering.
Adding the red edges to the blue directed acyclic graph produces another DAG, the transitive closure of the blue graph. For each red or blue edge uv, v is reachable from u: there exists a blue path starting at u and ending at v.


A topological ordering of a directed graph is an ordering of its vertices into a sequence, such that for every edge the start vertex of the edge occurs earlier in the sequence than the ending vertex of the edge. A graph that has a topological ordering cannot have any cycles, because the edge into the earliest vertex of a cycle would have to be oriented the wrong way. Therefore, every graph with a topological ordering is acyclic. Conversely, every directed acyclic graph has at least one topological ordering. The existence of a topological ordering can therefore be used as an equivalent definition of a directed acyclic graphs: they are exactly the graphs that have topological orderings.[2]

A topological ordering of a directed graph is an ordering of its vertices into a sequence, such that for every edge the start vertex of the edge occurs earlier in the sequence than the ending vertex of the edge. A graph that has a topological ordering cannot have any cycles, because the edge into the earliest vertex of a cycle would have to be oriented the wrong way. Therefore, every graph with a topological ordering is acyclic. Conversely, every directed acyclic graph has at least one topological ordering. The existence of a topological ordering can therefore be used as an equivalent definition of a directed acyclic graphs: they are exactly the graphs that have topological orderings.

有向无环图的拓扑排序为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环,因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。基于此,拓扑排序可以被用来定义有向无环图:当且仅当一个有向图有拓扑排序,它是有向无环图。一般情况下,拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下,有唯一的拓扑排序方式,这时,拓扑排序与顶点在这条路径中出现的顺序相同。[9]

In general, this ordering is not unique; a DAG has a unique topological ordering if and only if it has a directed path containing all the vertices, in which case the ordering is the same as the order in which the vertices appear in the path.[9]


The family of topological orderings of a DAG is the same as the family of linear extensions of the reachability relation for the DAG, so any two graphs representing the same partial order have the same set of topological orders.

有向无环图的拓扑序族与有向无环图的可达关系的线性扩张族相同,因此任意两个表示相同偏序的图具有相同的拓扑序集。

The family of topological orderings of a DAG is the same as the family of linear extensions of the reachability relation for the DAG,[10] so any two graphs representing the same partial order have the same set of topological orders.

有向无环图的拓扑排序族等同于其可达性的 线性拓展Linear extension族。 [10]因此,偏序关系相同的任意两个图会有相同的拓扑排序集。

Combinatorial enumeration 组合计数

The graph enumeration problem of counting directed acyclic graphs was studied by 模板:Harvard citation.[11]


The number of DAGs on n labeled vertices, for n = 0, 1, 2, 3, … (without restrictions on the order in which these numbers appear in a topological ordering of the DAG) is

1, 1, 3, 25, 543, 29281, 3781503, … 模板:OEIS.

罗宾逊 Robinson(1973)研究了有向无环图的 图计数Graph enumeration问题。如标号顶点在拓扑排序中出现的顺序不受限制,有n个顶点的标号有向无环图的数量为 1, 1, 3, 25, 543, 29281, 3781503, … (OEIS中的数列A003024)。 其中n = 0, 1, 2, 3,……。

These numbers may be computed by the recurrence relation 这个数列的 递推关系式 Recurrence relation

[math]\displaystyle{ a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}. }[/math] and proved, that the same numbers count the (0,1) matrices for which all eigenvalues are positive real numbers. The proof is bijective: a matrix is an adjacency matrix of a DAG if and only if is a (0,1) matrix with all eigenvalues positive, where denotes the identity matrix. Because a DAG cannot have self-loops, its adjacency matrix must have a zero diagonal, so adding preserves the property that all matrix coefficients are 0 or 1.

[math]\displaystyle{ a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}. }[/math]

These numbers may be computed by the recurrence relation

[math]\displaystyle{ a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}. }[/math][11]

Eric W. Weisstein conjectured,[12] and 模板:Harvard citation proved, that the same numbers count the (0,1) matrices for which all eigenvalues are positive real numbers. The proof is bijective: a matrix A is an adjacency matrix of a DAG if and only if A + I is a (0,1) matrix with all eigenvalues positive, where I denotes the identity matrix. Because a DAG cannot have self-loops, its adjacency matrix must have a zero diagonal, so adding I preserves the property that all matrix coefficients are 0 or 1.[13]

埃里克·韦斯坦因 Eric W. Weisstein推测[13],n个顶点的标号有向无环图的数量与其中所有特征值都为正实数的n*n逻辑矩阵的数量相同。这一点随后被 McKay et al. (2004) 证实,证明采用了 双射法Bijective:一个矩阵A是有向无环图的一个 邻接矩阵Adjacency matrix,当且仅当A + I 是一个所有特征值都为正数的逻辑矩阵,其中I 为 单位矩阵 Identity matrix。因为一个有向无环图不允许 自环Self-loops,它的邻接矩阵的对角线必定全为0。因此,加上I 保持了所有矩阵因子都是0或1的特性。[13]

Related families of graphs 相关概念

页面模板:Multiple image/styles.css没有内容。

A polytree, a DAG formed by orienting the edges of an undirected tree
A multitree, A DAG in which each subgraph reachable from a single vertex (red) is a tree

A multitree (also called a strongly unambiguous graph or a mangrove) is a directed graph in which there is at most one directed path (in either direction) between any two vertices; equivalently, it is a DAG in which, for every vertex , the subgraph reachable from forms a tree.


A polytree is a directed graph formed by orienting the edges of a free tree.[14]Every polytree is a DAG. In particular, this is true of the arborescences formed by directing all edges outwards from the roots of a tree.

多重树(英语:polytree)由将自由树的边定向(英语:orienting)而得到。[14] 多重树必定是有向无环图。对于有根树,将其所有边赋予指离根的方向也可以得到有向无环图,即树状图。

A multitree (also called a strongly unambiguous graph or a mangrove) is a directed graph in which there is at most one directed path (in either direction) between any two vertices; equivalently, it is a DAG in which, for every vertex v, the subgraph reachable from v forms a tree.[15]

强明确树(英语:multitree)是每两个顶点最多被一条路径所连接的有向无环图。等价的说,它是满足以下性质的一个有向无环图:对于图中每个顶点v,从v可达的顶点组成一颗树。[16]

Computational problems

Topological sorting and recognition 拓扑排序和识别

Topological sorting is the algorithmic problem of finding a topological ordering of a given DAG. It can be solved in linear time.[16] Kahn's algorithm for topological sorting builds the vertex ordering directly. It maintains a list of vertices that have no incoming edges from other vertices that have not already been included in the partially constructed topological ordering; initially this list consists of the vertices with no incoming edges at all. Then, it repeatedly adds one vertex from this list to the end of the partially constructed topological ordering, and checks whether its neighbors should be added to the list. The algorithm terminates when all vertices have been processed in this way.[17] Alternatively, a topological ordering may be constructed by reversing a postorder numbering of a depth-first search graph traversal.[16]

可以用线性时间复杂度的卡恩算法来找到一个有向无环图的拓扑排序。[17]简单来说,开设一个存放结果的列表L,先将入度为零的节点放到L中,因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉,再寻找图中入度为零的节点。对于新找到的节点来说,他们的父节点已经都在L中了,所以也可以从末端插入L。重复上述操作,直到找不到入度为零的节点。[17] 另外一种构造拓扑排序的算法是将深度优先搜索的后序遍历结果翻转。[16]

It is also possible to check whether a given directed graph is a DAG in linear time, either by attempting to find a topological ordering and then testing for each edge whether the resulting ordering is valid[18] or alternatively, for some topological sorting algorithms, by verifying that the algorithm successfully orders all the vertices without meeting an error condition.[17]

检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序,然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。[18] 对于卡恩算法在内的部分拓扑排序算法,通过在算法终止时判断是否满足一定条件即可知道图是否有环。[17]如果有环,卡恩算法最终获得的L中节点个数会与图的节点总数不同。

Construction from cyclic graphs

从其他图构建


Any undirected graph may be made into a DAG by choosing a total order for its vertices and directing every edge from the earlier endpoint in the order to the later endpoint. The resulting orientation of the edges is called an acyclic orientation. Different total orders may lead to the same acyclic orientation, so an -vertex graph can have fewer than acyclic orientations. The number of acyclic orientations is equal to χ(−1)}}, where is the chromatic polynomial of the given graph.

任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的全序关系Total order,并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向Orientation (graph theory)方法中的无环定向acyclic orientation。不同的全序关系可能推出相同的无环定向,因此一个包含n个顶点的图的无环定向数量小于n!。如果定义χ为给定图的色多项式Chromatic polynomial,无环定向数量等于|χ(−1)|。[19]

文件:Graph Condensation.svg
The yellow directed acyclic graph is the condensation of the blue directed graph. It is formed by contracting each strongly connected component of the blue graph into a single yellow vertex.

Any directed graph may be made into a DAG by removing a feedback vertex set or a feedback arc set, a set of vertices or edges (respectively) that touches all cycles. However, the smallest such set is NP-hard to find. An arbitrary directed graph may also be transformed into a DAG, called its condensation, by contracting each of its strongly connected components into a single supervertex. When the graph is already acyclic, its smallest feedback vertex sets and feedback arc sets are empty, and its condensation is the graph itself.

任意有环有向图都可以被转化为有向无环图。只要从图中移除反馈节点集(英语:feedback vertex set)或反馈边集(英语:feedback arc set),即对于图中每个环,至少包括环中一个顶点或边的集合。不过,找到反馈节点或边的最小集合是NP困难问题。[20] 另外一种将有环有向图去环的方法是将每个强连通分量收缩为一个顶点。[22] 对于无环图,它的最小反馈顶点或边集为空集,它的强连通分量则为自身。

Transitive closure and transitive reduction 传递闭包和传递归约

The transitive closure of a given DAG, with n vertices and m edges, may be constructed in time O(mn) by using either breadth-first search or depth-first search to test reachability from each vertex.[16] Alternatively, it can be solved in time O(nω) where ω < 2.373 is the exponent for matrix multiplication algorithms; this is a theoretical improvement over the O(mn) bound for dense graphs.[17]

The transitive closure of a given DAG, with vertices and edges, may be constructed in time by using either breadth-first search or depth-first search to test reachability from each vertex. Alternatively, it can be solved in time where is the exponent for matrix multiplication algorithms; this is a theoretical improvement over the bound for dense graphs.

有向无环图的传递闭包可以通过广度优先搜索或深度优先搜索对每个节点测试可达性来构建。算法对于一个有着n个顶点和m条边的有向无环图的复杂度为O(mn)。[22]也可以使用矩阵乘法算法(英语:matrix multiplication algorithm)中最快的Coppersmith–Winograd算法(英语:Coppersmith–Winograd algorithm),其复杂度为O(n2.3728639)。这个算法理论上在稠密图(英语:dense graph)中快过O(mn)。[23]


In all of these transitive closure algorithms, it is possible to distinguish pairs of vertices that are reachable by at least one path of length two or more from pairs that can only be connected by a length-one path. The transitive reduction consists of the edges that form length-one paths that are the only paths connecting their endpoints. Therefore, the transitive reduction can be constructed in the same asymptotic time bounds as the transitive closure.[18]

In all of these transitive closure algorithms, it is possible to distinguish pairs of vertices that are reachable by at least one path of length two or more from pairs that can only be connected by a length-one path. The transitive reduction consists of the edges that form length-one paths that are the only paths connecting their endpoints. Therefore, the transitive reduction can be constructed in the same asymptotic time bounds as the transitive closure.

不论在哪种传递闭包算法中,那些被一条长度至少为2的路径所连接的顶点对,都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递归约包含后者,传递归约可以在和传递闭包相同的渐进时间复杂度(英语:Asymptotic computational complexity)中被构建。[25]

Closure problem 闭包问题

The closure problem takes as input a vertex-weighted directed acyclic graph and seeks the minimum (or maximum) weight of a closure – a set of vertices C, such that no edges leave C. The problem may be formulated for directed graphs without the assumption of acyclicity, but with no greater generality, because in this case it is equivalent to the same problem on the condensation of the graph. It may be solved in polynomial time using a reduction to the maximum flow problem.[19]

The closure problem takes as input a vertex-weighted directed acyclic graph and seeks the minimum (or maximum) weight of a closure – a set of vertices C, such that no edges leave C. The problem may be formulated for directed graphs without the assumption of acyclicity, but with no greater generality, because in this case it is equivalent to the same problem on the condensation of the graph. It may be solved in polynomial time using a reduction to the maximum flow problem.

闭包是一个图中没有出边的顶点子集,即不存在从子集中顶点指向子集外顶点的边。闭包问题(英语:closure problem)是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作最大流问题的简化版,在多项式时间内被解决。实际上,是否有环对于找到闭包没有影响。[26]

Path algorithms 最短或最长路径问题

Some algorithms become simpler when used on DAGs instead of general graphs, based on the principle of topological ordering. For example, it is possible to find shortest paths and longest paths from a given starting vertex in DAGs in linear time by processing the vertices in a topological order, and calculating the path length for each vertex to be the minimum or maximum length obtained via any of its incoming edges.[20] In contrast, for arbitrary graphs the shortest path may require slower algorithms such as Dijkstra's algorithm or the Bellman–Ford algorithm,[21] and longest paths in arbitrary graphs are NP-hard to find.[22]

Some algorithms become simpler when used on DAGs instead of general graphs, based on the principle of topological ordering. For example, it is possible to find shortest paths and longest paths from a given starting vertex in DAGs in linear time by processing the vertices in a topological order, and calculating the path length for each vertex to be the minimum or maximum length obtained via any of its incoming edges. In contrast, for arbitrary graphs the shortest path may require slower algorithms such as Dijkstra's algorithm or the Bellman–Ford algorithm, and longest paths in arbitrary graphs are NP-hard to find.

基于拓扑排序的性质,有向无环图的最短路问题和最长路径问题可以在线性时间内解决。将顶点拓扑排序后,从前到后遍历每一个顶点,对于遍历到的顶点,更新其所有出边所到达顶点的长度值。如果求最短路,则在本边是更短路径的一部分时更新。求最长路则反之。[27]对于非有向无环图,最短路需要用复杂度为

的戴克斯特拉算法或

的贝尔曼-福特算法等。[28]最长路径则是一个NP困难问题。[29]

Applications 应用

Family tree of the Ptolemaic dynasty, with many marriages between close relatives causing pedigree collapse


Scheduling 调度

Directed acyclic graphs representations of partial orderings have many applications in scheduling for systems of tasks with ordering constraints.[23]

Directed acyclic graphs representations of partial orderings have many applications in scheduling for systems of tasks with ordering constraints.[29] An important class of problems of this type concern collections of objects that need to be updated, such as the cells of a spreadsheet after one of the cells has been changed, or the object files of a piece of computer software after its source code has been changed. In this context, a dependency graph is a graph that has a vertex for each object to be updated, and an edge connecting two objects whenever one of them needs to be updated earlier than the other. A cycle in this graph is called a circular dependency, and is generally not allowed, because there would be no way to consistently schedule the tasks involved in the cycle. Dependency graphs without circular dependencies form DAGs.[30]

有向无环图的偏序关系可以在调度有着先后顺序限制的系统任务中发挥作用。[29]调度问题的一个重要种类是串联需要更新的对象,如電子試算表中某个单元格的计算公式依赖于其他单元格,或在程序的源代码被修改后重新编译目标文件。依赖图(英语:dependency graph)则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象,边则表示更新的关系。依赖图中的环被称为环状依赖(英语:circular dependency)。环状依赖通常是不被允许出现的,因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。[31]

For instance, when one cell of a spreadsheet changes, it is necessary to recalculate the values of other cells that depend directly or indirectly on the changed cell. For this problem, the tasks to be scheduled are the recalculations of the values of individual cells of the spreadsheet. Dependencies arise when an expression in one cell uses a value from another cell. In such a case, the value that is used must be recalculated earlier than the expression that uses it. Topologically ordering the dependency graph, and using this topological order to schedule the cell updates, allows the whole spreadsheet to be updated with only a single evaluation per cell.[31] Similar problems of task ordering arise in makefiles for program compilation[31] and instruction scheduling for low-level computer program optimization.[32]

举例来说,当电子表格中一个单元格的数值发生改变,其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时,两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下,整个工作表都能被更新。[31]相似的任务调度场景出现在程序源代码编译的makefile,[31]和优化计算机程序底层执行的指令调度中。[32]


A somewhat different DAG-based formulation of scheduling constraints is used by the program evaluation and review technique (PERT), a method for management of large human projects that was one of the first applications of DAGs. In this method, the vertices of a DAG represent milestones of a project rather than specific tasks to be performed. Instead, a task or activity is represented by an edge of a DAG, connecting two milestones that mark the beginning and completion of the task. Each such edge is labeled with an estimate for the amount of time that it will take a team of workers to perform the task. The longest path in this DAG represents the critical path of the project, the one that controls the total time for the project. Individual milestones can be scheduled according to the lengths of the longest paths ending at their vertices.[24]

计划评审技术是一种基于有向无环图的计划排定技术,通常用于组织大型的人工项目。在计划评审技术中,每个顶点表示项目的一个里程碑(英语:Milestone (project management)),每条有向边表示任务或者活动,连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的最长路径即为项目的关键路径。关键路径决定了项目所需的总时间,里程碑的完成时间取决于结束于本顶点的最长路径。[33]

Data processing networks 数据处理网络

the length of the longest path, from the n-th node added to the network to the first node in the network, scales as [math]\displaystyle{ \ln(n) }[/math].

最长路径的长度,从添加到网络的第 n 个节点到网络中的第一个节点,缩放为 < math > ln (n) </math > 。

A directed acyclic graph may be used to represent a network of processing elements. In this representation, data enters a processing element through its incoming edges and leaves the element through its outgoing edges.

有向无环图可以用于表示处理数据的元素网络。在网络中,数据从一个元素顶点的入边进入,处理后从出边离开。

For instance, in electronic circuit design, static combinational logic blocks can be represented as an acyclic system of logic gates that computes a function of an input, where the input and output of the function are represented as individual bits. In general, the output of these blocks cannot be used as the input unless it is captured by a register or state element which maintains its acyclic properties.[25] Electronic circuit schematics either on paper or in a database are a form of directed acyclic graphs using instances or components to form a directed reference to a lower level component. Electronic circuits themselves are not necessarily acyclic or directed.

在电子电路设计中,静态组合逻辑电路块可以被表示为由逻辑门组成的有向无环系统。每个逻辑门对输入做一次函数处理,输入和输出均为一个位元组。通常,这些电路块的输出不能够再作为输入,除非它们被存储在寄存器或者状态单元中,以保证图不出现环。[35]纸上或数据库中的电子电路原理图是一种有向无环图的形式,它使用实例或元件来形成对低级元件的有向引用。电子电路本身不一定是非循环的或定向的。

Directed acyclic graphs may also be used as a compact representation of a collection of sequences. In this type of application, one finds a DAG in which the paths form the given sequences. When many of the sequences share the same subsequences, these shared subsequences can be represented by a shared part of the DAG, allowing the representation to use less space than it would take to list out all of the sequences separately. For example, the directed acyclic word graph is a data structure in computer science formed by a directed acyclic graph with a single source and with edges labeled by letters or symbols; the paths from the source to the sinks in this graph represent a set of strings, such as English words. Any set of sequences can be represented as paths in a tree, by forming a tree vertex for every prefix of a sequence and making the parent of one of these vertices represent the sequence with one fewer element; the tree formed in this way for a set of strings is called a trie. A directed acyclic word graph saves space over a trie by allowing paths to diverge and rejoin, so that a set of words with the same possible suffixes can be represented by a single tree vertex.

有向无环图也可用作序列集合的紧凑表示。在这种类型的应用程序中,人们会找到一个 DAG,其中的路径形成给定的序列。当许多序列共享相同的子序列时,这些共享子序列可以由 DAG 的一个共享部分来表示,这使得这种表示比单独列出所有序列所需要的空间更少。例如,有向无环词图是计算机科学中的一种数据结构,由一个单源的有向无环图构成,其边缘用字母或符号标记; 在这个图中,从源到汇的路径表示一组字符串,例如英语单词。任何一组序列都可以表示为树中的路径,方法是为序列的每个前缀形成一个树顶点,并使其中一个顶点的父顶点表示只有一个元素的序列; 对于一组字符串以这种方式形成的树称为 trie。有向无环词图允许路径发散和重新连接,从而在一个三元图上节省空间,这样一组可能具有相同后缀的词可以由一个树顶点表示。


Dataflow programming languages describe systems of operations on data streams, and the connections between the outputs of some operations and the inputs of others. These languages can be convenient for describing repetitive data processing tasks, in which the same acyclically-connected collection of operations is applied to many data items. They can be executed as a parallel algorithm in which each operation is performed by a parallel process as soon as another set of inputs becomes available to it.[26]

数据式编程(英语:Dataflow programming)语言描述针对数据流(英语:data stream)的操作,以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单,因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被并发执行,其中每一个操作都是在另一组输入可用时由一个并行进程来执行的,从而高效利用多核心处理器。[35]


The same idea of using a DAG to represent a family of paths occurs in the binary decision diagram, a DAG-based data structure for representing binary functions. In a binary decision diagram, each non-sink vertex is labeled by the name of a binary variable, and each sink and each edge is labeled by a 0 or 1. The function value for any truth assignment to the variables is the value at the sink found by following a path, starting from the single source vertex, that at each non-sink vertex follows the outgoing edge labeled with the value of that vertex's variable. Just as directed acyclic word graphs can be viewed as a compressed form of , binary decision diagrams can be viewed as compressed forms of decision trees that save space by allowing paths to rejoin when they agree on the results of all remaining decisions.

使用 DAG 表示一系列路径的同样想法也出现在二元决策图中,这是一个基于 dags 的数据结构,用于表示二进制函数。在二元决策图中,每个无汇点都用一个二进制变量的名称标记,每个汇点和每条边都用一个0或1标记。任何对变量进行真值赋值的函数值,都是指从单个源顶点开始,沿着一条路径,在每个非汇顶点上沿着标有该顶点变量值的外向边缘,在汇处找到的值。正如有向无环字图可以看作是一种压缩形式,二叉决策图可以看作是一种压缩形式的决策树,通过允许路径在所有剩余决策的结果一致时重新连接来节省空间。


In compilers, straight line code (that is, sequences of statements without loops or conditional branches) may be represented by a DAG describing the inputs and outputs of each of the arithmetic operations performed within the code. This representation allows the compiler to perform common subexpression elimination efficiently.[27] At a higher level of code organization, the acyclic dependencies principle states that the dependencies between modules or components of a large software system should form a directed acyclic graph.[28]

在编译器中,直线码(不含条件分支和循环的代码段)可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行通用子表达式删除(英语:common subexpression elimination),使得代码更高效。在更高级别的代码组织中,非循环依赖性原则指出,大型软件系统的模块或组件之间的依赖关系应形成一个有向非循环图。[37]

Feedforward neural networks are another example.

Causal structures 因果结构

Graphs in which vertices represent events occurring at a definite time, and where the edges are always point from the early time vertex to a late time vertex of the edge, are necessarily directed and acyclic. The lack of a cycle follows because the time associated with a vertex always increases as you follow any path in the graph so you can never return to a vertex on a path. This reflects our natural intuition that causality means events can only affect the future, they never affect the past, and thus we have no causal loops. An example of this type of directed acyclic graph are those encountered in the causal set approach to quantum gravity though in this case the graphs considered are transitively complete. In the version history example, each version of the software is associated with a unique time, typically the time the version was saved, committed or released. For citation graphs, the documents are published at one time and can only refer to older documents.

用顶点表示事件,边表示因果关系的图通常是无环的。[38]事件由时间上的先后顺序来排列,所有箭头遵循从先发生事件指向后发生事件的原则,因此也不存在环。 这类有向无环图的一个例子是在量子引力的因果集方法中遇到的那些图,尽管在这种情况下所考虑的图是传递完全的。在版本历史示例中,软件的每个版本都与一个唯一的时间相关联,通常是保存、提交或发布版本的时间。对于引文图表,文档一次发布,只能引用较旧的文档。

Sometimes events are not associated with a specific physical time. Provided that pairs of events have a purely causal relationship, that is edges represent causal relations between the events, we will have a directed acyclic graph.[29] For instance, a Bayesian network represents a system of probabilistic events as vertices in a directed acyclic graph, in which the likelihood of an event may be calculated from the likelihoods of its predecessors in the DAG.[30] In this context, the moral graph of a DAG is the undirected graph created by adding an (undirected) edge between all parents of the same vertex (sometimes called marrying), and then replacing all directed edges by undirected edges.[31] Another type of graph with a similar causal structure is an influence diagram, the vertices of which represent either decisions to be made or unknown information, and the edges of which represent causal influences from one vertex to another.[32] In epidemiology, for instance, these diagrams are often used to estimate the expected value of different choices for intervention.[33][34]

Category:Directed graphs

类别: 有向图


Category:Directed acyclic graphs

范畴: 有向无圈图

The converse is also true. That is in any application represented by a directed acyclic graph there is a causal structure, either an explicit order or time in the example or an order which can be derived from graph structure. This follows because all directed acyclic graphs have a topological ordering, i.e. there is at least one way to put the vertices in an order such that all edges point in the same direction along that order.

反之亦然。也就是说,在由有向无环图表示的任何应用程序中,都有一个因果结构,或者是示例中的显式顺序或时间,或者是可以从图结构派生的顺序。这是因为所有有向无环图都具有拓扑排序,即至少有一种方法可以将顶点按顺序排列,使所有边沿着该顺序指向同一方向。

de:Graph (Graphentheorie)#Teilgraphen.2C Wege und Zyklen

de:Graph (Graphentheorie)#Teilgraphen.2C Wege und Zyklen


This page was moved from wikipedia:en:Directed acyclic graph. Its edit history can be viewed at 有向无环图/edithistory

Causal structures 因果结构

An important class of problems of this type concern collections of objects that need to be updated, such as the cells of a spreadsheet after one of the cells has been changed, or the object files of a piece of computer software after its source code has been changed.

In this context, a dependency graph is a graph that has a vertex for each object to be updated, and an edge connecting two objects whenever one of them needs to be updated earlier than the other. A cycle in this graph is called a circular dependency, and is generally not allowed, because there would be no way to consistently schedule the tasks involved in the cycle.

The version history of a distributed revision control system, such as Git, generally has the structure of a directed acyclic graph, in which there is a vertex for each revision and an edge connecting pairs of revisions that were directly derived from each other. These are not trees in general due to merges.

分散式版本控制版本的历史,比如 Git,通常有一个有向无环图版本的结构,每个版本都有一个顶点,一条边连接直接从其他版本派生出来的修订对。由于合并,这些通常不是树。

Dependency graphs without circular dependencies form DAGs.[35]


In many randomized algorithms in computational geometry, the algorithm maintains a history DAG representing the version history of a geometric structure over the course of a sequence of changes to the structure. For instance in a randomized incremental algorithm for Delaunay triangulation, the triangulation changes by replacing one triangle by three smaller triangles when each point is added, and by "flip" operations that replace pairs of triangles by a different pair of triangles. The history DAG for this algorithm has a vertex for each triangle constructed as part of the algorithm, and edges from each triangle to the two or three other triangles that replace it. This structure allows point location queries to be answered efficiently: to find the location of a query point in the Delaunay triangulation, follow a path in the history DAG, at each step moving to the replacement triangle that contains . The final triangle reached in this path must be the Delaunay triangle that contains .

在计算几何的许多随机算法中,该算法维护一个历史 DAG,它表示一个几何结构在一系列结构变化过程中的版本历史。例如,在一个随机增量的三角形算法中,每增加一个点,三角形就被三个更小的三角形替换,或者用一对不同的三角形“翻转”操作替换成对的三角形,从而改变了三角形德劳内三角化。该算法的历史 DAG 包含每个三角形的顶点,以及每个三角形到其他两三个三角形的边。这种结构允许有效地回答点位置查询: 要在德劳内三角化中找到查询点的位置,按照历史 DAG 中的路径,在每一步移动到包含的替换三角形。在这条路径中达到的最后一个三角形必须是包含。

For instance, when one cell of a spreadsheet changes, it is necessary to recalculate the values of other cells that depend directly or indirectly on the changed cell. For this problem, the tasks to be scheduled are the recalculations of the values of individual cells of the spreadsheet. Dependencies arise when an expression in one cell uses a value from another cell. In such a case, the value that is used must be recalculated earlier than the expression that uses it. Topologically ordering the dependency graph, and using this topological order to schedule the cell updates, allows the whole spreadsheet to be updated with only a single evaluation per cell.[36] Similar problems of task ordering arise in makefiles for program compilation[36] and instruction scheduling for low-level computer program optimization.[37]

有时事件与特定的物理时间无关。假设事件对具有纯因果关系,即边表示事件之间的因果关系,我们将得到一个有向无环图。举例来说,贝叶斯网络表示多个概率事件的关联网络。顶点表示事件,后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。[39]在此基础上,一个有向无环图的端正图(英语:moral graph)通过以下方法而得到:将单个顶点的所有父节点之间添加一条无向边,再将所有的有向边换成无向边。[40]

另外一种具有相似因果结构的图是影响图(英语:influence diagram)。其顶点表示决策或不确定的事件,边表示两个顶点之间的因果关系。[41]在流行病学中,这些表示因果关系的图表常常用来评估不同干预手段的效果。[42][43]

The converse is also true. That is in any application represented by a directed acyclic graph there is a causal structure, either an explicit order or time in the example or an order which can be derived from graph structure. This follows because all directed acyclic graphs have a topological ordering, i.e. there is at least one way to put the vertices in an order such that all edges point in the same direction along that order.

反之亦然。也就是说,在由有向无环图表示的任何应用程序中,都有一个因果结构,或者是示例中的显式顺序或时间,或者是可以从图结构派生的顺序。这是因为所有有向无环图都具有拓扑排序,即至少有一种方法可以将顶点按顺序排列,使所有边沿着该顺序指向同一方向。


文件:Pert chart colored.svg
PERT chart for a project with five milestones (labeled 10–50) and six tasks (labeled A–F). There are two critical paths, ADF and BC.

Citation graphs 引用图

In a citation graph the vertices are documents with a single publication date. The edges represent the citations from the bibliography of one document to other necessarily earlier documents. The classic example comes from the citations between academic papers as pointed out in the 1965 article "Networks of Scientific Papers" by Derek J. de Solla Price who went on to produce the first model of a citation network, the Price model. In this case the citation count of a paper is just the in-degree of the corresponding vertex of the citation network. This is an important measure in citation analysis. Court judgements provide another example as judges support their conclusions in one case by recalling other earlier decisions made in previous cases. A final example is provided by patents which must refer to earlier prior art, earlier patents which are relevant to the current patent claim. By taking the special properties of directed acyclic graphs into account, one can analyse citation networks with techniques not available when analysing the general graphs considered in many studies using network analysis. For instance transitive reduction gives a new insights into the citation distributions found in different applications highlighting clear differences in the mechanisms creating citations networks in different contexts. Another technique is main path analysis, which traces the citation links and suggests the most significant citation chains in a given citation graph.

在引用图(英语:citation graph)中, 每个顶点代表单篇著作,边代表著作之间的引用关系。1965年普莱斯的文章“科学文献的网络”是使用引用图的一个经典例子。[49]在引用图中,每篇论文的引用次数(英语:Citation impact)为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是法律裁判中,法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利,因为专利必须要提及现有技术,即已经公开的并且和本专利有关的先前专利。


The Price model is too simple to be a realistic model of a citation network but it is simple enough to allow for analytic solutions for some of its properties. Many of these can be found by using results derived from the undirected version of the Price model, the Barabási–Albert model. However, since Price's model gives a directed acyclic graph, it is a useful model when looking for analytic calculations of properties unique to directed acyclic graphs. For instance,

相较于网络科学中对一般图的研究,有向无环图的独特性质可以被用来作深层次分析。例如,传递规约可以呈现引用在不同应用领域的分布情况,这突出了不同领域中不同的引用网构造机制。[50]引用图的衍生概念还有主干道路分析(英语:Main path analysis),即对引用图中最显著的一条路径的分析。

价格模型太简单了,不可能成为引文网络的现实模型,但它足够简单,可以为它的某些特性提供解析解。其中许多可以通过使用价格模型的无向版本Barab得出的结果来发现ási–阿尔伯特模型。然而,由于Price的模型给出了一个有向无环图,因此在寻找有向无环图所特有的性质的解析计算时,它是一个有用的模型。例如,从添加到网络中的第n个节点到网络中的第一个节点的最长路径的长度按[52]{\displaystyle\ln(n)}

缩放。

  1. Thulasiraman, K.; Swamy, M. N. S. (1992), "5.7 Acyclic Directed Graphs", Graphs: Theory and Algorithms, John Wiley and Son, p. 118, ISBN 978-0-471-51356-8.
  2. 2.0 2.1 Bang-Jensen, Jørgen (2008), "2.1 Acyclic Digraphs", Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics (2nd ed.), Springer-Verlag, pp. 32–34, ISBN 978-1-84800-997-4.
  3. Christofides, Nicos (1975), Graph theory: an algorithmic approach, Academic Press, pp. 170–174.
  4. Mitrani, I. (1982), Simulation Techniques for Discrete Event Systems, Cambridge Computer Science Texts, vol. 14, Cambridge University Press, p. 27, ISBN 9780521282826.
  5. Kozen, Dexter (1992), The Design and Analysis of Algorithms, Monographs in Computer Science, Springer, p. 9, ISBN 978-0-387-97687-7.
  6. Banerjee, Utpal (1993), "Exercise 2(c)", Loop Transformations for Restructuring Compilers: The Foundations, Springer, p. 19, ISBN 978-0-7923-9318-4.
  7. Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), "2.3 Transitive Digraphs, Transitive Closures and Reductions", Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, pp. 36–39, ISBN 978-1-84800-998-1.
  8. Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, vol. 5, Springer, pp. 92–93, ISBN 978-3-642-32278-5.
  9. Sedgewick, Robert; Wayne, Kevin (2011), "4,2,25 Unique topological ordering", Algorithms (4th ed.), Addison-Wesley, pp. 598–599, ISBN 978-0-13-276256-4.
  10. Bender, Edward A.; Williamson, S. Gill (2005), "Example 26 (Linear extensions – topological sorts)", A Short Course in Discrete Mathematics, Dover Books on Computer Science, Courier Dover Publications, p. 142, ISBN 978-0-486-43946-4.
  11. 11.0 11.1 Robinson, R. W. (1973), "Counting labeled acyclic digraphs", in Harary, F. (ed.), New Directions in the Theory of Graphs, Academic Press, pp. 239–273. See also {{citation The number of DAGs on labeled vertices, for (without restrictions on the order in which these numbers appear in a topological ordering of the DAG) is 在有标记的顶点上的 DAGs 数量为(对这些数字在有向无环图的拓扑顺序中出现的顺序没有限制) |last1 = Harary | first1 = Frank | author1-link = Frank Harary | first2 = Edgar M. | last2 = Palmer | year = 1973| title = Graphical Enumeration | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.
  12. Weisstein, Eric W. "Weisstein's Conjecture". MathWorld.
  13. McKay, B. D.; Royle, G. F.; Wanless, I. M.; Oggier, F. E.; Sloane, N. J. A.; Wilf, H. (2004), "Acyclic digraphs and eigenvalues of (0,1)-matrices", Journal of Integer Sequences, 7, Article 04.3.3.
  14. Rebane, George; Pearl, Judea (1987), "The recovery of causal poly-trees from statistical data", in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987 (PDF), pp. 222–228https://en.wikipedia.org/wiki/Defekte_Weblinks?dwl={{{url}}} Seite nicht mehr abrufbar], Suche in Webarchiven: Kategorie:Wikipedia:Weblink offline (andere Namensräume)[http://timetravel.mementoweb.org/list/2010/Kategorie:Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL_fehlt .
  15. Furnas, George W.; Zacks, Jeff (1994), "Multitrees: enriching and reusing hierarchical structure", Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94), pp. 330–336, doi:10.1145/191666.191778, ISBN 978-0897916509, S2CID 18710118.
  16. 模板:Harvard citation, p. 495.
  17. 模板:Harvard citation, p. 496.
  18. 模板:Harvard citation, p. 38.
  19. Picard, Jean-Claude (1976), "Maximal closure of a graph and applications to combinatorial problems", Management Science, 22 (11): 1268–1272, doi:10.1287/mnsc.22.11.1268, MR 0403596.
  20. Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.
  21. Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.
  22. Cormen et al. 2001, p. 966.
  23. 模板:Harvard citation, p. 469.
  24. Wang, John X. (2002), What Every Engineer Should Know About Decision Making Under Uncertainty, CRC Press, p. 160, ISBN 978-0-8247-4373-4.
  25. Sapatnekar, Sachin (2004), Timing, Springer, p. 133, ISBN 978-1-4020-7671-8.
  26. Dennis, Jack B. (1974), "First version of a data flow procedure language", Programming Symposium, Lecture Notes in Computer Science, vol. 19, pp. 362–376, doi:10.1007/3-540-06859-7_145, ISBN 978-3-540-06859-4.
  27. Touati, Sid; de Dinechin, Benoit (2014), Advanced Backend Optimization, John Wiley & Sons, p. 123, ISBN 978-1-118-64894-0.
  28. Garland, Jeff; Anthony, Richard (2003), Large-Scale Software Architecture: A Practical Guide using UML, John Wiley & Sons, p. 215, ISBN 9780470856383.
  29. Gopnik, Alison; Schulz, Laura (2007), Causal Learning, Oxford University Press, p. 4, ISBN 978-0-19-803928-0.
  30. Shmulevich, Ilya; Dougherty, Edward R. (2010), Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks, Society for Industrial and Applied Mathematics, p. 58, ISBN 978-0-89871-692-4.
  31. Cowell, Robert G.; Dawid, A. Philip; Lauritzen, Steffen L.; Spiegelhalter, David J. (1999), "3.2.1 Moralization", Probabilistic Networks and Expert Systems, Springer, pp. 31–33, ISBN 978-0-387-98767-5.
  32. Dorf, Richard C. (1998), The Technology Management Handbook, CRC Press, p. 9模板:Hyphen7, ISBN 978-0-8493-8577-3.
  33. Boslaugh, Sarah (2008), Encyclopedia of Epidemiology, Volume 1, SAGE, p. 255, ISBN 978-1-4129-2816-8.
  34. Pearl, Judea (1995), "Causal diagrams for empirical research", Biometrika, 82 (4): 669–709, doi:10.1093/biomet/82.4.669.
  35. Al-Mutawa, H. A.; Dietrich, J.; Marsland, S.; McCartin, C. (2014), "On the shape of circular dependencies in Java programs", 23rd Australian Software Engineering Conference, IEEE, pp. 48–57, doi:10.1109/ASWEC.2014.15, ISBN 978-1-4799-3149-1, S2CID 17570052.
  36. 36.0 36.1 Gross, Jonathan L.; Yellen, Jay; Zhang, Ping (2013), Handbook of Graph Theory (2nd ed.), CRC Press, p. 1181, ISBN 978-1-4398-8018-0.
  37. Srikant, Y. N.; Shankar, Priti (2007), The Compiler Design Handbook: Optimizations and Machine Code Generation (2nd ed.), CRC Press, pp. 19–39, ISBN 978-1-4200-4383-9.