草稿箱放风2.0。躺了几个月到几年不等的草稿们终于迎来了春天。
之前在《数据结构》的课程、《离散数学》的课程,甚至《计算机图形学》中都接触过图论算法,现在网上搜罗若干经典图论算法,以便后用。
1-3中,待求网络是带权图,所谓的“短”和“小”指的是权值最小。
1. Dijkstra算法
求单源最短路径的算法。即求网络中某个特定点v到网络中其他所有节点的最短路径。
2. Floyd算法
求网络中任意两点间最短路径的算法。
3. Prim算法
求连通图中最小生成树的算法。
最小生成树即由网络中的节点和边组成的树,该树连接了网络中的所有节点。
4. 拓扑排序算法
给有向无环图中的节点排序:若(i,j)是网络中的边,则在排序中i在j的前面。
应用:有向无环图可看成AOV活动网。节点可看作某种活动,边(i,j)表示活动i必须先与活动j进行。如,一个学生选课,数据结构的先修课是计算机基础,那么只有修完计算机基础之后才能修数据结构。拓扑排序相当于给出了一个上课的顺序。
5. 最大流问题
最大流研究的网络用G(V,E,C)表示。其中,V,E,C分别表示节点集合,边集合,以及边的容量集合。
网络的最大流,即在一个单源点,但汇点的网络流中找到一条容量最大的路径。
对于多源点、多汇点的情况:在网络中增加s和t两个点,其中s连接所有源点,t连接所有汇点,连边的权重设为无穷。
<