提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、最小生成树
1.1 Prim算法
算法步骤:
步骤一:树T初始状态为空;
步骤二:从图中任意选取一个点加入T;
步骤三:从图中找出能与T形成树的所有边,将代价最小的边加入T,形成新的树T;
步骤四:检查T中边的条数;
步骤五:如果条数小于n-1,返回步骤三,否则程序结束,T为最小代价生成树。
示例:
1.2 Kruskal算法
算法步骤:
(1)将图G看做一个森林,每个顶点为一棵独立的树
(2)将所有的边加入集合S,即一开始S = E
(3)从S中拿出一条最短的边(u,v),如果(u,v)不在同一棵树内,则连接u,v合并这两棵树,同时将(u,v)加入生成树的边集E’
(4)重复(3)直到所有点属于同一棵树,边集E’就是一棵最小生成树
示例:
二、最短路径
2.1 Dijkstra算法
算法步骤:
示例:
2.2 Floyd算法
算法步骤:
示例:
三、有向无环图描述表达式
算法步骤:
1)把各个操作数不重复地排成一排
2)标出各个运算符的生效顺序(先后顺序优点出入无所谓,比如先算左边括号或者先算右边括号,当然是同级的情况)
3)按顺序加入运算符,不同的运算级别层次不同,过程中如果已经存在某部分,则直接用
4)最后生成的图就是有向无环图
示例:
四、拓扑排序
参考
算法步骤:
① 输入AOV网络。令 n 为顶点个数。
② 在AOV网络中选一个入度为0的结点, 并输出之;(关键步)
③ 从图中删去该顶点, 同时删去所有它发出的有向 边;
④ 重复以上 ②、③步, 直到下面的情况之一出现: (1)全部顶点均已输出,拓扑有序序列形成,拓 扑排序完成; (2)图中还有未输出的顶点, 但已没有入度为0的 结点(说明网络中必存在有向环)。
示例: