有向无环图

一、什么是有向无环图(DGA)

首先我们需要知道怎样才算一个图,这里的图指的是离散数学中的图。在我们的认知中,两点可以确定一条直线,多条直线就能组成一张图。

当我们用集合来表示的时候,图就是由点的有穷非空集合以及线的集合所组成。在离散数学中,图是用于表示物体与物体之间关系的一种结构,

然后呢,将物体抽象为“顶点”或者“节点”,物体间的关系抽象为边。这时我们用符号来表示这个集合G = (V,E),V代表顶点的集合,E就代表边的集合。

 

接下来就是正题,有向无环图。有向很好理解,就是两个顶点之间是有方向的,比如A指向B。那么什么是无环呢,假设从A到B有一条边,并且方向是从A指向B

然后B又指向另外一个顶点构成一张有向图(图中两个顶点之间都有方向)。简单理解就是,我从A出发,不管我怎么走我都不能回到A,这就是无环,那么反之

只要我有一条路能让我回到我出发的那个顶点就表示有环

上图就是一个有向无环图,需要注意的是无环的定义,不能简单的认为顶点之间不能围成一个环而是你从一个顶点出发不论怎么走都不能回到起点。

我们以上图的11当做起点,它能到达2,10,9,但是回不到11。

二、有向无环图的一些性质

1.在算法中有向无环图的最短路径或者最长路径通常使用拓扑排序,可以使时间复杂度变为线性的。将顶点拓扑排序后,从前到后遍历每一个顶点,

对于遍历到的顶点,更新其所有出边所到达顶点的长度值。这个时候我们求最短路就只需要选择短的边既可。

2.任何的有向树都能转化为有向无环图,但是反过来则不一定,因为有向无环图中从一个顶点到另外一个顶点有可能存在两条路。

 

posted @ 2023-11-25 19:16  clinx000  阅读(536)  评论(0编辑  收藏  举报