<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.swarma.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E5%AD%99%E9%92%A6%E8%B4%B5</id>
	<title>集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.swarma.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E5%AD%99%E9%92%A6%E8%B4%B5"/>
	<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/%E5%AD%99%E9%92%A6%E8%B4%B5"/>
	<updated>2026-11-02T20:35:52Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25237</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25237"/>
		<updated>2021-08-02T11:35:43Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 什么问题 对应 Pearl 的研究，问题被解决得 怎么样？ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 谁是 J. Pearl ? ==&lt;br /&gt;
1936年出生&lt;br /&gt;
&lt;br /&gt;
教授，工作于计算机科学系  加州大学洛杉矶分校&lt;br /&gt;
&lt;br /&gt;
获得图灵奖在2012年，因为发明贝叶斯网络&lt;br /&gt;
&lt;br /&gt;
[http://bayes.cs.ucla.edu/jp_home.html J. Pearl 的网页]&lt;br /&gt;
&lt;br /&gt;
== 什么问题 对应 Pearl 的研究，问题被解决得 怎么样？ ==&lt;br /&gt;
&lt;br /&gt;
=== 问题1：如何更新信念  依据不确定的信息？[1] ===&lt;br /&gt;
&lt;br /&gt;
* '''使用经典的逻辑，推理出现例外'''&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
可以修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，如何推理出结论？'''&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* '''在推理中，如何模仿信息平行地传播 在大脑中？'''&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，怎样推理 更好？'''&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;br /&gt;
&lt;br /&gt;
== 说明 ==&lt;br /&gt;
J. Pearl 发表很多论文，是困难的  去编写问题 从Pearl 的论文 使用自己的语言。因此，我采用多轮次去编写。每个轮次编写1~2个问题。更多问题将编写。&lt;br /&gt;
&lt;br /&gt;
* 如何编写问题？ 请参考“[https://www.bigphysics.org/index.php/%E5%88%86%E7%B1%BB:%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A%E5%86%99%E4%BD%9C V形图]”&lt;br /&gt;
&lt;br /&gt;
* [https://faixz6wsb8.feishu.cn/docs/doccnbL31C8uMNOd2M0LrnZcGhg 如何编写学者词条？]&lt;br /&gt;
&lt;br /&gt;
* [https://faixz6wsb8.feishu.cn/docs/doccnz7ACovB7pTqhbS3nQMn5Pb 如何多人一起  编写学者词条？]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25236</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25236"/>
		<updated>2021-08-02T11:35:03Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 说明 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 谁是 J. Pearl ? ==&lt;br /&gt;
1936年出生&lt;br /&gt;
&lt;br /&gt;
教授，工作于计算机科学系  加州大学洛杉矶分校&lt;br /&gt;
&lt;br /&gt;
获得图灵奖在2012年，因为发明贝叶斯网络&lt;br /&gt;
&lt;br /&gt;
[http://bayes.cs.ucla.edu/jp_home.html J. Pearl 的网页]&lt;br /&gt;
&lt;br /&gt;
== '''什么问题 对应 Pearl 的研究，问题被解决得 怎么样？''' ==&lt;br /&gt;
&lt;br /&gt;
=== 问题1：如何更新信念  依据不确定的信息？[1] ===&lt;br /&gt;
&lt;br /&gt;
* '''使用经典的逻辑，推理出现例外'''&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
可以修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，如何推理出结论？'''&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* '''在推理中，如何模仿信息平行地传播 在大脑中？'''&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，怎样推理 更好？'''&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;br /&gt;
&lt;br /&gt;
== 说明 ==&lt;br /&gt;
J. Pearl 发表很多论文，是困难的  去编写问题 从Pearl 的论文 使用自己的语言。因此，我采用多轮次去编写。每个轮次编写1~2个问题。更多问题将编写。&lt;br /&gt;
&lt;br /&gt;
* 如何编写问题？ 请参考“[https://www.bigphysics.org/index.php/%E5%88%86%E7%B1%BB:%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A%E5%86%99%E4%BD%9C V形图]”&lt;br /&gt;
&lt;br /&gt;
* [https://faixz6wsb8.feishu.cn/docs/doccnbL31C8uMNOd2M0LrnZcGhg 如何编写学者词条？]&lt;br /&gt;
&lt;br /&gt;
* [https://faixz6wsb8.feishu.cn/docs/doccnz7ACovB7pTqhbS3nQMn5Pb 如何多人一起  编写学者词条？]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25235</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25235"/>
		<updated>2021-08-02T11:27:44Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 说明 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 谁是 J. Pearl ? ==&lt;br /&gt;
1936年出生&lt;br /&gt;
&lt;br /&gt;
教授，工作于计算机科学系  加州大学洛杉矶分校&lt;br /&gt;
&lt;br /&gt;
获得图灵奖在2012年，因为发明贝叶斯网络&lt;br /&gt;
&lt;br /&gt;
[http://bayes.cs.ucla.edu/jp_home.html J. Pearl 的网页]&lt;br /&gt;
&lt;br /&gt;
== '''什么问题 对应 Pearl 的研究，问题被解决得 怎么样？''' ==&lt;br /&gt;
&lt;br /&gt;
=== 问题1：如何更新信念  依据不确定的信息？[1] ===&lt;br /&gt;
&lt;br /&gt;
* '''使用经典的逻辑，推理出现例外'''&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
可以修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，如何推理出结论？'''&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* '''在推理中，如何模仿信息平行地传播 在大脑中？'''&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，怎样推理 更好？'''&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;br /&gt;
&lt;br /&gt;
== 说明 ==&lt;br /&gt;
J. Pearl 发表很多论文，是困难的  去编写问题 从Pearl 的论文 使用自己的语言。因此，我采用多轮次去编写。每个轮次编写1~2个问题。&lt;br /&gt;
&lt;br /&gt;
* 如何编写问题？ 请参考“[https://www.bigphysics.org/index.php/%E5%88%86%E7%B1%BB:%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A%E5%86%99%E4%BD%9C V形图]”&lt;br /&gt;
&lt;br /&gt;
* [https://faixz6wsb8.feishu.cn/docs/doccnbL31C8uMNOd2M0LrnZcGhg 如何编写学者词条？]&lt;br /&gt;
&lt;br /&gt;
* [https://faixz6wsb8.feishu.cn/docs/doccnz7ACovB7pTqhbS3nQMn5Pb 如何多人一起  编写学者词条？]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25234</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25234"/>
		<updated>2021-08-02T11:26:50Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 说明 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 谁是 J. Pearl ? ==&lt;br /&gt;
1936年出生&lt;br /&gt;
&lt;br /&gt;
教授，工作于计算机科学系  加州大学洛杉矶分校&lt;br /&gt;
&lt;br /&gt;
获得图灵奖在2012年，因为发明贝叶斯网络&lt;br /&gt;
&lt;br /&gt;
[http://bayes.cs.ucla.edu/jp_home.html J. Pearl 的网页]&lt;br /&gt;
&lt;br /&gt;
== '''什么问题 对应 Pearl 的研究，问题被解决得 怎么样？''' ==&lt;br /&gt;
&lt;br /&gt;
=== 问题1：如何更新信念  依据不确定的信息？[1] ===&lt;br /&gt;
&lt;br /&gt;
* '''使用经典的逻辑，推理出现例外'''&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
可以修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，如何推理出结论？'''&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* '''在推理中，如何模仿信息平行地传播 在大脑中？'''&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，怎样推理 更好？'''&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;br /&gt;
&lt;br /&gt;
== 说明 ==&lt;br /&gt;
J. Pearl 发表很多论文，是困难的  去编写问题 从Pearl 的论文 使用自己的语言。因此，我采用多轮次去编写。每个轮次编写1~2个问题。&lt;br /&gt;
&lt;br /&gt;
如何编写问题？ 请参考“[https://www.bigphysics.org/index.php/%E5%88%86%E7%B1%BB:%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A%E5%86%99%E4%BD%9C V形图]”&lt;br /&gt;
&lt;br /&gt;
[https://faixz6wsb8.feishu.cn/docs/doccnbL31C8uMNOd2M0LrnZcGhg 如何编写学者词条？]&lt;br /&gt;
&lt;br /&gt;
[https://faixz6wsb8.feishu.cn/docs/doccnz7ACovB7pTqhbS3nQMn5Pb 如何多人一起  编写学者词条？]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25233</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25233"/>
		<updated>2021-08-02T11:26:23Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 谁是 J. Pearl ? ==&lt;br /&gt;
1936年出生&lt;br /&gt;
&lt;br /&gt;
教授，工作于计算机科学系  加州大学洛杉矶分校&lt;br /&gt;
&lt;br /&gt;
获得图灵奖在2012年，因为发明贝叶斯网络&lt;br /&gt;
&lt;br /&gt;
[http://bayes.cs.ucla.edu/jp_home.html J. Pearl 的网页]&lt;br /&gt;
&lt;br /&gt;
== '''什么问题 对应 Pearl 的研究，问题被解决得 怎么样？''' ==&lt;br /&gt;
&lt;br /&gt;
=== 问题1：如何更新信念  依据不确定的信息？[1] ===&lt;br /&gt;
&lt;br /&gt;
* '''使用经典的逻辑，推理出现例外'''&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
可以修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，如何推理出结论？'''&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* '''在推理中，如何模仿信息平行地传播 在大脑中？'''&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，怎样推理 更好？'''&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;br /&gt;
&lt;br /&gt;
=== 说明 ===&lt;br /&gt;
J. Pearl 发表很多论文，是困难的  去编写问题 从Pearl 的论文 使用自己的语言。因此，我采用多轮次去编写。每个轮次编写1~2个问题。&lt;br /&gt;
&lt;br /&gt;
如何编写问题？ 请参考“[https://www.bigphysics.org/index.php/%E5%88%86%E7%B1%BB:%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A%E5%86%99%E4%BD%9C V形图]”&lt;br /&gt;
&lt;br /&gt;
[https://faixz6wsb8.feishu.cn/docs/doccnbL31C8uMNOd2M0LrnZcGhg 如何编写学者词条？]&lt;br /&gt;
&lt;br /&gt;
[https://faixz6wsb8.feishu.cn/docs/doccnz7ACovB7pTqhbS3nQMn5Pb 如何多人一起  编写学者词条？]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25232</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=25232"/>
		<updated>2021-08-02T10:58:24Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 谁是 J. Pearl ? ==&lt;br /&gt;
1936年出生&lt;br /&gt;
&lt;br /&gt;
教授，工作于计算机科学系  加州大学洛杉矶分校&lt;br /&gt;
&lt;br /&gt;
获得图灵奖在2012年，因为发明贝叶斯网络&lt;br /&gt;
&lt;br /&gt;
J. Pearl 的网页&lt;br /&gt;
&lt;br /&gt;
== '''什么问题 对应 Pearl 的研究，问题被解决得 怎么样？''' ==&lt;br /&gt;
&lt;br /&gt;
=== 问题1：如何更新信念  依据不确定的信息？[1] ===&lt;br /&gt;
&lt;br /&gt;
* '''使用经典的逻辑，推理出现例外'''&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
可以修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，如何推理出结论？'''&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* '''在推理中，如何模仿信息平行地传播 在大脑中？'''&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* '''依据不确定的信息，怎样推理 更好？'''&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24759</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24759"/>
		<updated>2021-07-26T08:14:34Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= '''如何更新信念  依据不确定的信息？[1]''' =&lt;br /&gt;
&lt;br /&gt;
* 使用经典的逻辑，推理出现例外&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* 依据不确定的信息，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* 在推理中，如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* 依据不确定的信息，怎样推理 更好？&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
参考文献&lt;br /&gt;
&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;br /&gt;
&lt;br /&gt;
'''这是一个 Pearl研究的问题，更多问题 Pearl 研究的 正在整理。'''&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24758</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24758"/>
		<updated>2021-07-26T08:14:15Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''如何更新信念  依据不确定的信息？[1]'''&lt;br /&gt;
&lt;br /&gt;
* 使用经典的逻辑，推理出现例外&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* 依据不确定的信息，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* 在推理中，如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* 依据不确定的信息，怎样推理 更好？&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks，Pearl 正在研究。&lt;br /&gt;
&lt;br /&gt;
参考文献&lt;br /&gt;
&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;br /&gt;
&lt;br /&gt;
'''这是一个 Pearl研究的问题，更多问题 Pearl 研究的 正在整理。'''&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24739</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24739"/>
		<updated>2021-07-26T07:23:27Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 如何更新信念  来自不确定事实？[1] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''如何更新信念  依据不确定的事实？[1]''' =&lt;br /&gt;
&lt;br /&gt;
* 使用经典的逻辑，出现例外&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* 如果事实不确定，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* 如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* 未来做什么？&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks&lt;br /&gt;
&lt;br /&gt;
参考文献&lt;br /&gt;
&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24736</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24736"/>
		<updated>2021-07-26T07:16:47Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 如何更新信念  从不确定事实？[1] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''如何更新信念  来自不确定事实？[1]''' =&lt;br /&gt;
&lt;br /&gt;
* 使用经典的逻辑，出现例外&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* 如果事实不确定，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* 如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* 未来做什么？&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks&lt;br /&gt;
&lt;br /&gt;
参考文献&lt;br /&gt;
&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24730</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24730"/>
		<updated>2021-07-26T07:02:26Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= '''如何更新信念  从不确定事实？[1]''' =&lt;br /&gt;
&lt;br /&gt;
* 使用经典的逻辑，出现例外&lt;br /&gt;
&lt;br /&gt;
例如：（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
从（1）和（2）推理出： 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* 如果事实不确定，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* 如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* 未来做什么？&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks&lt;br /&gt;
&lt;br /&gt;
参考文献&lt;br /&gt;
&lt;br /&gt;
'''[1]J. Pearl''', &amp;quot;A Personal Journey into Bayesian Networks,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UCLA Cognitive Systems Laboratory, Technical Report (R-476), May 2018.&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24720</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24720"/>
		<updated>2021-07-26T06:30:45Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''如何更新信念 从不确定事实？'''&lt;br /&gt;
&lt;br /&gt;
* 使用经典的逻辑，出现例外&lt;br /&gt;
&lt;br /&gt;
例如：&lt;br /&gt;
&lt;br /&gt;
（1）如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
（2）如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
推理出 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* 如果事实不确定，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* 如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* 未来发展：&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24718</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24718"/>
		<updated>2021-07-26T06:30:05Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;如何更新信念 从不确定事实？&lt;br /&gt;
&lt;br /&gt;
* 使用经典的逻辑，出现例外&lt;br /&gt;
&lt;br /&gt;
例如：&lt;br /&gt;
&lt;br /&gt;
如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
推出 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
* 如果事实不确定，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
* 如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
* 未来发展：&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24708</id>
		<title>Judea Pearl</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Judea_Pearl&amp;diff=24708"/>
		<updated>2021-07-26T06:06:50Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：建立内容为“如何更新信念 从不确定事实？  使用经典的逻辑，出现例外  例如  如果我家的屋顶湿，邻居家的屋顶湿  如果用水浇我家的…”的新页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;如何更新信念 从不确定事实？&lt;br /&gt;
&lt;br /&gt;
使用经典的逻辑，出现例外&lt;br /&gt;
&lt;br /&gt;
例如&lt;br /&gt;
&lt;br /&gt;
如果我家的屋顶湿，邻居家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
如果用水浇我家的屋顶，我家的屋顶湿&lt;br /&gt;
&lt;br /&gt;
推出 如果用水浇我家的屋顶，邻居家的屋顶湿。&lt;br /&gt;
&lt;br /&gt;
应该修改为：如果我家的屋顶湿，邻居家的屋顶湿，不包括用水浇我家的屋顶。&lt;br /&gt;
&lt;br /&gt;
所以逻辑 需要覆盖例外情况，这样的逻辑称为Default Logic。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如果事实不确定，如何推理出结论？&lt;br /&gt;
&lt;br /&gt;
可以使用Fuzzy Logics，给结论赋予一系列可能的事实。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如何模仿信息平行地传播 在大脑中？&lt;br /&gt;
&lt;br /&gt;
使用Beysian Networks, 信息在polytrees中传播。如果传播路径有环（loops）, Appropriate Method 能够高效的、准确的解决。在Appropriate method中，信息如何在loops传播，目前不知道。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
未来发展：&lt;br /&gt;
&lt;br /&gt;
Causal Bayesian Networks&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%94%A8%E6%88%B7:%E5%AD%99%E9%92%A6%E8%B4%B5&amp;diff=24011</id>
		<title>用户:孙钦贵</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%94%A8%E6%88%B7:%E5%AD%99%E9%92%A6%E8%B4%B5&amp;diff=24011"/>
		<updated>2021-06-27T08:07:22Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi，我是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''孙钦贵''' &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
博士在读，关注 因果关系发现、因果推理、机器学习&lt;br /&gt;
&lt;br /&gt;
集智俱乐部是知识的乐园，因果科学有趣。欢迎加入，一起玩耍！&lt;br /&gt;
&lt;br /&gt;
联系我：&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''kinguin@@163.com''' &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:孙钦贵的logo.jpeg|thumb|220x220px|孙钦贵的LOGO]]&lt;br /&gt;
[[File:孙钦贵.jpg|thumb|220x220px|孙钦贵]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%94%A8%E6%88%B7:%E5%AD%99%E9%92%A6%E8%B4%B5&amp;diff=24010</id>
		<title>用户:孙钦贵</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%94%A8%E6%88%B7:%E5%AD%99%E9%92%A6%E8%B4%B5&amp;diff=24010"/>
		<updated>2021-06-27T08:03:56Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi，我是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''孙钦贵''' &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
博士在读，关注 因果关系发现、因果推理、机器学习&lt;br /&gt;
&lt;br /&gt;
欢迎来 &amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; [https://space.bilibili.com/98643204 '''''bilibili个人频道'''''] &amp;lt;/font&amp;gt;玩耍！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
联系我：&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''kinguin@@163.com''' &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:孙钦贵的logo.jpeg|thumb|220x220px|孙钦贵的LOGO]]&lt;br /&gt;
[[File:孙钦贵.jpg|thumb|220x220px|孙钦贵]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%94%A8%E6%88%B7:%E5%AD%99%E9%92%A6%E8%B4%B5&amp;diff=24009</id>
		<title>用户:孙钦贵</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%94%A8%E6%88%B7:%E5%AD%99%E9%92%A6%E8%B4%B5&amp;diff=24009"/>
		<updated>2021-06-27T08:02:18Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi，我是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''孙钦贵''' &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
博士在读，关注 因果关系发现、因果推理、机器学习&lt;br /&gt;
&lt;br /&gt;
点击 &amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; [https://space.bilibili.com/98643204 '''''bilibili'''''] &amp;lt;/font&amp;gt;，互相关注呀！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
联系我：&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''kinguin@@163.com''' &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:孙钦贵的logo.jpeg|thumb|220x220px|孙钦贵的LOGO]]&lt;br /&gt;
[[File:孙钦贵.jpg|thumb|220x220px|孙钦贵]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%88%86%E5%B1%82%E9%9A%8F%E6%9C%BA%E8%AF%95%E9%AA%8C&amp;diff=23921</id>
		<title>分层随机试验</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%88%86%E5%B1%82%E9%9A%8F%E6%9C%BA%E8%AF%95%E9%AA%8C&amp;diff=23921"/>
		<updated>2021-06-24T10:00:39Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 优势 Advantage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Graphic_breakdown_of_stratified_random_sampling.jpeg|thumb|220x220px|分层随机抽样的图形分解 Graphic breakdown of stratified random sampling]]&lt;br /&gt;
&lt;br /&gt;
在统计学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分层随机试验 Stratified randomization''' &amp;lt;/font&amp;gt;是一种抽样方法，首先将整个研究&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''总体 Population''' &amp;lt;/font&amp;gt;层为具有相同属性或特征的子群，称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分层 Attributes'''  &amp;lt;/font&amp;gt;，然后从分层组中进行简单随机抽样，在抽样过程的任何阶段，随机、完全偶然地无偏抽取同一子群中的元素。&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{Citation|title=Simple random sample|date=2020-03-18|url=https://en.wikipedia.org/w/index.php?title=Simple_random_sample&amp;amp;oldid=946144051|work=Wikipedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;分层随机试验被认为是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分层抽样 Stratified sampling''' &amp;lt;/font&amp;gt;的一个细分。当共享属性部分存在，并且在被调查总体的不同亚群之间有很大差异时，应该采用分层随机试验。因此，在取样过程中需要特别考虑或明确区分。&amp;lt;ref&amp;gt;{{Citation|title=Stratified sampling|date=2020-02-09|url=https://en.wikipedia.org/w/index.php?title=Stratified_sampling&amp;amp;oldid=939938944|work=Wikipedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;这种抽样方法应区别于&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''整群抽样方法 Cluster sampling''' &amp;lt;/font&amp;gt;，整群抽样方法是在整个群体中选择一个简单的随机抽样来代表整个总体，或分层系统抽样方法，在分层过程之后进行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''系统抽样 Systematic sampling''' &amp;lt;/font&amp;gt;。分层随机抽样有时也称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定额随机抽样 Quota random sampling''' &amp;lt;/font&amp;gt;。&amp;lt;ref name=&amp;quot;:3&amp;quot;&amp;gt;{{Cite web|url=https://www.investopedia.com/ask/answers/032615/what-are-some-examples-stratified-random-sampling.asp|title=How Stratified Random Sampling Works|last=Nickolas|first=Steven|date=July 14, 2019|website=Investopedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 分层随机试验的步骤 Steps for stratified randomization==&lt;br /&gt;
&lt;br /&gt;
分层随机试验在目标总体异&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''质性 Heterogeneous'''&amp;lt;/font&amp;gt;的情况下非常有用， 它能有效地显示研究中的趋势或特征在不同阶层之间的差异。&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;当进行分层随机试验时，应采取以下8个步骤：&amp;lt;ref name=&amp;quot;:4&amp;quot;&amp;gt;{{Cite web|url=https://www.statisticshowto.com/stratified-random-sample/|title=Stratified Random Sample: Definition, Examples|last=Stephanie|date=Dec 11, 2013|website=Statistics How To|language=en-US|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:5&amp;quot;&amp;gt;{{Cite web|url=https://www.questionpro.com/blog/stratified-random-sampling/|title=Stratified Random Sampling: Definition, Method and Examples|date=2018-03-13|website=QuestionPro|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#定义目标总体&lt;br /&gt;
#定义分层&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''变量 Variables''' &amp;lt;/font&amp;gt;并决定要创建的分层数量。确定分层变量的标准,包括年龄、社会经济地位、国籍、种族、教育程度等，并应与研究目标相一致。理想情况下，应该使用4-6个阶层，因为任何分层变量的增加将提高其中一些变量抵消其他变量的影响的概率。&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt;&lt;br /&gt;
#使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''抽样框架 Sampling frame''' &amp;lt;/font&amp;gt;评估目标总体中的所有元素。之后根据&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖率 Coverage''' &amp;lt;/font&amp;gt; 和分组进行更改。&lt;br /&gt;
#列出所有的元素并考虑抽样结果。每个阶层应该相互排斥 Mutually exclusive，加起来涵盖总体的所有成员，而总体的每一个成员应该属于唯一的阶层，和其他差异最小的成员一起。&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt;&lt;br /&gt;
#决定随机抽样的选择标准。这可以手动完成，也可以用设计好的计算机程序完成。&lt;br /&gt;
#为所有元素分配一个随机且唯一的编号，然后根据分配的编号对这些元素进行排序。&lt;br /&gt;
#回顾每一层的大小（Size）和每一层中所有元素的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数值分布 Numerical distribution''' &amp;lt;/font&amp;gt;。确定抽样类型，按比例或不按比例分层抽样。&lt;br /&gt;
#按照第5步中的规定进行所选的随机抽样。至少，必须从每个阶层中选择一种元素，以便最终样品包括每个阶层的代表。如果从每个阶层中选择两个或两个以上的元素，则可以计算所收集数据的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''误差范围 Error margins''' &amp;lt;/font&amp;gt;。&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 技术 Techniques ==&lt;br /&gt;
[[File:Simple_random_sampling_after_stratification_step.png|thumb|分层后简单随机抽样]]&lt;br /&gt;
&lt;br /&gt;
分层随机试验决定一个或多个预后因素（prognostic factors），在平均意义下，这些预后因素使每个亚组具有相似的进入特征。通过检查先前研究的结果，可以准确地确定患者因素。&amp;lt;ref&amp;gt;{{Cite journal|last=Sylvester|first=Richard|date=December 1982|title=Fundamentals of clinical trials|journal=Controlled Clinical Trials|volume=3|issue=4|pages=385–386|doi=10.1016/0197-2456(82)90029-0|issn=0197-2456}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
子群的数量可以通过乘以每个因素的层数来计算。在随机化前或随机化时测量因素，并根据测量结果将实验对象分为若干亚组或层。&lt;br /&gt;
&lt;br /&gt;
在每一层中，可以应用几种随机试验策略，包括&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''简单随机试验 Simple randomization''' &amp;lt;/font&amp;gt;、&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分块随机试验 Blocked randomization''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最小化试验 Minimization''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
=== 分层内简单随机抽样 Simple randomization within strata ===&lt;br /&gt;
&lt;br /&gt;
简单随机试验被认为是在每个阶层中分配受试者的最简单方法。对于每个任务，受试者被完全随机地分配到每个组中。尽管简单的随机化很容易进行，但由于取样量小，分配不均，因此在含有100多个样本的地层中，通常采用简单的随机化方法。尽管很容易进行，但简单随机试验通常应用于包含 100 个以上样本的层，因为小样本量会使分配不均等。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===分层内的区块随机试验 Block randomization within strata===&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 区块随机试验 Block randomization &amp;lt;/font&amp;gt;'''，有时称为置换区块随机试验，应用区块将来自同一阶层的受试者平均分配到研究中的每个组。 在区块随机试验中，指定了分配比率（一个特定组与其他组的数量之比）和组大小。 块大小必须是处理次数的倍数，以便每个层中的样本可以按预期比例分配到处理组。&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Cite book|last=Pocock, Stuart J.|title=Clinical trials : a practical approach|publisher=John Wiley &amp;amp; Sons Ltd|date=Jul 1, 2013|isbn=978-1-118-79391-6|location=Chichester|oclc=894581169}}&amp;lt;/ref&amp;gt;例如，在一项关于乳腺癌的临床试验中，应该有 4 或 8 个层次，其中年龄和淋巴结状态是两个预后因素（prognostic factors），每个因素分为两个水平。 可以通过多种方式将不同的区块分配给样本，包括随机列表（random list）和计算机编程。&amp;lt;ref&amp;gt;{{Cite web|url=https://www.sealedenvelope.com/help/redpill/latest/block/|title=Sealed Envelope {{!}} Random permuted blocks|date=Feb 25, 2020|website=www.sealedenvelope.com|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Citation|last1=Friedman|first1=Lawrence M.|title=Introduction to Clinical Trials|date=2010|work=Fundamentals of Clinical Trials|pages=1–18|publisher=Springer New York|isbn=978-1-4419-1585-6|last2=Furberg|first2=Curt D.|last3=DeMets|first3=David L.|doi=10.1007/978-1-4419-1586-3_1}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
区块随机试验通常用于样本量较大的实验，以避免具有重要特征的样本分配不平衡。 在某些对随机试验有严格要求的领域，如临床试验，当没有对导体（conductors）进行盲法处理且区块块大小有限时，分配是可预测的。 分层中的块置换随机试验可能会随着分层数量的增加和样本量的限制而导致分层之间的样本不平衡，例如，有可能找不到符合某些分层特征的样本&amp;lt;ref&amp;gt;{{Cite book|title=Fundamentals of clinical trials|others=Friedman, Lawrence M., 1942-, Furberg, Curt,, DeMets, David L., 1944-, Reboussin, David,, Granger, Christopher B.|date=27 August 2015|isbn=978-3-319-18539-2|edition=Fifth|location=New York|oclc=919463985}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==最小化方法 Minimization method==&lt;br /&gt;
&lt;br /&gt;
为了保证每个处理组的相似性，尝试了“最小化”方法，这比分层内的随机排列块更直接。在最小化方法中，根据每个处理组中的样本总和将每个层中的样本分配到处理组中，这使得受试者数量在组间保持平衡。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; 如果多个治疗组的总和相同，则将进行简单的随机化以分配治疗。在实践中，最小化方法需要根据预后因素（prognostic factors）跟踪治疗分配的每日记录，这可以通过使用一组索引卡进行记录来有效完成。最小化方法有效地避免了组间不平衡，但比块随机化涉及的随机过程更少，因为随机过程仅在治疗的总人数相同时进行。一个可行的解决方案是应用额外的随机列表，这使得具有较小边际总数的总和的治疗组具有更高的机会（例如 ¾），而其他治疗具有较低的机会（例如 ¼）。&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{Cite journal|last=Pocock|first=S. J.|date=March 1979|title=Allocation of Patients to Treatment in Clinical Trials|journal=Biometrics|volume=35|issue=1|pages=183–197|doi=10.2307/2529944|jstor=2529944|pmid=497334|issn=0006-341X}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用 Application==&lt;br /&gt;
&lt;br /&gt;
[[File:Confounding_factors_are_important_to_consider_in_clinical_trials.png|thumb|219x219px|混杂因素在临床试验中很重要]]&lt;br /&gt;
&lt;br /&gt;
分层随机试验在需要对特定层进行不同权重的情况下非常有用且富有成效。 通过这种方式，研究人员可以操纵每个层次的选择机制，以放大或最小化调查结果中所需的特征。&amp;lt;ref&amp;gt;{{Cite web|url=https://www.thoughtco.com/stratified-sampling-3026731|title=Understanding Stratified Samples and How to Make Them|last=Crossman|first=Ashley|date=Jan 27, 2020|website=ThoughtCo|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当研究人员打算寻找两个或多个层次之间的关联时，分层随机化很有帮助，因为简单的随机抽样会导致更大的可能出现目标群体的不平等代表性。当研究人员希望消除观察性研究中的'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 混杂因素 Confounder &amp;lt;/font&amp;gt;'''时，它也很有用，因为分层随机试验允许调整'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 协方差 Covariances &amp;lt;/font&amp;gt;'''和 '''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; p 值 p-values &amp;lt;/font&amp;gt;'''以获得更准确的结果。 &amp;lt;ref&amp;gt;{{Cite book|last=Hennekens, Charles H.|title=Epidemiology in medicine|date=1987|publisher=Little, Brown|others=Buring, Julie E., Mayrent, Sherry L.|isbn=0-316-35636-0|edition=1st|location=Boston, Massachusetts|oclc=16890223}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
与简单随机抽样相比，分层随机抽样的统计准确度也更高，因为选择代表总体的元素具有高度相关性。&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt;与分层之间的差异相比，分层内的差异要小得多。因此，随着样本间差异的最小化，'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 标准差 Standard deviation &amp;lt;/font&amp;gt;'''也会随之收紧，从而导致最终结果的准确性更高，误差更小。当研究资金紧张时，这有效地减少了所需的样本量并提高了抽样的'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 成本效益 Cost-effectiveness &amp;lt;/font&amp;gt;'''。&lt;br /&gt;
&lt;br /&gt;
在现实生活中，分层随机试验可应用于选举投票结果、社会群体收入差距调查或各国教育机会的衡量。 &amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==临床试验中的分层随机试验 Stratified randomization in clinical trials==&lt;br /&gt;
&lt;br /&gt;
在'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 临床试验 Clinical trials &amp;lt;/font&amp;gt;'''中，根据患者的社会和个人背景或与研究相关的任何因素对患者进行分层，以匹配整个患者群体中的每个组。 这样做的目的是建立临床/预后因素（prognostic factor）的平衡，因为如果研究设计不平衡，试验将不会产生有效的结果。&amp;lt;ref&amp;gt;{{Cite book|last1=Polit|first1=DF|title=Nursing Research: Generating and Assessing Evidence for Nursing Practice, 9th ed.|last2=Beck|first2=CT|publisher=Lippincott Williams &amp;amp; Wilkins.|year=2012|location=Philadelphia, USA: Wolters Klower Health}}&amp;lt;/ref&amp;gt;  分层随机化的步骤非常重要，因为它试图确保没有偏见、有意或无意地影响所研究患者样本的代表性。 &amp;lt;ref&amp;gt;{{Cite web|url=https://www.omixon.com/patient-stratification-in-clinical-trials/|title=Patient Stratification in Clinical Trials|date=2014-12-01|website=Omixon {{!}} NGS for HLA|language=en-US|access-date=2020-04-26}}&amp;lt;/ref&amp;gt;  它增加了研究能力，尤其是在小型临床试验中（n&amp;lt;400），因为这些已知的临床特征分层被认为会影响干预的结果。&amp;lt;ref&amp;gt;{{Cite web|url=https://www.statisticshowto.com/stratified-randomization/|title=Stratified Randomization in Clinical Trials|last=Stephanie|date=2016-05-20|website=Statistics How To|language=en-US|access-date=2020-04-26}}&amp;lt;/ref&amp;gt;它有助于防止在临床研究中受到高度重视的 '''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; I 型错误 Type I error &amp;lt;/font&amp;gt;'''的发生。 &amp;lt;ref name=&amp;quot;:6&amp;quot;&amp;gt;{{Cite journal|last=Kernan|first=W|date=Jan 1999|title=Stratified Randomization for Clinical Trials|journal=Journal of Clinical Epidemiology|volume=52|issue=1|pages=19–26|doi=10.1016/S0895-4356(98)00138-3|pmid=9973070}}&amp;lt;/ref&amp;gt;它还对主动对照等效试验的样本量产生重要影响，并且在理论上有助于'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 亚组分析 Subgroup analysis &amp;lt;/font&amp;gt;'''和'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 中期分析 Interim analysis &amp;lt;/font&amp;gt;'''。 &amp;lt;ref name=&amp;quot;:6&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==优势 Advantage==&lt;br /&gt;
分层随机试验的优点包括：&lt;br /&gt;
&lt;br /&gt;
#分层随机试验可以准确反映一般人群的结果，因为应用影响因素对整个样本进行分层并平衡样本在治疗组之间的重要特征。例如，采用分层随机化从人群中抽取 100 名样本可以保证每个治疗组的男女平衡，而使用简单随机化可能会导致一组只有 20 名男性，而另一组有 80 名男性。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
#分层随机试验比其他抽样方法（例如'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 整群抽样 Cluster sampling &amp;lt;/font&amp;gt;'''、简单随机抽样 和'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 系统抽样 Systematic sampling &amp;lt;/font&amp;gt;'''或'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 非概率方法 Non-probability methods &amp;lt;/font&amp;gt;'''）的误差更小，因为可以使分层内的测量具有较低的标准差。在某些情况下，将分割的分层随机试验比简单地随机试验一般样本更易于管理且成本更低。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
#由于分层随机试验本质的精确性，团队更容易接受分层样本的训练。&lt;br /&gt;
#由于这种方法的统计准确性，研究人员可以通过分析小样本得到非常有用的结果。&lt;br /&gt;
#这种抽样技术涵盖了广泛的总体，因为已经对分层划分进行了完整的控制。&lt;br /&gt;
# 有时需要分层随机试验来估计总体中各组的总体参数。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==缺点 Disadvantage ==&lt;br /&gt;
&lt;br /&gt;
分层随机试验的限制包括：&lt;br /&gt;
&lt;br /&gt;
#分层随机试验首先参考预后因素将样本分成若干层，但有可能无法划分样本。在应用中，在某些情况下，预后因素的重要性缺乏严格的认可，这可能进一步导致偏差。这就是为什么在将因素纳入分层之前应该检查因素产生影响的潜力的原因。在某些因素对结果的影响无法得到批准（approved）的情况下，建议进行无分层随机试验。 &amp;lt;ref&amp;gt;{{Cite web|url=https://www.investopedia.com/ask/answers/041615/what-are-advantages-and-disadvantages-stratified-random-sampling.asp|title=Pros and Cons of Stratified Random Sampling|last=Murphy|first=Chris B.|date=Apr 13, 2019|website=Investopedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
#如果可用数据不能代表整个亚组总体，则认为亚组大小具有相同的重要性。在某些应用中，子组大小是根据可用数据量来决定的，而不是将样本大小缩放到子组大小，这会在因子效应中引入偏差。在某些需要对数据进行方差分层的情况下，子组方差差异显着，使得每个子组的抽样规模无法保证与整个子组总体成正比。&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{Citation|last1=Glass|first1=Aenne|title=Potential Advantages and Disadvantages of Stratification in Methods of Randomization|date=2014|work=Springer Proceedings in Mathematics &amp;amp; Statistics|pages=239–246|publisher=Springer New York|isbn=978-1-4939-2103-4|last2=Kundt|first2=Guenther|doi=10.1007/978-1-4939-2104-1_23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
#如果人口不能完全分配到层中，则不能应用分层抽样，这将导致样本大小与可用样本成正比，而不是与总体子组人口成正比。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
#如果受试者符合多层次的纳入标准，则将样本分配到亚组的过程可能涉及重叠，这可能导致总体的错误陈述。&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{Citation|last1=Glass|first1=Aenne|title=Potential Advantages and Disadvantages of Stratification in Methods of Randomization|date=2014|work=Springer Proceedings in Mathematics &amp;amp; Statistics|pages=239–246|publisher=Springer New York|isbn=978-1-4939-2103-4|last2=Kundt|first2=Guenther|doi=10.1007/978-1-4939-2104-1_23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Citation|last1=Glass|first1=Aenne|title=Potential Advantages and Disadvantages of Stratification in Methods of Randomization|date=2014|work=Springer Proceedings in Mathematics &amp;amp; Statistics|pages=239–246|publisher=Springer New York|isbn=978-1-4939-2103-4|last2=Kundt|first2=Guenther|doi=10.1007/978-1-4939-2104-1_23}}&amp;lt;/ref&amp;gt;&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%88%86%E5%B1%82%E9%9A%8F%E6%9C%BA%E8%AF%95%E9%AA%8C&amp;diff=23920</id>
		<title>分层随机试验</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%88%86%E5%B1%82%E9%9A%8F%E6%9C%BA%E8%AF%95%E9%AA%8C&amp;diff=23920"/>
		<updated>2021-06-24T09:58:37Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 技术 Techniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:Graphic_breakdown_of_stratified_random_sampling.jpeg|thumb|220x220px|分层随机抽样的图形分解 Graphic breakdown of stratified random sampling]]&lt;br /&gt;
&lt;br /&gt;
在统计学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分层随机试验 Stratified randomization''' &amp;lt;/font&amp;gt;是一种抽样方法，首先将整个研究&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''总体 Population''' &amp;lt;/font&amp;gt;层为具有相同属性或特征的子群，称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分层 Attributes'''  &amp;lt;/font&amp;gt;，然后从分层组中进行简单随机抽样，在抽样过程的任何阶段，随机、完全偶然地无偏抽取同一子群中的元素。&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{Citation|title=Simple random sample|date=2020-03-18|url=https://en.wikipedia.org/w/index.php?title=Simple_random_sample&amp;amp;oldid=946144051|work=Wikipedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;分层随机试验被认为是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分层抽样 Stratified sampling''' &amp;lt;/font&amp;gt;的一个细分。当共享属性部分存在，并且在被调查总体的不同亚群之间有很大差异时，应该采用分层随机试验。因此，在取样过程中需要特别考虑或明确区分。&amp;lt;ref&amp;gt;{{Citation|title=Stratified sampling|date=2020-02-09|url=https://en.wikipedia.org/w/index.php?title=Stratified_sampling&amp;amp;oldid=939938944|work=Wikipedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;这种抽样方法应区别于&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''整群抽样方法 Cluster sampling''' &amp;lt;/font&amp;gt;，整群抽样方法是在整个群体中选择一个简单的随机抽样来代表整个总体，或分层系统抽样方法，在分层过程之后进行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''系统抽样 Systematic sampling''' &amp;lt;/font&amp;gt;。分层随机抽样有时也称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定额随机抽样 Quota random sampling''' &amp;lt;/font&amp;gt;。&amp;lt;ref name=&amp;quot;:3&amp;quot;&amp;gt;{{Cite web|url=https://www.investopedia.com/ask/answers/032615/what-are-some-examples-stratified-random-sampling.asp|title=How Stratified Random Sampling Works|last=Nickolas|first=Steven|date=July 14, 2019|website=Investopedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 分层随机试验的步骤 Steps for stratified randomization==&lt;br /&gt;
&lt;br /&gt;
分层随机试验在目标总体异&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''质性 Heterogeneous'''&amp;lt;/font&amp;gt;的情况下非常有用， 它能有效地显示研究中的趋势或特征在不同阶层之间的差异。&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;当进行分层随机试验时，应采取以下8个步骤：&amp;lt;ref name=&amp;quot;:4&amp;quot;&amp;gt;{{Cite web|url=https://www.statisticshowto.com/stratified-random-sample/|title=Stratified Random Sample: Definition, Examples|last=Stephanie|date=Dec 11, 2013|website=Statistics How To|language=en-US|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:5&amp;quot;&amp;gt;{{Cite web|url=https://www.questionpro.com/blog/stratified-random-sampling/|title=Stratified Random Sampling: Definition, Method and Examples|date=2018-03-13|website=QuestionPro|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#定义目标总体&lt;br /&gt;
#定义分层&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''变量 Variables''' &amp;lt;/font&amp;gt;并决定要创建的分层数量。确定分层变量的标准,包括年龄、社会经济地位、国籍、种族、教育程度等，并应与研究目标相一致。理想情况下，应该使用4-6个阶层，因为任何分层变量的增加将提高其中一些变量抵消其他变量的影响的概率。&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt;&lt;br /&gt;
#使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''抽样框架 Sampling frame''' &amp;lt;/font&amp;gt;评估目标总体中的所有元素。之后根据&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖率 Coverage''' &amp;lt;/font&amp;gt; 和分组进行更改。&lt;br /&gt;
#列出所有的元素并考虑抽样结果。每个阶层应该相互排斥 Mutually exclusive，加起来涵盖总体的所有成员，而总体的每一个成员应该属于唯一的阶层，和其他差异最小的成员一起。&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt;&lt;br /&gt;
#决定随机抽样的选择标准。这可以手动完成，也可以用设计好的计算机程序完成。&lt;br /&gt;
#为所有元素分配一个随机且唯一的编号，然后根据分配的编号对这些元素进行排序。&lt;br /&gt;
#回顾每一层的大小（Size）和每一层中所有元素的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数值分布 Numerical distribution''' &amp;lt;/font&amp;gt;。确定抽样类型，按比例或不按比例分层抽样。&lt;br /&gt;
#按照第5步中的规定进行所选的随机抽样。至少，必须从每个阶层中选择一种元素，以便最终样品包括每个阶层的代表。如果从每个阶层中选择两个或两个以上的元素，则可以计算所收集数据的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''误差范围 Error margins''' &amp;lt;/font&amp;gt;。&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 技术 Techniques ==&lt;br /&gt;
[[File:Simple_random_sampling_after_stratification_step.png|thumb|分层后简单随机抽样]]&lt;br /&gt;
&lt;br /&gt;
分层随机试验决定一个或多个预后因素（prognostic factors），在平均意义下，这些预后因素使每个亚组具有相似的进入特征。通过检查先前研究的结果，可以准确地确定患者因素。&amp;lt;ref&amp;gt;{{Cite journal|last=Sylvester|first=Richard|date=December 1982|title=Fundamentals of clinical trials|journal=Controlled Clinical Trials|volume=3|issue=4|pages=385–386|doi=10.1016/0197-2456(82)90029-0|issn=0197-2456}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
子群的数量可以通过乘以每个因素的层数来计算。在随机化前或随机化时测量因素，并根据测量结果将实验对象分为若干亚组或层。&lt;br /&gt;
&lt;br /&gt;
在每一层中，可以应用几种随机试验策略，包括&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''简单随机试验 Simple randomization''' &amp;lt;/font&amp;gt;、&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''分块随机试验 Blocked randomization''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最小化试验 Minimization''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
=== 分层内简单随机抽样 Simple randomization within strata ===&lt;br /&gt;
&lt;br /&gt;
简单随机试验被认为是在每个阶层中分配受试者的最简单方法。对于每个任务，受试者被完全随机地分配到每个组中。尽管简单的随机化很容易进行，但由于取样量小，分配不均，因此在含有100多个样本的地层中，通常采用简单的随机化方法。尽管很容易进行，但简单随机试验通常应用于包含 100 个以上样本的层，因为小样本量会使分配不均等。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===分层内的区块随机试验 Block randomization within strata===&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 区块随机试验 Block randomization &amp;lt;/font&amp;gt;'''，有时称为置换区块随机试验，应用区块将来自同一阶层的受试者平均分配到研究中的每个组。 在区块随机试验中，指定了分配比率（一个特定组与其他组的数量之比）和组大小。 块大小必须是处理次数的倍数，以便每个层中的样本可以按预期比例分配到处理组。&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Cite book|last=Pocock, Stuart J.|title=Clinical trials : a practical approach|publisher=John Wiley &amp;amp; Sons Ltd|date=Jul 1, 2013|isbn=978-1-118-79391-6|location=Chichester|oclc=894581169}}&amp;lt;/ref&amp;gt;例如，在一项关于乳腺癌的临床试验中，应该有 4 或 8 个层次，其中年龄和淋巴结状态是两个预后因素（prognostic factors），每个因素分为两个水平。 可以通过多种方式将不同的区块分配给样本，包括随机列表（random list）和计算机编程。&amp;lt;ref&amp;gt;{{Cite web|url=https://www.sealedenvelope.com/help/redpill/latest/block/|title=Sealed Envelope {{!}} Random permuted blocks|date=Feb 25, 2020|website=www.sealedenvelope.com|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Citation|last1=Friedman|first1=Lawrence M.|title=Introduction to Clinical Trials|date=2010|work=Fundamentals of Clinical Trials|pages=1–18|publisher=Springer New York|isbn=978-1-4419-1585-6|last2=Furberg|first2=Curt D.|last3=DeMets|first3=David L.|doi=10.1007/978-1-4419-1586-3_1}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
区块随机试验通常用于样本量较大的实验，以避免具有重要特征的样本分配不平衡。 在某些对随机试验有严格要求的领域，如临床试验，当没有对导体（conductors）进行盲法处理且区块块大小有限时，分配是可预测的。 分层中的块置换随机试验可能会随着分层数量的增加和样本量的限制而导致分层之间的样本不平衡，例如，有可能找不到符合某些分层特征的样本&amp;lt;ref&amp;gt;{{Cite book|title=Fundamentals of clinical trials|others=Friedman, Lawrence M., 1942-, Furberg, Curt,, DeMets, David L., 1944-, Reboussin, David,, Granger, Christopher B.|date=27 August 2015|isbn=978-3-319-18539-2|edition=Fifth|location=New York|oclc=919463985}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==最小化方法 Minimization method==&lt;br /&gt;
&lt;br /&gt;
为了保证每个处理组的相似性，尝试了“最小化”方法，这比分层内的随机排列块更直接。在最小化方法中，根据每个处理组中的样本总和将每个层中的样本分配到处理组中，这使得受试者数量在组间保持平衡。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; 如果多个治疗组的总和相同，则将进行简单的随机化以分配治疗。在实践中，最小化方法需要根据预后因素（prognostic factors）跟踪治疗分配的每日记录，这可以通过使用一组索引卡进行记录来有效完成。最小化方法有效地避免了组间不平衡，但比块随机化涉及的随机过程更少，因为随机过程仅在治疗的总人数相同时进行。一个可行的解决方案是应用额外的随机列表，这使得具有较小边际总数的总和的治疗组具有更高的机会（例如 ¾），而其他治疗具有较低的机会（例如 ¼）。&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{Cite journal|last=Pocock|first=S. J.|date=March 1979|title=Allocation of Patients to Treatment in Clinical Trials|journal=Biometrics|volume=35|issue=1|pages=183–197|doi=10.2307/2529944|jstor=2529944|pmid=497334|issn=0006-341X}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用 Application==&lt;br /&gt;
&lt;br /&gt;
[[File:Confounding_factors_are_important_to_consider_in_clinical_trials.png|thumb|219x219px|混杂因素在临床试验中很重要]]&lt;br /&gt;
&lt;br /&gt;
分层随机试验在需要对特定层进行不同权重的情况下非常有用且富有成效。 通过这种方式，研究人员可以操纵每个层次的选择机制，以放大或最小化调查结果中所需的特征。&amp;lt;ref&amp;gt;{{Cite web|url=https://www.thoughtco.com/stratified-sampling-3026731|title=Understanding Stratified Samples and How to Make Them|last=Crossman|first=Ashley|date=Jan 27, 2020|website=ThoughtCo|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当研究人员打算寻找两个或多个层次之间的关联时，分层随机化很有帮助，因为简单的随机抽样会导致更大的可能出现目标群体的不平等代表性。当研究人员希望消除观察性研究中的'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 混杂因素 Confounder &amp;lt;/font&amp;gt;'''时，它也很有用，因为分层随机试验允许调整'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 协方差 Covariances &amp;lt;/font&amp;gt;'''和 '''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; p 值 p-values &amp;lt;/font&amp;gt;'''以获得更准确的结果。 &amp;lt;ref&amp;gt;{{Cite book|last=Hennekens, Charles H.|title=Epidemiology in medicine|date=1987|publisher=Little, Brown|others=Buring, Julie E., Mayrent, Sherry L.|isbn=0-316-35636-0|edition=1st|location=Boston, Massachusetts|oclc=16890223}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
与简单随机抽样相比，分层随机抽样的统计准确度也更高，因为选择代表总体的元素具有高度相关性。&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt;与分层之间的差异相比，分层内的差异要小得多。因此，随着样本间差异的最小化，'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 标准差 Standard deviation &amp;lt;/font&amp;gt;'''也会随之收紧，从而导致最终结果的准确性更高，误差更小。当研究资金紧张时，这有效地减少了所需的样本量并提高了抽样的'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 成本效益 Cost-effectiveness &amp;lt;/font&amp;gt;'''。&lt;br /&gt;
&lt;br /&gt;
在现实生活中，分层随机试验可应用于选举投票结果、社会群体收入差距调查或各国教育机会的衡量。 &amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==临床试验中的分层随机试验 Stratified randomization in clinical trials==&lt;br /&gt;
&lt;br /&gt;
在'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 临床试验 Clinical trials &amp;lt;/font&amp;gt;'''中，根据患者的社会和个人背景或与研究相关的任何因素对患者进行分层，以匹配整个患者群体中的每个组。 这样做的目的是建立临床/预后因素（prognostic factor）的平衡，因为如果研究设计不平衡，试验将不会产生有效的结果。&amp;lt;ref&amp;gt;{{Cite book|last1=Polit|first1=DF|title=Nursing Research: Generating and Assessing Evidence for Nursing Practice, 9th ed.|last2=Beck|first2=CT|publisher=Lippincott Williams &amp;amp; Wilkins.|year=2012|location=Philadelphia, USA: Wolters Klower Health}}&amp;lt;/ref&amp;gt;  分层随机化的步骤非常重要，因为它试图确保没有偏见、有意或无意地影响所研究患者样本的代表性。 &amp;lt;ref&amp;gt;{{Cite web|url=https://www.omixon.com/patient-stratification-in-clinical-trials/|title=Patient Stratification in Clinical Trials|date=2014-12-01|website=Omixon {{!}} NGS for HLA|language=en-US|access-date=2020-04-26}}&amp;lt;/ref&amp;gt;  它增加了研究能力，尤其是在小型临床试验中（n&amp;lt;400），因为这些已知的临床特征分层被认为会影响干预的结果。&amp;lt;ref&amp;gt;{{Cite web|url=https://www.statisticshowto.com/stratified-randomization/|title=Stratified Randomization in Clinical Trials|last=Stephanie|date=2016-05-20|website=Statistics How To|language=en-US|access-date=2020-04-26}}&amp;lt;/ref&amp;gt;它有助于防止在临床研究中受到高度重视的 '''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; I 型错误 Type I error &amp;lt;/font&amp;gt;'''的发生。 &amp;lt;ref name=&amp;quot;:6&amp;quot;&amp;gt;{{Cite journal|last=Kernan|first=W|date=Jan 1999|title=Stratified Randomization for Clinical Trials|journal=Journal of Clinical Epidemiology|volume=52|issue=1|pages=19–26|doi=10.1016/S0895-4356(98)00138-3|pmid=9973070}}&amp;lt;/ref&amp;gt;它还对主动对照等效试验的样本量产生重要影响，并且在理论上有助于'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 亚组分析 Subgroup analysis &amp;lt;/font&amp;gt;'''和'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 中期分析 Interim analysis &amp;lt;/font&amp;gt;'''。 &amp;lt;ref name=&amp;quot;:6&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==优势 Advantage==&lt;br /&gt;
分层随机试验的优点包括：&lt;br /&gt;
&lt;br /&gt;
#分层随机试验可以准确反映一般人群的结果，因为应用影响因素对整个样本进行分层并平衡样本在治疗组之间的重要特征。例如，采用分层随机化从人群中抽取 100 名样本可以保证每个治疗组的男女平衡，而使用简单随机化可能会导致一组只有 20 名男性，而另一组有 80 名男性。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
#分层随机试验比其他抽样方法（例如'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 整群抽样 Cluster sampling &amp;lt;/font&amp;gt;'''、简单随机抽样 和'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 系统抽样 Systematic sampling &amp;lt;/font&amp;gt;'''或'''&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; 非概率方法 Non-probability methods &amp;lt;/font&amp;gt;'''）的误差更小，因为可以使分层内的测量具有较低的标准差。在某些情况下，将分割的分层随机试验比简单地随机试验一般样本更易于管理且成本更低。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
#由于分层随机试验本质的精确性，团队更容易接受分层样本的训练。&lt;br /&gt;
#由于这种方法的统计准确性，研究人员可以通过分析小样本得到非常有用的结果。&lt;br /&gt;
#'''&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;这种抽样技术涵盖了广泛的总体，因为已经对分层划分进行了完整的控制。 This sampling technique covers a wide range of population since complete charge over the strata division has been made.&amp;lt;/font&amp;gt;'''&lt;br /&gt;
# 有时需要分层随机试验来估计总体中各组的总体参数。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==缺点 Disadvantage ==&lt;br /&gt;
&lt;br /&gt;
分层随机试验的限制包括：&lt;br /&gt;
&lt;br /&gt;
#分层随机试验首先参考预后因素将样本分成若干层，但有可能无法划分样本。在应用中，在某些情况下，预后因素的重要性缺乏严格的认可，这可能进一步导致偏差。这就是为什么在将因素纳入分层之前应该检查因素产生影响的潜力的原因。在某些因素对结果的影响无法得到批准（approved）的情况下，建议进行无分层随机试验。 &amp;lt;ref&amp;gt;{{Cite web|url=https://www.investopedia.com/ask/answers/041615/what-are-advantages-and-disadvantages-stratified-random-sampling.asp|title=Pros and Cons of Stratified Random Sampling|last=Murphy|first=Chris B.|date=Apr 13, 2019|website=Investopedia|language=en|access-date=2020-04-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
#如果可用数据不能代表整个亚组总体，则认为亚组大小具有相同的重要性。在某些应用中，子组大小是根据可用数据量来决定的，而不是将样本大小缩放到子组大小，这会在因子效应中引入偏差。在某些需要对数据进行方差分层的情况下，子组方差差异显着，使得每个子组的抽样规模无法保证与整个子组总体成正比。&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{Citation|last1=Glass|first1=Aenne|title=Potential Advantages and Disadvantages of Stratification in Methods of Randomization|date=2014|work=Springer Proceedings in Mathematics &amp;amp; Statistics|pages=239–246|publisher=Springer New York|isbn=978-1-4939-2103-4|last2=Kundt|first2=Guenther|doi=10.1007/978-1-4939-2104-1_23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
#如果人口不能完全分配到层中，则不能应用分层抽样，这将导致样本大小与可用样本成正比，而不是与总体子组人口成正比。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
#如果受试者符合多层次的纳入标准，则将样本分配到亚组的过程可能涉及重叠，这可能导致总体的错误陈述。&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{Citation|last1=Glass|first1=Aenne|title=Potential Advantages and Disadvantages of Stratification in Methods of Randomization|date=2014|work=Springer Proceedings in Mathematics &amp;amp; Statistics|pages=239–246|publisher=Springer New York|isbn=978-1-4939-2103-4|last2=Kundt|first2=Guenther|doi=10.1007/978-1-4939-2104-1_23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Citation|last1=Glass|first1=Aenne|title=Potential Advantages and Disadvantages of Stratification in Methods of Randomization|date=2014|work=Springer Proceedings in Mathematics &amp;amp; Statistics|pages=239–246|publisher=Springer New York|isbn=978-1-4939-2103-4|last2=Kundt|first2=Guenther|doi=10.1007/978-1-4939-2104-1_23}}&amp;lt;/ref&amp;gt;&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23892</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23892"/>
		<updated>2021-06-21T14:17:20Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=(b_{ij})_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B=(b_{ij})_{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23891</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23891"/>
		<updated>2021-06-21T14:14:08Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=(b_{ij})_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B=(b_{ij})_{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
[[file:一个例子.jpeg|thumb|right|175px|图：一个例子]]&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23890</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23890"/>
		<updated>2021-06-21T13:14:20Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=(b_{ij})_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B=(b_{ij})_{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
[[file:一个例子.jpeg|thumb|right|175px|图：一个例子]]&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E4%B8%80%E4%B8%AA%E4%BE%8B%E5%AD%90.jpeg&amp;diff=23889</id>
		<title>文件:一个例子.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E4%B8%80%E4%B8%AA%E4%BE%8B%E5%AD%90.jpeg&amp;diff=23889"/>
		<updated>2021-06-21T13:13:41Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23888</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23888"/>
		<updated>2021-06-21T12:31:17Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=(b_{ij})_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B=(b_{ij})_{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23887</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23887"/>
		<updated>2021-06-21T12:27:58Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=(b_{ij})_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B=(b_{ij})_{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23886</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23886"/>
		<updated>2021-06-21T12:27:11Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B=（b_{ij}）_{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23885</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23885"/>
		<updated>2021-06-21T12:25:47Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23884</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23884"/>
		<updated>2021-06-21T12:23:55Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^d b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，张天健审校，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23750</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23750"/>
		<updated>2021-06-17T07:49:13Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{k!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^m b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23726</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23726"/>
		<updated>2021-06-16T14:09:18Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^m b_{ih}^{k-1}b_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;b_{ih}*b_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;b_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;b_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23725</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23725"/>
		<updated>2021-06-16T14:08:33Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^m a_{ih}^{k-1}a_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a_{ih}*a_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;a_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;a_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_{ij}^2&amp;lt;/math&amp;gt;的值表示从&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发两步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。同理可知，&amp;lt;math&amp;gt;b_{ij}^k&amp;lt;/math&amp;gt;表示从&lt;br /&gt;
&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;出发经&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;步到达&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;的路径数量。&amp;lt;math&amp;gt;b_{ij}^k=0&amp;lt;/math&amp;gt;表示不存在这样的路径。&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23724</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23724"/>
		<updated>2021-06-16T14:02:06Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^m a_{ih}^{k-1}a_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a_{ih}*a_{hj}\neq 0&amp;lt;/math&amp;gt;当且仅当&amp;lt;math&amp;gt;a_{ih}\neq 0&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;a_{hj}\neq 0&amp;lt;/math&amp;gt;，即从节点&amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;和从&amp;lt;math&amp;gt;v_h&amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt;都有路径相通，所以&amp;lt;math&amp;gt;b_ij^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23722</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23722"/>
		<updated>2021-06-16T13:58:10Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^m a_{jh}^{k-1}a_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a_{ih}*a_{hj}\neq 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23703</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23703"/>
		<updated>2021-06-16T09:08:43Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{h=1}^m a_{jh}^{k-1}a_{hj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a_{ih}*a_{hj}\unequal 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23694</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23694"/>
		<updated>2021-06-15T14:05:07Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
:&amp;lt;math&amp;gt;b_{ij}^k=\sum _{}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23693</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23693"/>
		<updated>2021-06-15T14:04:17Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;的''k''次方记为&amp;lt;math&amp;gt;B^k=(b_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;a_{ij}^k=\sum _{}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23692</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23692"/>
		<updated>2021-06-15T14:03:24Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;B=（b_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;b_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
''B''的''k''次方记为&amp;lt;math&amp;gt;A^k=(a_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;a_{ij}^k=\sum _{}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23691</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23691"/>
		<updated>2021-06-15T14:02:07Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;A=（a_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;a_{ij}=\mid e_k \mid,e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
称矩阵&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;为有向图&amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;的节点邻接矩阵。&lt;br /&gt;
&lt;br /&gt;
''A''的''k''次方记为&amp;lt;math&amp;gt;A^k=(a_{ij}^k)_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;a_{ij}^k=\sum _{}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23690</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23690"/>
		<updated>2021-06-15T13:56:48Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;A=（a_{ij}）_{d*d}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;a_{ij}=\mid e_k \mid，e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23689</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23689"/>
		<updated>2021-06-15T13:55:50Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;A=（a_ij）_{m*m}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;a_{ij}=\mid e_k \mid，e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23688</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23688"/>
		<updated>2021-06-15T13:55:18Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&amp;lt;math&amp;gt;A=（a_ij）_{m*m}&amp;lt;/math&amp;gt;，其中&lt;br /&gt;
：&amp;lt;math&amp;gt;a_ij=\mid e_k \mid，e_k=(v_i,v_j)\in E&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23687</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23687"/>
		<updated>2021-06-15T13:51:41Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;阶方阵&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23686</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23686"/>
		<updated>2021-06-15T13:50:53Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵判断有向图有没有环 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;G=（V，E）&amp;lt;/math&amp;gt;，构造&amp;lt;math&amp;gt;d=\mid V \mid&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23685</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23685"/>
		<updated>2021-06-15T13:49:29Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=图论,计算机科学,边,顶点&lt;br /&gt;
|description=是一个没有定向循环的有向图&lt;br /&gt;
}}&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge'''&amp;lt;/font&amp;gt; （也称为弧）组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学（进化论，家谱，流行病学）到社会学（引文网络）到计算（调度）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==数学性质==&lt;br /&gt;
&lt;br /&gt;
===可达性，传递闭包和传递归约===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot; /&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===组合计数===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|last1 = Harary | first1 = Frank |first2 = Edgar M. | last2 = Palmer | year =  1973| title = Graphical Enumeration  | publisher = Academic Press | isbn = 978-0-12-324245-7 | page=19}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|last2=Royle|first2=G. F.|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E. |last5=Sloane|first5=N. J. A.|last6=Wilf|first6=H.|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=Journal of Integer Sequences|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===相关概念===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. &lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==相关计算问题==&lt;br /&gt;
===基于邻接矩阵的有向无环图的判别方法===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===基于邻接矩阵判断有向图有没有环===&lt;br /&gt;
对于有向图&amp;lt;math&amp;gt;=（V，E）&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===拓扑排序和识别===&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For depth-first search based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;Jungnickel, Dieter (2012), Graphs, Networks and Algorithms, Algorithms and Computation in Mathematics, 5, Springer,  pp. 50–51, ISBN 978-3-642-32278-5.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | last2=Johnson | first2=David S. |  year=1979| title=Computers and Intractability: A Guide to the Theory of NP-Completeness| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===传递闭包和传递约简===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 495, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, p. 496, ISBN 978-1-84800-070-4.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), &amp;quot;2.3 Transitive Digraphs, Transitive Closures and Reductions&amp;quot;, Digraphs: Theory, Algorithms and Applications, Springer Monographs in Mathematics, Springer, p. 38, ISBN 978-1-84800-998-1.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===闭包问题===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = Management Science&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最短或最长路径问题===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP-难问题|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
===调度===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, pp. 179–181, ISBN 978-1-84800-070-4..&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  |edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个里程碑 Milestone（项目管理 project management），每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===数据处理网络===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===因果结构===&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |last2=Dawid|first2=A. Philip|last3=Lauritzen|first3=Steffen L.|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;pearl:95&amp;quot;&amp;gt;{{cite journal|last1=Pearl|first1=Judea|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===系谱学和版本历史===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|first2=Micha|last2=Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===引用图===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = Science | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是引文分析中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘专利，因为专利必须要提及现有技术，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===数据压缩===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
[[File:巴拉巴西网络科学.jpeg|360px|缩略图|[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]]]&lt;br /&gt;
===集智课程===&lt;br /&gt;
====[https://campus.swarma.org/course/1754 巴拉巴西网络科学（课程）]====&lt;br /&gt;
本课程中，有幸邀请了汪小帆、赵海兴、许小可、史定华、陈清华、张江、狄增如、陈关荣、樊瑛、刘宗华这十个来自六大不同高校、在网络科学领域耕耘许久的教授作为导师，依据教材框架，各有侧重地为我们共同勾勒出整个学科的美丽图景，展示这个学科的迷人魅力，指引这个学科的灿烂未来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://campus.swarma.org/course/855 知识图谱概述]====&lt;br /&gt;
知识图谱是人工智能的一大技术驱动力，它能够广泛地应用于不同的任务。相比深度学习，知识图谱中的知识可以沉淀，可解释性非常强，类似于人类的思考。近年来，不管是学术界还是工业界都纷纷构建自家的知识图谱，有面向全领域的知识图谱，也有面向垂直领域的知识图谱。其实早在文艺复兴时期，培根就提出了“知识就是力量”，在当今人工智能时代，各大科技公司更是纷纷提出：知识图谱就是人工智能的基础。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===相关书籍===&lt;br /&gt;
====《图论导论》====&lt;br /&gt;
Douglas B．West教授是伊利诺伊大学数学系的资深教授，长期从事图论理论和组合优化方面的研究工作，发表了100多篇论文。本书旨在介绍图论的基本概念、基本定理和算法，帮助读者理解并掌握图的结构和解决图论问题的技巧。另外，本书包含很多图论的新研究结果，并介绍了一些悬而未决的图论问题．证明与应用并举是本书的一个重要特点。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====[https://vdisk.weibo.com/s/dDPmAoC9qB694  《图论及其应用》]====&lt;br /&gt;
该书籍主要介绍了图论的基本知识、相关定理等，并对于不同图，给出实际应用，如与对集有关的人员分派问题、与Hamilton图有关的旅行售货员问题等，通俗易懂。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:有向图]]&lt;br /&gt;
[[Category:有向无环图]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
本中文词条由[[用户:孙钦贵|孙钦贵]]翻译，[[用户:薄荷|薄荷]]编辑，欢迎在讨论页面留言。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''本词条内容翻译自 wikipedia.org，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[category:网络科学]]&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23607</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23607"/>
		<updated>2021-06-13T08:13:37Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge''' &amp;lt;/font&amp;gt;(也称为弧)组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学(进化论，家谱，流行病学)到社会学(引文网络)到计算(调度)。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides|author-link=Nicos Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 数学性质 ==&lt;br /&gt;
&lt;br /&gt;
=== 可达性，传递闭包和传递归约 ===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|authorlink=Dexter Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot;/&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|author1-link=Robert Sedgewick (computer scientist)|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
=== 组合计数 ===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|editor-link=Frank Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|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}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|author1-link=Brendan McKay|last2=Royle|first2=G. F.|author2-link=Gordon Royle|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E.|author4-link= Frédérique Oggier |last5=Sloane|first5=N. J. A.|author5-link= Neil Sloane|last6=Wilf|first6=H.|author6-link=Herbert Wilf|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=[[Journal of Integer Sequences]]|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 相关概念 ===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | author2-link = Judea Pearl&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. | author1-link = George Furnas&lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 相关计算问题 ==&lt;br /&gt;
=== 基于邻接矩阵的有向无环图的判别方法 ===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
: &amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k)-d=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序和识别 ===&lt;br /&gt;
{{Main|拓扑排序}}&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;{{Introduction to Algorithms|edition=2}}  Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For [[深度优先搜索|depth-first search]] based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;{{harvtxt|Jungnickel|2012}}, pp. 50–51.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
=== 从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|authorlink=Richard P. Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | authorlink1=Michael Garey | last2=Johnson | first2=David S. | authorlink2=David S. Johnson | year=1979| title=[[Computers and Intractability|Computers and Intractability: A Guide to the Theory of NP-Completeness]]| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|author1-link=Frank Harary|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
=== 传递闭包和传递约简 ===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 495.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 496.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;{{harvtxt|Bang-Jensen|Gutin|2008}}, p. 38.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 闭包问题 ===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = {{tsl|en|Management Science (journal)||Management Science}}&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 最短或最长路径问题 ===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP困难|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
=== 调度 ===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 469.&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  | author3-link = Ping Zhang (graph theorist)|edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个 里程碑 (项目管理) Milestone (project management)，每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 数据处理网络 ===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 因果结构 ===&lt;br /&gt;
{{main|贝叶斯网络}}&lt;br /&gt;
&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |author2-link=Philip Dawid|last2=Dawid|first2=A. Philip|author3-link=Steffen Lauritzen|last3=Lauritzen|first3=Steffen L.|author4-link=David Spiegelhalter|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=pearl:95&amp;gt;{{cite journal|last1=Pearl|first1=Judea|authorlink= Judea Pearl|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系谱学和版本历史 ===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|author1-link=János Pach|first2=Micha|last2=Sharir|author2-link=Micha Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 引用图 ===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = [[科学 (期刊)|Science]] | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是[[引文分析]]中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘[[专利]]，因为专利必须要提及[[现有技术]]，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
=== 数据压缩 ===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|authorlink=M. Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
{{圖論}}&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23606</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23606"/>
		<updated>2021-06-13T08:13:03Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge''' &amp;lt;/font&amp;gt;(也称为弧)组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学(进化论，家谱，流行病学)到社会学(引文网络)到计算(调度)。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides|author-link=Nicos Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 数学性质 ==&lt;br /&gt;
&lt;br /&gt;
=== 可达性，传递闭包和传递归约 ===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|authorlink=Dexter Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot;/&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|author1-link=Robert Sedgewick (computer scientist)|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
=== 组合计数 ===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|editor-link=Frank Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|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}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|author1-link=Brendan McKay|last2=Royle|first2=G. F.|author2-link=Gordon Royle|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E.|author4-link= Frédérique Oggier |last5=Sloane|first5=N. J. A.|author5-link= Neil Sloane|last6=Wilf|first6=H.|author6-link=Herbert Wilf|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=[[Journal of Integer Sequences]]|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 相关概念 ===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | author2-link = Judea Pearl&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. | author1-link = George Furnas&lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 相关计算问题 ==&lt;br /&gt;
=== 基于邻接矩阵的有向无环图的判别方法 ===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
: &amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式 &amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;，有&lt;br /&gt;
:&amp;lt;math&amp;gt; tr\(I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序和识别 ===&lt;br /&gt;
{{Main|拓扑排序}}&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;{{Introduction to Algorithms|edition=2}}  Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For [[深度优先搜索|depth-first search]] based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;{{harvtxt|Jungnickel|2012}}, pp. 50–51.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
=== 从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|authorlink=Richard P. Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | authorlink1=Michael Garey | last2=Johnson | first2=David S. | authorlink2=David S. Johnson | year=1979| title=[[Computers and Intractability|Computers and Intractability: A Guide to the Theory of NP-Completeness]]| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|author1-link=Frank Harary|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
=== 传递闭包和传递约简 ===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 495.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 496.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;{{harvtxt|Bang-Jensen|Gutin|2008}}, p. 38.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 闭包问题 ===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = {{tsl|en|Management Science (journal)||Management Science}}&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 最短或最长路径问题 ===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP困难|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
=== 调度 ===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 469.&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  | author3-link = Ping Zhang (graph theorist)|edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个 里程碑 (项目管理) Milestone (project management)，每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 数据处理网络 ===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 因果结构 ===&lt;br /&gt;
{{main|贝叶斯网络}}&lt;br /&gt;
&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |author2-link=Philip Dawid|last2=Dawid|first2=A. Philip|author3-link=Steffen Lauritzen|last3=Lauritzen|first3=Steffen L.|author4-link=David Spiegelhalter|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=pearl:95&amp;gt;{{cite journal|last1=Pearl|first1=Judea|authorlink= Judea Pearl|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系谱学和版本历史 ===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|author1-link=János Pach|first2=Micha|last2=Sharir|author2-link=Micha Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 引用图 ===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = [[科学 (期刊)|Science]] | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是[[引文分析]]中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘[[专利]]，因为专利必须要提及[[现有技术]]，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
=== 数据压缩 ===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|authorlink=M. Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
{{圖論}}&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23605</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23605"/>
		<updated>2021-06-13T08:11:53Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge''' &amp;lt;/font&amp;gt;(也称为弧)组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学(进化论，家谱，流行病学)到社会学(引文网络)到计算(调度)。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides|author-link=Nicos Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 数学性质 ==&lt;br /&gt;
&lt;br /&gt;
=== 可达性，传递闭包和传递归约 ===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|authorlink=Dexter Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot;/&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|author1-link=Robert Sedgewick (computer scientist)|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
=== 组合计数 ===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|editor-link=Frank Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|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}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|author1-link=Brendan McKay|last2=Royle|first2=G. F.|author2-link=Gordon Royle|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E.|author4-link= Frédérique Oggier |last5=Sloane|first5=N. J. A.|author5-link= Neil Sloane|last6=Wilf|first6=H.|author6-link=Herbert Wilf|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=[[Journal of Integer Sequences]]|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 相关概念 ===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | author2-link = Judea Pearl&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. | author1-link = George Furnas&lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 相关计算问题 ==&lt;br /&gt;
=== 基于邻接矩阵的有向无环图的判别方法 ===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;， &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图当且仅当&lt;br /&gt;
: &amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式，有&lt;br /&gt;
:&amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序和识别 ===&lt;br /&gt;
{{Main|拓扑排序}}&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;{{Introduction to Algorithms|edition=2}}  Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For [[深度优先搜索|depth-first search]] based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;{{harvtxt|Jungnickel|2012}}, pp. 50–51.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
=== 从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|authorlink=Richard P. Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | authorlink1=Michael Garey | last2=Johnson | first2=David S. | authorlink2=David S. Johnson | year=1979| title=[[Computers and Intractability|Computers and Intractability: A Guide to the Theory of NP-Completeness]]| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|author1-link=Frank Harary|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
=== 传递闭包和传递约简 ===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 495.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 496.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;{{harvtxt|Bang-Jensen|Gutin|2008}}, p. 38.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 闭包问题 ===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = {{tsl|en|Management Science (journal)||Management Science}}&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 最短或最长路径问题 ===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP困难|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
=== 调度 ===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 469.&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  | author3-link = Ping Zhang (graph theorist)|edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个 里程碑 (项目管理) Milestone (project management)，每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 数据处理网络 ===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 因果结构 ===&lt;br /&gt;
{{main|贝叶斯网络}}&lt;br /&gt;
&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |author2-link=Philip Dawid|last2=Dawid|first2=A. Philip|author3-link=Steffen Lauritzen|last3=Lauritzen|first3=Steffen L.|author4-link=David Spiegelhalter|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=pearl:95&amp;gt;{{cite journal|last1=Pearl|first1=Judea|authorlink= Judea Pearl|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系谱学和版本历史 ===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|author1-link=János Pach|first2=Micha|last2=Sharir|author2-link=Micha Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 引用图 ===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = [[科学 (期刊)|Science]] | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是[[引文分析]]中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘[[专利]]，因为专利必须要提及[[现有技术]]，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
=== 数据压缩 ===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|authorlink=M. Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
{{圖論}}&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23604</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23604"/>
		<updated>2021-06-13T08:11:09Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge''' &amp;lt;/font&amp;gt;(也称为弧)组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学(进化论，家谱，流行病学)到社会学(引文网络)到计算(调度)。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides|author-link=Nicos Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 数学性质 ==&lt;br /&gt;
&lt;br /&gt;
=== 可达性，传递闭包和传递归约 ===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|authorlink=Dexter Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot;/&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|author1-link=Robert Sedgewick (computer scientist)|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
=== 组合计数 ===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|editor-link=Frank Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|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}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|author1-link=Brendan McKay|last2=Royle|first2=G. F.|author2-link=Gordon Royle|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E.|author4-link= Frédérique Oggier |last5=Sloane|first5=N. J. A.|author5-link= Neil Sloane|last6=Wilf|first6=H.|author6-link=Herbert Wilf|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=[[Journal of Integer Sequences]]|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 相关概念 ===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | author2-link = Judea Pearl&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. | author1-link = George Furnas&lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 相关计算问题 ==&lt;br /&gt;
=== 基于邻接矩阵的有向无环图的判别方法 ===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;，当且仅当 &amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt; 时&amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图。&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式，有&lt;br /&gt;
:&amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序和识别 ===&lt;br /&gt;
{{Main|拓扑排序}}&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;{{Introduction to Algorithms|edition=2}}  Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For [[深度优先搜索|depth-first search]] based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;{{harvtxt|Jungnickel|2012}}, pp. 50–51.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
=== 从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|authorlink=Richard P. Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | authorlink1=Michael Garey | last2=Johnson | first2=David S. | authorlink2=David S. Johnson | year=1979| title=[[Computers and Intractability|Computers and Intractability: A Guide to the Theory of NP-Completeness]]| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|author1-link=Frank Harary|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
=== 传递闭包和传递约简 ===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 495.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 496.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;{{harvtxt|Bang-Jensen|Gutin|2008}}, p. 38.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 闭包问题 ===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = {{tsl|en|Management Science (journal)||Management Science}}&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 最短或最长路径问题 ===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP困难|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
=== 调度 ===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 469.&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  | author3-link = Ping Zhang (graph theorist)|edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个 里程碑 (项目管理) Milestone (project management)，每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 数据处理网络 ===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 因果结构 ===&lt;br /&gt;
{{main|贝叶斯网络}}&lt;br /&gt;
&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |author2-link=Philip Dawid|last2=Dawid|first2=A. Philip|author3-link=Steffen Lauritzen|last3=Lauritzen|first3=Steffen L.|author4-link=David Spiegelhalter|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=pearl:95&amp;gt;{{cite journal|last1=Pearl|first1=Judea|authorlink= Judea Pearl|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系谱学和版本历史 ===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|author1-link=János Pach|first2=Micha|last2=Sharir|author2-link=Micha Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 引用图 ===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = [[科学 (期刊)|Science]] | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是[[引文分析]]中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘[[专利]]，因为专利必须要提及[[现有技术]]，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
=== 数据压缩 ===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|authorlink=M. Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
{{圖論}}&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23601</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23601"/>
		<updated>2021-06-13T06:48:55Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge''' &amp;lt;/font&amp;gt;(也称为弧)组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学(进化论，家谱，流行病学)到社会学(引文网络)到计算(调度)。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides|author-link=Nicos Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 数学性质 ==&lt;br /&gt;
&lt;br /&gt;
=== 可达性，传递闭包和传递归约 ===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|authorlink=Dexter Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot;/&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|author1-link=Robert Sedgewick (computer scientist)|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
=== 组合计数 ===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|editor-link=Frank Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|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}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|author1-link=Brendan McKay|last2=Royle|first2=G. F.|author2-link=Gordon Royle|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E.|author4-link= Frédérique Oggier |last5=Sloane|first5=N. J. A.|author5-link= Neil Sloane|last6=Wilf|first6=H.|author6-link=Herbert Wilf|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=[[Journal of Integer Sequences]]|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 相关概念 ===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | author2-link = Judea Pearl&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. | author1-link = George Furnas&lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 相关计算问题 ==&lt;br /&gt;
=== 基于邻接矩阵的有向无环图的判别方法 ===&lt;br /&gt;
'''定理'''：&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;，当且仅当 &amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt; 时&amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图。&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式，有&lt;br /&gt;
:&amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序和识别 ===&lt;br /&gt;
{{Main|拓扑排序}}&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;{{Introduction to Algorithms|edition=2}}  Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For [[深度优先搜索|depth-first search]] based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;{{harvtxt|Jungnickel|2012}}, pp. 50–51.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
=== 从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|authorlink=Richard P. Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | authorlink1=Michael Garey | last2=Johnson | first2=David S. | authorlink2=David S. Johnson | year=1979| title=[[Computers and Intractability|Computers and Intractability: A Guide to the Theory of NP-Completeness]]| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|author1-link=Frank Harary|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
=== 传递闭包和传递约简 ===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 495.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 496.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;{{harvtxt|Bang-Jensen|Gutin|2008}}, p. 38.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 闭包问题 ===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = {{tsl|en|Management Science (journal)||Management Science}}&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 最短或最长路径问题 ===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP困难|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
=== 调度 ===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 469.&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  | author3-link = Ping Zhang (graph theorist)|edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个 里程碑 (项目管理) Milestone (project management)，每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 数据处理网络 ===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 因果结构 ===&lt;br /&gt;
{{main|贝叶斯网络}}&lt;br /&gt;
&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |author2-link=Philip Dawid|last2=Dawid|first2=A. Philip|author3-link=Steffen Lauritzen|last3=Lauritzen|first3=Steffen L.|author4-link=David Spiegelhalter|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=pearl:95&amp;gt;{{cite journal|last1=Pearl|first1=Judea|authorlink= Judea Pearl|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系谱学和版本历史 ===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|author1-link=János Pach|first2=Micha|last2=Sharir|author2-link=Micha Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 引用图 ===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = [[科学 (期刊)|Science]] | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是[[引文分析]]中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘[[专利]]，因为专利必须要提及[[现有技术]]，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
=== 数据压缩 ===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|authorlink=M. Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
{{圖論}}&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23600</id>
		<title>有向无环图</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE&amp;diff=23600"/>
		<updated>2021-06-13T06:44:23Z</updated>

		<summary type="html">&lt;p&gt;孙钦贵：/* 基于邻接矩阵的有向无环图的判别方法 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[文件:Example_of_a_directed_acyclic_graph.png|thumb|right|250px|图1：一个有向无环图的例子]]&lt;br /&gt;
在图论和计算机科学中，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''有向无环图 Directed acyclic graph'''&amp;lt;/font&amp;gt;（DAG 或 dag）是一个没有定向循环的有向图。也就是说，它由&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''顶点 Vertex''' &amp;lt;/font&amp;gt;和&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''边 Edge''' &amp;lt;/font&amp;gt;(也称为弧)组成，每条边都从一个顶点指向另一个顶点，沿着这些顶点的方向 不会形成一个闭合的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环 Loop''' &amp;lt;/font&amp;gt;。有向图是一个有向无环图当且仅当它可以通过将顶点按照与所有边方向一致的线性顺序排列构成&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topologically ordered''' &amp;lt;/font&amp;gt;。有向无环图有许多科学的和计算的应用，从生物学(进化论，家谱，流行病学)到社会学(引文网络)到计算(调度)。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==定义==&lt;br /&gt;
图是由顶点和连接顶点对的边组成的，顶点可以是任何一种由边成对连接的对象。在有向图中，每条边都有一个方向，从一个顶点到另一个顶点。&lt;br /&gt;
有向图中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''路径 Path''' &amp;lt;/font&amp;gt;是不重复的顶点&amp;lt;math&amp;gt;i_1,…,i_m&amp;lt;/math&amp;gt;（至少2个）的序列，满足对于所有的&amp;lt;math&amp;gt;k=1,…,{m−1}&amp;lt;/math&amp;gt;存在边在顶点&amp;lt;math&amp;gt;i_k&amp;lt;/math&amp;gt;和顶点&amp;lt;math&amp;gt;i_{k+1}&amp;lt;/math&amp;gt;之间; 如果一条路的第一条边的起始顶点与它的最后一条边的结束顶点相同，那么它就形成了一个环。有向无环图即为没有环出现的有向图。&amp;lt;ref name=&amp;quot;thul&amp;quot;&amp;gt;{{citation|title=Graphs: Theory and Algorithms|first1=K.|last1=Thulasiraman|first2=M. N. S.|last2=Swamy|publisher=John Wiley and Son|year=1992|isbn=978-0-471-51356-8|contribution=5.7 Acyclic Directed Graphs|page=118}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;bang&amp;quot;&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|first1=Jørgen|last1=Bang-Jensen|series=Springer Monographs in Mathematics|edition=2nd|publisher=Springer-Verlag|year=2008|isbn=978-1-84800-997-4|contribution=2.1 Acyclic Digraphs|pages=32–34}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|title=Graph theory: an algorithmic approach|first=Nicos|last=Christofides|author-link=Nicos Christofides||publisher=Academic Press|year=1975|pages=170–174}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当存在一条从顶点{{mvar|u}}到顶点{{mvar|v}}的路径时，顶点v被称作是从顶点{{mvar|u}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达的 Reachability''' &amp;lt;/font&amp;gt;。每个顶点都是从自身可达的（通过一条没有边的路径）。如果一个顶点可以从一条&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt; 非平凡&amp;lt;/font&amp;gt;路径（一条由一个或更多边组成的路径）到达自身，那么这条路径就是一个环。因此，有向无环图也可以被定义为没有顶点可以通过非平凡路径到达自身的图。&amp;lt;ref&amp;gt;{{citation|title=Simulation Techniques for Discrete Event Systems|volume=14|series=Cambridge Computer Science Texts|first=I.|last=Mitrani|year=1982|publisher=Cambridge University Press|isbn=9780521282826|page=27|url=https://books.google.com/books?id=CF04AAAAIAAJ&amp;amp;pg=PA27}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 数学性质 ==&lt;br /&gt;
&lt;br /&gt;
=== 可达性，传递闭包和传递归约 ===&lt;br /&gt;
[[file:A_DAG_G.png|thumb|right|175px|图2：有向无环图]] &lt;br /&gt;
[[file:Transitive_reduction_of_G.png|thumb|right|124px|图3：有向无环图G的传递规约]]&lt;br /&gt;
&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''可达性 Reachability''' &amp;lt;/font&amp;gt;可以用其顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''偏序关系 Partial order''' &amp;lt;/font&amp;gt;{{math|≤}}来表示。在偏序关系中，如果存在一条路径从顶点{{mvar|u}}指向顶点{{mvar|v}}，它们的偏序关系可被写作{{math|''u'' ≤ ''v''}}。这也被称作{{mvar|v}}是从{{mvar|u}}可达的。&amp;lt;ref&amp;gt;{{citation|title=The Design and Analysis of Algorithms|series=Monographs in Computer Science|first=Dexter|last=Kozen|authorlink=Dexter Kozen|publisher=Springer|year=1992|isbn=978-0-387-97687-7|page=9|url=https://books.google.com/books?id=L_AMnf9UF9QC&amp;amp;pg=PA9}}.&amp;lt;/ref&amp;gt;不同的有向无环图可以有着相同的可达关系和偏序关系。&amp;lt;ref&amp;gt;{{citation|title=Loop Transformations for Restructuring Compilers: The Foundations|first=Utpal|last=Banerjee|publisher=Springer|year=1993|isbn=978-0-7923-9318-4|page=19|contribution=Exercise 2(c)|url=https://books.google.com/books?id=Cog7zSSlqFwC&amp;amp;pg=PA19}}.&amp;lt;/ref&amp;gt;例如，有两条边{{math|''a'' → ''b''}}，{{math|''b'' → ''c''}}的有向无环图，和有三条边的{{math|''a'' → ''b''}}, {{math|''b'' → ''c''}}，{{math|''a'' → ''c''}}的有向无环图有着相同的偏序关系{{math|''a'' ≤ ''b'' ≤ ''c''}}。&lt;br /&gt;
&lt;br /&gt;
[[file:A_Hasse_diagram_representing_the_partial_order.png|thumb|right|175px|图4：将{ x, y, z }的幂集按包含偏序排序得到的哈斯图]] &lt;br /&gt;
对于一个有向无环图{{mvar|G}}，它的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递闭包 Transitive closure''' &amp;lt;/font&amp;gt;等同于一个在保持与其相同可达性的情况下，边数最多的图。在这个图中，当{{mvar|u}}可达{{mvar|v}}的时候，边{{math|''u'' → ''v''}}必定存在。换句话说，每个{{mvar|G}}中的非相同元素&amp;lt;!-- distinct elements --&amp;gt;偏序关系对{{math|''u''&amp;amp;nbsp;≤&amp;amp;nbsp;''v''}}都在这个图中有一条边。这可以被视作用图来可视化图{{mvar|G}}的可达性关系。&lt;br /&gt;
&lt;br /&gt;
有向无环图{{mvar|G}}的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''传递规约 Transitive reduction''' &amp;lt;/font&amp;gt;为和其有着相同可达性，边数最少的图。它是{{mvar|G}}的一个子图。构造方法为当{{mvar|G}}有着一条更长的路径连接顶点{{mvar|u}}和{{mvar|v}}的时候，消去边{{math|''u'' → ''v''}}。&lt;br /&gt;
传递约简和传递闭包都是有向无环图的特有概念&amp;lt;!-- is uniquely defined 唯一的？ --&amp;gt;。相反的，对于有向有环图，可以存在多个与原图有着相同可达性的最简子图。&amp;lt;ref&amp;gt;{{citation|title=Digraphs: Theory, Algorithms and Applications|series=Springer Monographs in Mathematics|first1=Jørgen|last1=Bang-Jensen|first2=Gregory Z.|last2=Gutin|publisher=Springer|year=2008|isbn=978-1-84800-998-1|url=https://books.google.com/books?id=4UY-ucucWucC&amp;amp;pg=PA36|contribution=2.3 Transitive Digraphs, Transitive Closures and Reductions|pages=36–39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于有向无环图G和表达其可达性的偏序关系≤，它的传递规约也可以看作包含G的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''覆盖关系 Covering relation''' &amp;lt;/font&amp;gt;中每一条边的G的子图。传递规约在图示有向无环图的偏序关系时十分有用，因为它们比其他具有相同偏序关系的图的边数要少，这简化了绘图。偏序关系的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''哈斯图 Hasse diagram''' &amp;lt;/font&amp;gt;由将传递规约中的每条边的起点绘制在其终点的下方而得到。&amp;lt;ref&amp;gt;{{citation|title=Graphs, Networks and Algorithms|volume=5|series=Algorithms and Computation in Mathematics|first=Dieter|last=Jungnickel|publisher=Springer|year=2012|isbn=978-3-642-32278-5|pages=92–93|url=https://books.google.com/books?id=PrXxFHmchwcC&amp;amp;pg=PA92}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序===&lt;br /&gt;
[[file:A_topological_ordering_of_a_directed_acyclic_graph.png|thumb|right|175px|图5：一个有向无环图的拓扑排序：每一条边都从排序的前一条（左上）到排序的后一条（右下）。有向图是无环的当且仅当它具有拓扑序]] [[file:Transitive_Closure.svg.png|thumb|right|124px|图6：将红色边添加到蓝色有向无环图中会产生另一个DAG，即蓝色图的传递闭包。对于每个红边或蓝边uv，v可以从u到达：存在一条从u开始到v结束的蓝色路径。]]&lt;br /&gt;
有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''拓扑排序 Topological ordering''' &amp;lt;/font&amp;gt;为所有边的起点都出现在其终点之前的排序。能构成拓扑排序的图一定没有环，因为环中的一条边必定从排序较后的顶点指向比其排序更前的顶点。&amp;lt;ref name=&amp;quot;bang&amp;quot;/&amp;gt;基于此，拓扑排序可以被用来定义有向无环图：当且仅当一个有向图有拓扑排序，它是有向无环图。一般情况下，拓扑排序并非唯一。有向无环图仅仅在存在一条路径可以包含其所有顶点的情况下，有唯一的拓扑排序方式，这时，拓扑排序与它们在这条路径中出现的顺序相同。&amp;lt;ref&amp;gt;{{citation|title=Algorithms|first1=Robert|last1=Sedgewick|author1-link=Robert Sedgewick (computer scientist)|first2=Kevin|last2=Wayne|edition=4th|publisher=Addison-Wesley|year=2011|isbn=978-0-13-276256-4|url=https://books.google.com/books?id=idUdqdDXqnAC&amp;amp;pg=PA598|pages=598–599|contribution=4,2,25 Unique topological ordering}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
有向无环图的拓扑排序族等同于其可达性的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性拓展 Linear extension''' &amp;lt;/font&amp;gt;族。 &amp;lt;ref&amp;gt;{{citation|title=A Short Course in Discrete Mathematics|series=Dover Books on Computer Science|first1=Edward A.|last1=Bender|first2=S. Gill|last2=Williamson|publisher=Courier Dover Publications|year=2005|isbn=978-0-486-43946-4|page=142|url=https://books.google.com/books?id=iuEoAwAAQBAJ&amp;amp;pg=PA142|contribution=Example 26 (Linear extensions – topological sorts)}}.&amp;lt;/ref&amp;gt;因此，偏序关系相同的任意两个图会有相同的拓扑排序集。&lt;br /&gt;
&lt;br /&gt;
=== 组合计数 ===&lt;br /&gt;
罗宾逊 Robinson (1973) 研究了有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''图计数 Graph enumeration''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref name=&amp;quot;enum&amp;quot;&amp;gt;{{citation|first=R. W.|last=Robinson|contribution=Counting labeled acyclic digraphs|pages=239–273|editor-first=F.|editor-last=Harary|editor-link=Frank Harary|title=New Directions in the Theory of Graphs|publisher=Academic Press|year=1973}}. See also {{citation&lt;br /&gt;
|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}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
如标号顶点在拓扑排序中出现的顺序不受限制，有{{mvar|n}}个顶点的标号有向无环图的数量为&lt;br /&gt;
:1, 1, 3, 25, 543, 29281, 3781503, … （OEIS中的数列A003024）。&lt;br /&gt;
其中{{math|1=''n''&amp;amp;nbsp;=&amp;amp;nbsp;0, 1, 2, 3,……}}。这个数列的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''递推关系式 Recurrence relation''' &amp;lt;/font&amp;gt;是&lt;br /&gt;
:&amp;lt;math&amp;gt;a_n = \sum_{k=1}^n (-1)^{k-1} {n\choose k}2^{k(n-k)} a_{n-k}.&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;enum&amp;quot; /&amp;gt;&lt;br /&gt;
埃里克·韦斯坦因 Eric W. Weisstein &amp;lt;ref&amp;gt;{{MathWorld | urlname=WeissteinsConjecture | title=Weisstein's Conjecture}}&amp;lt;/ref&amp;gt;，{{mvar|n}}个顶点的标号有向无环图的数量与其中所有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''特征值 Eigenvalues''' &amp;lt;/font&amp;gt;都为正实数的{{math|n*n}}&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''逻辑矩阵''' &amp;lt;/font&amp;gt;的数量相同。这一点随后被 McKay 证实，证明采用了&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''双射法 Bijective'''&amp;lt;/font&amp;gt;：一个矩阵{{mvar|A}}是有向无环图的一个&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''邻接矩阵 Adjacency matrix''' &amp;lt;/font&amp;gt;，当且仅当{{math|''A''&amp;amp;nbsp;+&amp;amp;nbsp;''I''}}是一个所有特征值都为正数的逻辑矩阵，其中{{mvar|I}}为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''单位矩阵 Identity matrix''' &amp;lt;/font&amp;gt;。因为一个有向无环图不允许&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''自环 Self-loops''' &amp;lt;/font&amp;gt;，它的邻接矩阵的对角线必定全为0。因此，加上{{mvar|I}}保持了所有矩阵因子都是0或1的特性。&amp;lt;ref&amp;gt;{{citation|last1=McKay|first1=B. D.|author1-link=Brendan McKay|last2=Royle|first2=G. F.|author2-link=Gordon Royle|last3=Wanless|first3=I. M.|last4=Oggier|first4=F. E.|author4-link= Frédérique Oggier |last5=Sloane|first5=N. J. A.|author5-link= Neil Sloane|last6=Wilf|first6=H.|author6-link=Herbert Wilf|title=Acyclic digraphs and eigenvalues of (0,1)-matrices|journal=[[Journal of Integer Sequences]]|volume=7|year=2004|url=http://www.cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.html}}, Article 04.3.3.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 相关概念 ===&lt;br /&gt;
[[file:A_polytree.png|thumb|right|175px|图7：多重树，一种由无向树的边定向而成的有向无环图]]&lt;br /&gt;
[[file:A_multitree.png|thumb|right|124px|图8：多重树，是一种DAG，其中每个从一个顶点（红色）可到达的子图都是一棵树]]&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多重树 Polytree''' &amp;lt;/font&amp;gt;由将自由树的边&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''定向 Orienting''' &amp;lt;/font&amp;gt;而得到。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Rebane&lt;br /&gt;
 | first1 = George&lt;br /&gt;
 | last2 = Pearl&lt;br /&gt;
 | first2 = Judea&lt;br /&gt;
 | author2-link = Judea Pearl&lt;br /&gt;
 | contribution = The recovery of causal poly-trees from statistical data&lt;br /&gt;
 | pages = 222–228&lt;br /&gt;
 | title = in Proc. 3rd Annual Conference on Uncertainty in Artificial Intelligence (UAI 1987), Seattle, WA, USA, July 1987&lt;br /&gt;
 | url = ftp://ftp.cs.ucla.edu/tech-report/198_-reports/870031.pdf&lt;br /&gt;
 | year = 1987&lt;br /&gt;
 }}{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}.&amp;lt;/ref&amp;gt; 多重树必定是有向无环图。对于有根树，将其所有边赋予指离根的方向也可以得到有向无环图，即&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''树状图''' &amp;lt;/font&amp;gt;。&lt;br /&gt;
&amp;lt;!--- rough translation &amp;amp; ref needed ---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#32cd32&amp;quot;&amp;gt;强明确树 Multitree &amp;lt;/font&amp;gt;是每两个顶点最多被一条路径所连接的有向无环图。等价的说，它是满足以下性质的一个有向无环图：对于图中每个顶点{{mvar|v}}，从{{mvar|v}}可达的顶点组成一颗树。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Furnas | first1 = George W. | author1-link = George Furnas&lt;br /&gt;
 | last2 = Zacks | first2 = Jeff&lt;br /&gt;
 | contribution = Multitrees: enriching and reusing hierarchical structure&lt;br /&gt;
 | doi = 10.1145/191666.191778&lt;br /&gt;
 | pages = 330–336&lt;br /&gt;
 | title = Proc. SIGCHI conference on Human Factors in Computing Systems (CHI '94)&lt;br /&gt;
 | year = 1994| isbn = 978-0897916509 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 相关计算问题 ==&lt;br /&gt;
=== 基于邻接矩阵的有向无环图的判别方法 ===&lt;br /&gt;
对于邻接矩阵 &amp;lt;math&amp;gt; B\in \left\{ 0, 1 \right\}^{d*d} &amp;lt;/math&amp;gt;，当且仅当 &amp;lt;math&amp;gt; tr(e^B)=d&amp;lt;/math&amp;gt; 时&amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt;是有向无环图。&lt;br /&gt;
&lt;br /&gt;
其中，&lt;br /&gt;
&amp;lt;math&amp;gt; B_{ij}^k&amp;lt;/math&amp;gt;是从&amp;lt;math&amp;gt; i &amp;lt;/math&amp;gt;到&amp;lt;math&amp;gt; j &amp;lt;/math&amp;gt;的长度为&amp;lt;math&amp;gt; k &amp;lt;/math&amp;gt;的有向路径的数量,例如&lt;br /&gt;
:&amp;lt;math&amp;gt; B_{ij}^2=\sum_kB_{ik}B_{kj}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
依据泰勒展开公式，有&lt;br /&gt;
:&amp;lt;math&amp;gt; e^B=I+\sum_{k=1}^{\infty}\,\frac{1}{K!}B^k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 拓扑排序和识别 ===&lt;br /&gt;
{{Main|拓扑排序}}&lt;br /&gt;
可以用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''线性时间复杂度''' &amp;lt;/font&amp;gt;的卡恩算法来找到一个有向无环图的拓扑排序。&amp;lt;ref name=&amp;quot;clrs&amp;quot;&amp;gt;{{Introduction to Algorithms|edition=2}}  Section 22.4, Topological sort, pp. 549–552.&amp;lt;/ref&amp;gt;简单来说，开设一个存放结果的列表{{mvar|L}}，先将入度为零的节点放到{{mvar|L}}中，因为这些节点没有任何的父节点。将与这些节点相连的边从图中去掉，再寻找图中入度为零的节点。对于新找到的节点来说，他们的父节点已经都在{{mvar|L}}中了，所以也可以从末端插入{{mvar|L}}。重复上述操作，直到找不到入度为零的节点。&amp;lt;ref name=&amp;quot;j50&amp;quot; /&amp;gt; 另外一种构造拓扑排序的算法是将&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''后序遍历''' &amp;lt;/font&amp;gt;结果翻转。&amp;lt;ref name=&amp;quot;clrs&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
检查一个有向图是否为有向无环图亦可在线性时间内完成。一种方法是先找到一个拓扑排序，然后测试这个排序是否能符合图中每条边所连顶点在排序中应该出现的顺序。&amp;lt;ref&amp;gt;For [[深度优先搜索|depth-first search]] based topological sorting algorithm, this validity check can be interleaved with the topological sorting algorithm itself; see e.g. {{citation|title=The Algorithm Design Manual|first=Steven S.|last=Skiena|publisher=Springer|year=2009|isbn=978-1-84800-070-4|pages=179–181|url=https://books.google.com/books?id=7XUSn0IKQEgC&amp;amp;pg=PA179}}.&amp;lt;/ref&amp;gt; 对于卡恩算法在内的部分拓扑排序算法，通过在算法终止时判断是否满足一定条件即可知道图是否有环。&amp;lt;ref name=&amp;quot;j50&amp;quot;&amp;gt;{{harvtxt|Jungnickel|2012}}, pp. 50–51.&amp;lt;/ref&amp;gt;如果有环，卡恩算法最终获得的{{mvar|L}}中节点个数会与图的节点总数不同。&lt;br /&gt;
&lt;br /&gt;
=== 从其他图构建===&lt;br /&gt;
任意无向图都可以被转化为有向无环图。构造方法是选定一个顶点的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''全序关系 Total order''' &amp;lt;/font&amp;gt;，并将无向图中所有边从全序关系中较前的顶点指向较后的顶点。这种方法是定向方法中的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环定向 Acyclic orientation''' &amp;lt;/font&amp;gt;。不同的全序关系可能推出相同的无环定向，因此一个包含{{mvar|n}}个顶点的图的无环定向数量小于{{math|''n''!}}&amp;lt;!---全序关系数量？---&amp;gt;。如果定义{{mvar|χ}}为给定图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''色多项式 Chromatic polynomial''' &amp;lt;/font&amp;gt;，无环定向数量等于{{math|{{!}}''χ''(−1){{!}}}}。&amp;lt;ref&amp;gt;{{citation|first=Richard P.|last=Stanley|authorlink=Richard P. Stanley|title=Acyclic orientations of graphs|journal=Discrete Mathematics|volume=5|issue=2 |pages=171–178|year= 1973|doi=10.1016/0012-365X(73)90108-8|url=http://math.mit.edu/~rstan/pubs/pubfiles/18.pdf}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[file:The_yellow_directed_acyclic_graph.png|thumb|right|175px|图9：黄色有向无环图是蓝色有向图的缩合。它是通过将蓝色图的每个强连通部分收缩为一个黄色顶点而形成的]]&lt;br /&gt;
任意有环有向图都可以被转化为有向无环图。只要从图中移除&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈节点集 Feedback vertex set''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''反馈边集 Feedback arc set''' &amp;lt;/font&amp;gt;，即对于图中每个环，至少包括环中一个顶点或边的集合。不过，找到反馈节点或边的最小集合是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''NP困难 NP-hard''' &amp;lt;/font&amp;gt;问题。&amp;lt;ref&amp;gt;{{citation | last1=Garey | first1=Michael R. | authorlink1=Michael Garey | last2=Johnson | first2=David S. | authorlink2=David S. Johnson | year=1979| title=[[Computers and Intractability|Computers and Intractability: A Guide to the Theory of NP-Completeness]]| publisher=[[W. H. Freeman and Company|W.&amp;amp;nbsp;H.&amp;amp;nbsp;Freeman]]| isbn=0-7167-1045-5| chapter = Problems GT7 and GT8| pages = 191–192}}&amp;lt;/ref&amp;gt; 另外一种方法将有环有向图去环的方法是将每个强连通分量[[边收缩|收缩]]为一个顶点。&amp;lt;ref&amp;gt;{{citation|title=Structural Models: An Introduction to the Theory of Directed Graphs|last1=Harary|first1=Frank|author1-link=Frank Harary|last2=Norman|first2=Robert Z.|last3=Cartwright|first3=Dorwin|publisher=John Wiley &amp;amp; Sons|year=1965|page=63}}.&amp;lt;/ref&amp;gt; 对于无环图，它的最小反馈顶点或边集为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''空集''' &amp;lt;/font&amp;gt;，它的强连通分量则为自身。&lt;br /&gt;
&lt;br /&gt;
=== 传递闭包和传递约简 ===&lt;br /&gt;
有向无环图的传递闭包可以通过&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''广度优先搜索''' &amp;lt;/font&amp;gt;或&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''深度优先搜索''' &amp;lt;/font&amp;gt;对每个节点测试可达性来构建。算法对于一个有着{{mvar|n}}个顶点和{{mvar|m}}条边的有向无环图的复杂度为{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 495.&amp;lt;/ref&amp;gt;也可以使用&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''矩阵乘法算法 Matrix multiplication algorithm''' &amp;lt;/font&amp;gt;中最快的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Coppersmith–Winograd算法'''&amp;lt;/font&amp;gt;，其复杂度为{{math|''O''(''n''&amp;lt;sup&amp;gt;''2.3728639''&amp;lt;/sup&amp;gt;)}}。这个算法理论上在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''稠密图 Dense graph'''&amp;lt;/font&amp;gt;中快过{{math|''O''(''mn'')}}。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 496.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不论在哪种传递闭包算法中，那些被一条长度至少为2的路径所连接的顶点对，都可以和只有一条长度为1的路径所连接的顶点对区分开。由于传递约简包含后者，传递约简可以在和传递闭包相同的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''渐进时间复杂度 Asymptotic computational complexity''' &amp;lt;/font&amp;gt;中被构建。&amp;lt;ref&amp;gt;{{harvtxt|Bang-Jensen|Gutin|2008}}, p. 38.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 闭包问题 ===&lt;br /&gt;
闭包是一个图中没有出边的顶点子集，即不存在从子集中顶点指向子集外顶点的边。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''闭包问题 Closure problem''' &amp;lt;/font&amp;gt;是则是找到带权图中使得权之和最大或最小的子集。闭包问题可以看作&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''最大流问题''' &amp;lt;/font&amp;gt;的简化版，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''多项式时间''' &amp;lt;/font&amp;gt;内被解决。实际上，是否有环对于找到闭包没有影响。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last = Picard | first = Jean-Claude&lt;br /&gt;
 | doi = 10.1287/mnsc.22.11.1268&lt;br /&gt;
 | issue = 11&lt;br /&gt;
 | journal = {{tsl|en|Management Science (journal)||Management Science}}&lt;br /&gt;
 | mr = 0403596&lt;br /&gt;
 | pages = 1268–1272&lt;br /&gt;
 | title = Maximal closure of a graph and applications to combinatorial problems&lt;br /&gt;
 | volume = 22&lt;br /&gt;
 | year = 1976}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 最短或最长路径问题 ===&lt;br /&gt;
基于拓扑排序的性质，有向无环图的[[最短路问题 Shortest paths]]和[[最长路径问题 Longest paths]]可以在线性时间内解决。将顶点拓扑排序后，从前到后遍历每一个顶点，对于遍历到的顶点，更新其所有出边所到达顶点的长度值。如果求最短路，则在本边是更短路径的一部分时更新。求最长路则反之。&amp;lt;ref&amp;gt;Cormen et al. 2001, Section 24.2, Single-source shortest paths in directed acyclic graphs, pp. 592–595.&amp;lt;/ref&amp;gt;对于非有向无环图，最短路需要用复杂度为&amp;lt;math&amp;gt;O(|E|+|V|\log|V|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''戴克斯特拉算法 Dijkstra's algorithm''' &amp;lt;/font&amp;gt;或&amp;lt;math&amp;gt;O (|V| |E|)&amp;lt;/math&amp;gt;的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''贝尔曼-福特算法 Bellman–Ford algorithm''' &amp;lt;/font&amp;gt;等。&amp;lt;ref&amp;gt;Cormen et al. 2001, Sections 24.1, The Bellman–Ford algorithm, pp. 588–592, and 24.3, Dijkstra's algorithm, pp. 595–601.&amp;lt;/ref&amp;gt;最长路径则是一个[[NP困难|NP困难问题]]。&amp;lt;ref&amp;gt;Cormen et al. 2001, p. 966.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==应用==&lt;br /&gt;
=== 调度 ===&lt;br /&gt;
有向无环图的偏序关系可以在调度上有着先后顺序限制的系统任务中发挥作用。&amp;lt;ref&amp;gt;{{harvtxt|Skiena|2009}}, p. 469.&amp;lt;/ref&amp;gt;调度问题的一个重要种类是串联需要更新的对象，如[[电子计算表]]中某个单元格的计算公式依赖于其他单元格，或在程序的[[源代码]]被修改后重新编译[[目标代码|目标文件]]。&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''依赖图 Dependency graph''' &amp;lt;/font&amp;gt;则记录了这种更新依赖关系。其每个顶点对应一个需要被更新的对象，边则表示更新的关系。依赖图中的环被称为&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''环状依赖 Circular dependency''' &amp;lt;/font&amp;gt;。环状依赖通常是不被允许出现的，因为不能保证圈内任务排定顺序的一致性。无环的依赖图即为有向无环图。&amp;lt;ref&amp;gt;{{citation | last1=Al-Mutawa | first1=H. A. | last2=Dietrich | first2=J. | last3=Marsland | first3=S. | last4=McCartin | first4=C. | contribution=On the shape of circular dependencies in Java programs | doi=10.1109/ASWEC.2014.15 | pages=48–57 | publisher=IEEE | title=23rd Australian Software Engineering Conference | year=2014| isbn=978-1-4799-3149-1 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
举例来说，当电子表格中一个单元格的数值发生改变，其他直接或间接依赖于该单元格的所有单元格的值都需要被重新计算。被调度的任务为重新计算某个特定单元格的值。当一个单元格的值取决于另外一个单元格时，两个单元格之间则有依赖关系。每个被依赖单元格的值的计算过程都必须先于使用它的表达式执行。使用依赖图的拓扑排序来调度任务使得在每个单元格的值都仅被重新计算一次的情况下，整个工作表都能被更新。&amp;lt;ref name=&amp;quot;hgt1181&amp;quot;&amp;gt;{{citation |title=Handbook of Graph Theory |first1=Jonathan L. |last1=Gross |first2=Jay |last2=Yellen |first3=Ping |last3=Zhang  | author3-link = Ping Zhang (graph theorist)|edition=2nd |publisher=CRC Press |year=2013 |isbn=978-1-4398-8018-0 |page=1181 |url=https://books.google.com/books?id=cntcAgAAQBAJ&amp;amp;pg=PA1181}}.&amp;lt;/ref&amp;gt;相似的任务调度场景出现在程序源代码编译的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''Makefile''' &amp;lt;/font&amp;gt;，&amp;lt;ref name=&amp;quot;hgt1181&amp;quot; /&amp;gt;和优化计算机程序底层执行的[[指令调度]]中。&amp;lt;ref&amp;gt;{{citation |title=The Compiler Design Handbook: Optimizations and Machine Code Generation |first1=Y. N. |last1=Srikant |first2=Priti |last2=Shankar |edition=2nd |publisher=CRC Press|year=2007 |isbn=978-1-4200-4383-9 |pages=19–39 |url=https://books.google.com/books?id=1kqAv-uDEPEC&amp;amp;pg=SA19-PA39}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PERT_chart_for_a_project.png|thumb|图10：一个有着五个里程碑（注有10–50）和六个任务（注有A–F）的计划评审图。ADF和BC是[[关键路径]]]]&lt;br /&gt;
[[计划评审技术]]是一种基于有向无环图的计划排定技术，通常用于组织大型的人工项目。在计划评审技术中，每个顶点表示项目的一个 里程碑 (项目管理) Milestone (project management)，每条有向边表示任务或者活动，连接着表示任务开始或结束的两个节点。每条边则被标注上预估需时。图中的[[最长路径问题|最长路径]]即为项目的[[关键路径]]。关键路径决定了项目所需的总时间，里程碑的完成时间取决于结束于本顶点的最长路径。&amp;lt;ref&amp;gt;{{citation |title=What Every Engineer Should Know About Decision Making Under Uncertainty |first=John X. |last=Wang |publisher=CRC Press |year=2002 |isbn=978-0-8247-4373-4 |page=160 |url=https://books.google.com/books?id=C3yKML0dUVIC&amp;amp;pg=PA160}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 数据处理网络 ===&lt;br /&gt;
有向无环图可以用于表示处理数据的元素网络。在网络中，数据从一个元素顶点的入边进入，处理后从出边离开。&lt;br /&gt;
&lt;br /&gt;
在电子电路设计中，静态[[组合逻辑电路]]块可以被表示为由[[逻辑门]]组成的有向无环系统。每个逻辑门对输入做一次函数处理，输入和输出均为一个[[位元]]组。通常，这些电路块的输出不能够再作为输入，除非它们被存储在寄存器或者状态单元中，以保证图不出现环。&amp;lt;ref&amp;gt;{{citation|title=Timing|first=Sachin|last=Sapatnekar|publisher=Springer|year=2004|isbn=978-1-4020-7671-8|page=133|url=https://books.google.com/books?id=fL9k-VkZVr0C&amp;amp;pg=PA133}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''数据式编程 Dataflow programming''' &amp;lt;/font&amp;gt;语言描述针对&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''数据流 Data stream''' &amp;lt;/font&amp;gt;的操作，以及操作的输出和其他操作的输入之间的关系。这类型的语言使得描绘高重复率数据处理任务的变得更加简单，因为同样的数据操作可以应用于许多数据项。数据操作可以用有向无环图来表示。这些数据操作可以被[[平行演算法|并发]]执行，从而高效利用多核心[[中央处理器|处理器]]。&amp;lt;ref&amp;gt;{{citation|title=Programming Symposium|series=Lecture Notes in Computer Science|volume=19|year=1974|pages=362–376|contribution=First version of a data flow procedure language|first=Jack B.|last=Dennis|doi=10.1007/3-540-06859-7_145|isbn=978-3-540-06859-4}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[编译器]]中，直线码（不含条件分支和循环的代码段）可以使用有向无环图表示。图标示出每个算术运算的输入和输出。这种表示法让编译器能执行&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''通用子表达式删除 Common subexpression elimination''' &amp;lt;/font&amp;gt;，使得代码更高效。&amp;lt;ref&amp;gt;{{citation|title=Advanced Backend Optimization|first1=Sid|last1=Touati|first2=Benoit|last2=de Dinechin|publisher=John Wiley &amp;amp; Sons|year=2014|isbn=978-1-118-64894-0|page=123|url=https://books.google.com/books?id=nO2-AwAAQBAJ&amp;amp;pg=PA123}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 因果结构 ===&lt;br /&gt;
{{main|贝叶斯网络}}&lt;br /&gt;
&lt;br /&gt;
用顶点表示事件，边表示[[因果关系]]的图通常是无环的。&amp;lt;ref&amp;gt;{{citation|title=Causal Learning|first1=Alison|last1=Gopnik|first2=Laura|last2=Schulz|publisher=Oxford University Press|year=2007|isbn=978-0-19-803928-0|page=4|url=http://books.google.com/books?id=35MKXlKoXIUC&amp;amp;pg=PA4}}.&amp;lt;/ref&amp;gt;事件由时间上的先后顺序来排列，所有箭头遵循从先发生事件指向后发生事件的原则，因此也不存在环。&lt;br /&gt;
&lt;br /&gt;
举例来说，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt;'''贝叶斯网络 Bayesian network''' &amp;lt;/font&amp;gt;表示多个概率事件的关联网络。顶点表示事件，后续事件的发生可能性则可以通过其在有向无环图的前驱节点的发生概率计算出来。&amp;lt;ref&amp;gt;{{citation|title=Probabilistic Boolean Networks: The Modeling and Control of Gene Regulatory Networks|publisher=Society for Industrial and Applied Mathematics|first1=Ilya|last1=Shmulevich|first2=Edward R.|last2=Dougherty|year=2010|isbn=978-0-89871-692-4|page=58|url=http://books.google.com/books?id=RfshqEgO7KgC&amp;amp;pg=PA58}}.&amp;lt;/ref&amp;gt;在此基础上，一个有向无环图的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''端正图 Moral graph''' &amp;lt;/font&amp;gt;通过以下方法而得到：将单个顶点的所有父节点之间添加一条无向边，再将所有的有向边换成无向边。&amp;lt;ref&amp;gt;{{citation |last1= Cowell |first1= Robert G. |author2-link=Philip Dawid|last2=Dawid|first2=A. Philip|author3-link=Steffen Lauritzen|last3=Lauritzen|first3=Steffen L.|author4-link=David Spiegelhalter|last4=Spiegelhalter|first4=David J.|title= Probabilistic Networks and Expert Systems |publisher= Springer |year= 1999 |isbn= 0-387-98767-3 |chapter= 3.2.1 Moralization|pages= 31–33 }}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
另外一种具有相似因果结构的图是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''影响图 Influence diagram''' &amp;lt;/font&amp;gt;。其顶点表示决策或不确定的事件，边表示两个顶点之间的因果关系。&amp;lt;ref&amp;gt;{{citation|title=The Technology Management Handbook|first=Richard C.|last=Dorf|publisher=CRC Press|year=1998|isbn=978-0-8493-8577-3|page=9-7&amp;lt;!-- Do not conver this hyphen into a dash! It is a section-page number, not a range of page numbers. --&amp;gt;|url=http://books.google.com/books?id=C2u8I0DFo4IC&amp;amp;pg=SA9-PA7}}.&amp;lt;/ref&amp;gt;在流行病学中，这些表示因果关系的图表常常用来评估不同干预手段的效果。&amp;lt;ref&amp;gt;{{citation|title=Encyclopedia of Epidemiology, Volume 1|first=Sarah|last=Boslaugh|publisher=SAGE|year=2008|isbn=978-1-4129-2816-8|page=255|url=http://books.google.com/books?id=wObgnN3x14kC&amp;amp;pg=PA255}}.&amp;lt;/ref&amp;gt;&amp;lt;ref name=pearl:95&amp;gt;{{cite journal|last1=Pearl|first1=Judea|authorlink= Judea Pearl|title=Causal diagrams for empirical research|journal=Biometrika|date=1995|volume=82|issue=4|pages=669–709|doi=10.1093/biomet/82.4.669}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系谱学和版本历史 ===&lt;br /&gt;
[[File:Family_tree_of_the_Ptolemaic_dynasty.jpeg|thumb|upright=1.5|图11：[[托勒密王朝]]的谱系图。]]&lt;br /&gt;
&lt;br /&gt;
[[谱系图]]可以看作是有向无环图，顶点代表家族成员，边代表亲子关系。&amp;lt;ref&amp;gt;{{citation|journal=Algorithms for Molecular Biology|date=April 2011|volume=6|issue=10|pages=10|title=Haplotypes versus genotypes on pedigrees|first=Bonnie B.|last=Kirkpatrick|doi=10.1186/1748-7188-6-10|pmc=3102622|pmid=21504603}}.&amp;lt;/ref&amp;gt;虽然谱系图也被称作为家族“树”, 但近亲结婚导致的 [[血统崩溃 Pedigree collapse]] 会违反树的性质。即一个孩子的祖先既可以从父亲向上追溯，也可以从母亲一侧。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = McGuffin | first1 = M. J.&lt;br /&gt;
 | last2 = Balakrishnan | first2 = R.&lt;br /&gt;
 | contribution = Interactive visualization of genealogical graphs&lt;br /&gt;
 | contribution-url = http://profs.etsmtl.ca/mMcGuffin/research/genealogyVis/genealogyVis.pdf&lt;br /&gt;
 | doi = 10.1109/INFVIS.2005.1532124&lt;br /&gt;
 | pages = 16–23&lt;br /&gt;
 | title = IEEE Symposium on Information Visualization (INFOVIS 2005)&lt;br /&gt;
 | year = 2005| isbn = 978-0-7803-9464-3&lt;br /&gt;
 }}.&amp;lt;/ref&amp;gt;图中的[[母系制度|母系血统]]和[[父系制度|父系血统]]则可以看作为树。因为没有人可以是自己的祖先，谱系图是无环的。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Bender | first1 = Michael A.&lt;br /&gt;
 | last2 = Pemmasani | first2 = Giridhar&lt;br /&gt;
 | last3 = Skiena | first3 = Steven&lt;br /&gt;
 | last4 = Sumazin | first4 = Pavel&lt;br /&gt;
 | contribution = Finding least common ancestors in directed acyclic graphs&lt;br /&gt;
 | contribution-url = http://dl.acm.org/citation.cfm?id=365411.365795&lt;br /&gt;
 | isbn = 978-0-89871-490-6&lt;br /&gt;
 | location = Philadelphia, PA, USA&lt;br /&gt;
 | pages = 845–854&lt;br /&gt;
 | publisher = Society for Industrial and Applied Mathematics&lt;br /&gt;
 | title = Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA '01)&lt;br /&gt;
 | year = 2001}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
基于相同的原因， 一个[[分散式版本控制]]系统的版本历史的结构也是有向无环图。在系统中，每个版本对应一个节点。边连接起有直接衍生关系的两个版本。由于分支合并的存在，这个结构并不能用树来表示。&amp;lt;ref&amp;gt;{{citation|title=Architecture and Methods for Flexible Content Management in Peer-to-Peer Systems|first=Udo|last=Bartlang|publisher=Springer|year=2010|isbn=978-3-8348-9645-2|page=59|url=https://books.google.com/books?id=vXdEAAAAQBAJ&amp;amp;pg=PA59}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[计算几何]]领域，许多随机化算法都会维护一个“历史有向无环图”，用以记录结构变动中的旧几何结构。例如，在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''德劳内三角化 Delaunay triangulation''' &amp;lt;/font&amp;gt;的随机增量算法中，在添加每个点时，通过用三个较小的三角形替换一个三角形，以及通过“翻转”操作将三角形对替换为另一对三角形，来改变三角剖分。在该算法的历史有向无环图中，每个在算法中构建出的三角形对应一个顶点，边则将每个三角形和替代它的两个或三个三角形连接起来。这种图结构可以高效地处理&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''点定位 Point location''' &amp;lt;/font&amp;gt;问题，即对于一个查询点{{mvar|q}}，找到它在德勞內三角剖分中的位置。在历史有向无环图中，从起点开始，不断移动到包含{{mvar|q}}的替代三角形组，最后到达的终点必定代表包含q的德劳内三角形。&amp;lt;ref&amp;gt;{{citation|title=Combinatorial Geometry and Its Algorithmic Applications: The Alcalá Lectures|volume=152|series=Mathematical surveys and monographs|first1=János|last1=Pach|author1-link=János Pach|first2=Micha|last2=Sharir|author2-link=Micha Sharir|publisher=American Mathematical Society|isbn=978-0-8218-7533-9|pages=93–94|url=https://books.google.com/books?id=-fguzNaYoqcC&amp;amp;pg=PA93}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 引用图 ===&lt;br /&gt;
在&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用图 Citation graph''' &amp;lt;/font&amp;gt;中， 每个顶点代表单篇著作，边代表著作之间的[[參考文獻|引用]]关系。1965年[[德瑞克·约翰·德索拉·普莱斯|普莱斯]]的文章“科学文献的网络”是使用引用图的一个经典例子。&amp;lt;ref&amp;gt;{{citation | last = Price | first = Derek J. de Solla | date = July 30, 1965 | doi = 10.1126/science.149.3683.510 | issue = 3683 | journal = [[科学 (期刊)|Science]] | pages = 510–515 | pmid = 14325149 | title = Networks of Scientific Papers | url = http://garfield.library.upenn.edu/papers/pricenetworks1965.pdf | volume = 149| bibcode = 1965Sci...149..510D }}.&amp;lt;/ref&amp;gt;在引用图中，每篇论文的&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''引用影响（引用次数） Citation impact''' &amp;lt;/font&amp;gt;为对应顶点的入度。这是[[引文分析]]中的一种重要的展示方式。另一个例子是[[裁判 (法律)|法律裁判]]中，法官通过引用过往案例中的判决来支持他们的结论。引用图亦可以用来描绘[[专利]]，因为专利必须要提及[[现有技术]]，即已经公开的并且和本专利有关的先前专利。&lt;br /&gt;
&lt;br /&gt;
相较于[[网络科学]]中对一般图的研究，有向无环图的独特性质可以被用来作深层次分析。例如，传递规约可以呈现引用在不同应用领域的分布情况，这突出了不同领域中不同的引用网构造机制。&amp;lt;ref&amp;gt;{{citation | last1 = Clough | first1 = James R. | last2 = Gollings | first2 = Jamie | last3 = Loach | first3 = Tamar V. | last4 = Evans | first4 = Tim S. | doi = 10.1093/comnet/cnu039 | issue = 2 | journal = Journal of Complex Networks | pages = 189–203 | title = Transitive reduction of citation networks | volume = 3| arxiv = 1310.8224 | year = 2015 }}.&amp;lt;/ref&amp;gt;引用图的衍生概念还有&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''主干道路分析 Main path analysis''' &amp;lt;/font&amp;gt;，即对引用图中最显著的一条路径的分析。&lt;br /&gt;
&lt;br /&gt;
=== 数据压缩 ===&lt;br /&gt;
[[Image:分别用trie（左）和有向无环词图（右）存放英文单词.png|thumb|right|250px|图12：分别用trie（左）和有向无环词图（右）存放英文单词“tap”，“taps”，“top”和“tops”。&amp;lt;tt&amp;gt;EOW&amp;lt;/tt&amp;gt;表示单词结束。]]&lt;br /&gt;
有向无环图也可以用于对一系列序列的[[数据压缩|压缩]]中。在这里，有向无环图中的路径代表这些序列。当多个序列有共同的子序列时，子序列可以被表示为这些序列对应路径的公共边。比起直接列出所有序列，这种方法占用更少空间。例如，&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''无环确定有限状态自动机 Deterministic acyclic finite state automaton''' &amp;lt;/font&amp;gt;为仅含单个源（入度为0的顶点）的有向无环图，其每条边附有一个或多个字符。每条其源到汇（出度为0的节点）的路径均代表一个[[字符串]]，字符串可以是英文单词。&amp;lt;ref&amp;gt;{{citation | first1=Maxime | last1=Crochemore | first2=Renaud | last2=Vérin | contribution=Direct construction of compact directed acyclic word graphs | series=Lecture Notes in Computer Science | publisher=Springer | title=Combinatorial Pattern Matching | volume=1264 | year=1997 | pages=116–129 | doi=10.1007/3-540-63220-4_55 | isbn=978-3-540-63220-7 | citeseerx=10.1.1.53.6273 }}.&amp;lt;/ref&amp;gt;与其结构不同但功能相似的树称为[[trie]]。相比于trie，有向无环词图允许多条边指向同一个顶点，使得具有相同后缀的一些词的词头可以被相同的顶点所表示，因而更省空间。&amp;lt;ref&amp;gt;{{citation|title=Applied Combinatorics on Words|volume=105|series=Encyclopedia of Mathematics and its Applications|first=M.|last=Lothaire|authorlink=M. Lothaire|publisher=Cambridge University Press|year=2005|isbn=9780521848022|page=18|url=https://books.google.com/books?id=fpLUNkj1T1EC&amp;amp;pg=PA18}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[二元决策图]]是基于有向无环图的一种数据结构，用于表示[[布尔函数]]&amp;lt;ref&amp;gt;{{citation|first=C. Y.|last=Lee|title=Representation of switching circuits by binary-decision programs|journal=Bell System Technical Journal|volume=38|issue=4|pages=985–999|year=1959|doi=10.1002/j.1538-7305.1959.tb01585.x}}.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{citation|first=Sheldon B.|last=Akers|doi=10.1109/TC.1978.1675141|title=Binary decision diagrams|journal=IEEE Transactions on Computers|volume=C-27|issue=6|pages=509–516|year=1978}}.&amp;lt;/ref&amp;gt;。在二元决策图中，每个非汇节点对应一个布尔变量，每个汇和边则表示0或1。要找到一个[[解释 (逻辑)|解释]]的真值，只要从唯一的源顶点出发，沿着该顶点代表的布尔变量的实际真值所对应的出边一直前进，到达的汇则为其真值。如同有向无环词图可以被看作是trie的一种压缩形式一样，二元决策图可以被看作是&amp;lt;font color=&amp;quot;#ff8000&amp;quot;&amp;gt; '''决策树''' &amp;lt;/font&amp;gt;的压缩形式。它通过将导向相同结果的边重新汇合到一个顶点来节省空间。&amp;lt;ref&amp;gt;{{citation&lt;br /&gt;
 | last1 = Friedman | first1 = S. J.&lt;br /&gt;
 | last2 = Supowit | first2 = K. J.&lt;br /&gt;
 | contribution = Finding the optimal variable ordering for binary decision diagrams&lt;br /&gt;
 | doi = 10.1145/37888.37941&lt;br /&gt;
 | isbn = 978-0-8186-0781-3&lt;br /&gt;
 | location = New York, NY, USA&lt;br /&gt;
 | pages = 348–356&lt;br /&gt;
 | publisher = ACM&lt;br /&gt;
 | title = Proc. 24th ACM/IEEE Design Automation Conference (DAC '87)&lt;br /&gt;
 | year = 1987}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
{{圖論}}&lt;/div&gt;</summary>
		<author><name>孙钦贵</name></author>
	</entry>
</feed>