摘要: 【1】拓扑排序在一个表示工程的有向图中,有顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称为AOV网。AOV网中的弧表示活动之间存在的某种制约关系。所谓拓扑排序,其实就是对一个有向图构造拓扑序列的过程。【2】拓扑排序算法对AOV网进行拓扑排序的基本思路:从AOV网中选择一个入度为0的顶点输出;然后删除此顶点,并删除以次顶点为尾的弧;继续重复此操作.....直到输出全部顶点或AOV网中不存在入度为0的顶点为止。由于拓扑排序过程中,需要删除顶点,显然用邻接表更加方便。因此我们需要为AOV网建立一个邻接表。另外,考虑到算法过程中始终需要查找入度为0的顶点?需要在原顶点 阅读全文
posted @ 2013-12-05 19:31 kaizenly 阅读(27916) 评论(0) 推荐(0)
摘要: 【1】为什么需要弗洛伊德算法?带权图中单个源点到所有顶点的最短路径问题可以用《迪杰斯特拉算法》求解。那如果要求图中每一个顶点与其它顶点之间的最短路径呢?类似可以想到的方法为:每次以一个顶点为源点,重复执行地杰斯特拉算法算法n次。这样,理论上我们便可以求得每一个顶点与其它顶点的最短路径,总的执行时间为O(n3)。好吧!为了实现这个中需求,可以采用另外一种求解算法:弗洛伊德算法。为了更好的理解弗洛伊德算法的精妙,我们先看简单的案例。如下图是一个最简单的3个顶点连通网图:【2】弗洛伊德算法弗洛伊德算法是非常漂亮的算法,简洁直观大气上档次。不过很可惜由于它的三重循环,因此也是O(n*n*n)的时间复杂 阅读全文
posted @ 2013-12-05 16:14 kaizenly 阅读(25740) 评论(2) 推荐(2)
摘要: 【1】最短路径 最短路径?别乱想哈,其实就是字面意思,一个带边值的图中从某一个顶点到另外一个顶点的最短路径。 官方定义:对于内网图而言,最短路径是指两顶点之间经过的边上权值之和最小的路径。并且我们称路径上的第一个顶点为源点,最后一个顶点为终点。由于非内网图没有边上的权值,所谓的最短路径其实是指两顶点之间经过的边数最少的路径。 别废话了!整点实际的哈,你能很快计算出下图中由源点V0到终点V8的最短路径吗? 【2】迪杰斯特拉算法 迪杰斯特拉算法是按路径长度递增的次序产生最短路径的思路求解。 具体算法及其详细讲解如下:阅读程序前,先要搞明白几个数组作用: final[w]=1; 表示V0到Vw顶点已 阅读全文
posted @ 2013-12-05 00:56 kaizenly 阅读(88174) 评论(17) 推荐(11)
打赏