一、什么是有向无环图(DGA)
首先我们需要知道怎样才算一个图,这里的图指的是离散数学中的图。在我们的认知中,两点可以确定一条直线,多条直线就能组成一张图。
当我们用集合来表示的时候,图就是由点的有穷非空集合以及线的集合所组成。在离散数学中,图是用于表示物体与物体之间关系的一种结构,
然后呢,将物体抽象为“顶点”或者“节点”,将物体间的关系抽象为边。这时我们用符号来表示这个集合G = (V,E),V代表顶点的集合,E就代表
边的集合。
接下来就是正题,有向无环图。有向很好理解,就是两个顶点之间是有方向的,比如A指向B。那么什么是无环呢,假设从A到B有一条边,并且方向是从A指向B
然后B又指向另外一个顶点构成一张有向图(图中两个顶点之间都有方向)。简单理解就是,我从A出发,不管我怎么走我都不能回到A,这就是无环,那么反之
只要我有一条路能让我回到我出发的那个顶点就表示有环。
上图就是一个有向无环图,需要注意的是无环的定义,不能简单的认为顶点之间不能围成一个环,而是你从一个顶点出发不论怎么走都不能回到起点。
我们以上图的11当做起点,它能到达2,10,9,但是回不到11。
二、有向无环图的一些性质
1.在算法中有向无环图的最短路径或者最长路径通常使用拓扑排序,可以使时间复杂度变为线性的。将顶点拓扑排序后,从前到后遍历每一个顶点,
对于遍历到的顶点,更新其所有出边所到达顶点的长度值。这个时候我们求最短路就只需要选择短的边既可。
2.任何的有向树都能转化为有向无环图,但是反过来则不一定,因为有向无环图中从一个顶点到另外一个顶点有可能存在两条路。
标签:物体,无环,离散数学,环图,集合,顶点 From: https://www.cnblogs.com/linx000/p/17855843.html