图算法

更新时间:2022-09-13 21:25

图算法指利用特制的线条算图求得答案的一种简便算法。无向图、有向图和网络能运用很多常用的图算法,这些算法包括:各种遍历算法(这些遍历类似于树的遍历),寻找最短路径的算法,寻找网络中最低代价路径的算法,回答一些简单相关问题(例如,图是否是连通的,图中两个顶点间的最短路径是什么,等等)的算法。图算法可应用到多种场合,例如:优化管道、路由表、快递服务、通信网站等。

定义

在计算中,常将运算方程或实验结果绘制成由若干有标尺的线条所组成的图,称为“算图”或“诺模图”。计算时根据已知条件,从有关线段上一点开始,连结相关线段上的点,连线与表示所求量线段的交点即为答案。

无向图有向图网络能运用很多常用的图算法。这些算法包括:各种遍历算法(这些遍历类似于树的遍历),寻找最短路径的算法,寻找网络中最低代价路径的算法,回答一些简单相关问题(例如,图是否是连通的,图中两个顶点间的最短路径是什么,等等)的算法。

常用的图算法

图的遍历

图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作是图的一种基本操作,图的许多操作都建立在遍历操作的基础之上。

由于图中节点之间的关系是任意的,所以图的遍历要比树的遍历复杂,主要表现在以下四个方面:

(1)在图结构中,没有一个明显的首结点,图中任意一个顶点都可作为第一个被访问的结点,所以要提供首结点。

(2) 在非连通图中,从一个顶点出发,只能够访问它所在的连通分量上的所有顶点,因此,还需考虑如何选取下一个出发点,以访问图中其余的连通分量。

(3)在图结构中,可能有回路存在,那么一个顶点被访问之后,有可能沿回路又回到该顶点,在访问之前,需要判断结点是否已经被访问过。

(4)在图结构中,一个顶点可以和其它多个顶点相连,当这样的顶点访问过后,存在如何选取下一个要访问的顶点的问题。

因此,在遍历图时,为保证图中各顶点在遍历的过程中访问且仅一次,需要为每个顶点设计一个访问标记,设置一个数组,用于标示图中每个顶点被访问过,它的初始值全部为0,表示顶点均未被访问过;某个顶点被访问后,将相应访问标志数组中的值设为1,以表示该顶点已经被访问过。

通常,图的遍历有两种:

(1)深度优先遍历搜索;

(2)广度优先遍历搜索。

最小生成树

对于有n个顶点的无向连通图,至少有n-1条边,而生成树恰好有n-1条边,所以生成树是图的极小连通子图。如果无向连通图是一个网,那么它的所有生成树中必有一棵边的权值总和最小的生成树,称这颗生成树为最小生成树。

最小生成树可以用普里姆算法克鲁斯卡尔算法求出。

最短路径

1.从一个源点到其它各点的最短路径,可使用迪杰斯特拉算法来求最短路径。

2.每一对顶点之间的最短路径,可使用弗洛伊德算法来求解。

应用

优化管道

用来解决传输水、油或其它液体等实际问题的方法。如果管道的分发点代表图中顶点,连接这些分发点的管道作为图的边,并且其代价由图中边的代价决定,那么最小生成树提供了一个最好的方法来布置一个可以连接所有分发点的管道模型。

路由表

在互联网中,路由器利用路由表直接寻址转发数据。路由器存在的目的是将数据传送到离目的更近的地方。在某些路由过程中,路由器会周期性的计算它到另一个路由器的最短路径,这样它们就知道接下来将数据发送到哪个目的地址是最佳方案。

快递服务

它是一种通常需要访问很多地方以取包裹和发包裹的服务。如果解决了旅行商问题,就能过为车辆指明一条最有效的路径,每个地址只能访问一次,并最终回到其起始点。

通信网络

网络包含许多不同类型的设备,包括电话网、中继站、卫星系统等,所有这些设备都必须放置于最优的位置。用带图建模网络,并通过计算最小生成树来找到最优的方案。

航路选择

这是一个对航空公司和空中交通管制机构很重要的优化问题。通常飞机不能从一个地方直接飞到另一个地方。所以,他们在空中建立航线或高速航道,这些航道同时考虑了风速、机票的费用和空中交通管制的限制。那么,考虑了所有以上的这些因素后,两地之间的最佳航线就是图中权值最小的路径。

闭合运输系统

在这种系统中,运输车或送货车要多次访问某个地点。这样的系统多用于工厂中货物传递或仓库中的储货搬运。解决旅行商问题可以为此提供最佳的路径解决方案。

有线电路板

电子制造业中的一个优化问题。通常,使电路板上一些组件的引脚相互之间连接起来是必要的。如果每个引脚代表图中的一个顶点,其连线作为边,且边的权由连线的数量决定。那么最小生成树能提供一种连接引脚的最优方法。

交通监控

观察交通流量的变化,并以此变化来确定城市中两点之间最佳路线的过程。为了避免过多的交通延误,可以使用一个带权图来对交通流量建模,然后对寻找路口到路口间流量最小的路径。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}