摘要:
Floyd算法用于求每一对顶点间的最短距离。与Dijkstra算法相比较,时间复杂度均为O(n2),但Floyd算法形式上更简单一些。一、Floyd算法的原理首先记录两点间无其他中间顶点的距离(Vi---Vj),加一个顶点为中间点,记录加一个顶点后两点间的最短距离,以此类推,加完N个顶点后两点间的最短距离即可求出。二、算法实现 用三重循环实现。用二维数组表示顶点到顶点的距离。如D[i][j]表示从i到j点的距离。第一层循环依次加顶点,第二层循环遍历Vi点,第三层循环遍历Vj点。/*graph.h文件*///---------图的数组(邻接矩阵)存储表示----------#include... 阅读全文
posted @ 2013-04-12 12:57
Coding for myself
阅读(631)
评论(0)
推荐(0)
摘要:
Dijkstra算法思想及实现一、算法思想首先,引进一个辅助向量D,它的每个分量D[i]表示当前所找到的从始点v到每个终点vi的最短路径的长度。如D[3]=2表示从始点v到终点3的路径相对最小长度为2。这里强调相对就是说在算法过程中D[i]的值是在不断逼近最终结果但在过程中不一定就等于最短路径长度。它的初始状态为:若从v到vi有弧,则D[i]为弧上的权值;否则置D[i]为∞。显然,长度为D[j]=Min{D[i]|vi∈V}的路径就是从v出发的长度最短的一条最短路径。此路径为(v,vj)。那么,下一条长度次短的最短路径是哪一条呢?假设该次短路径的终点是vk,则可想而知,这条路径或者是(v,vk 阅读全文
posted @ 2013-04-12 12:34
Coding for myself
阅读(704)
评论(0)
推荐(0)
摘要:
第一节图的基本概念1.图的定义和术语图是一种数据结构。ADTGraph{数据对象V:V是据有相同特性的数据元素的集合,称为顶点集。数据关系R:R={VR}VR={<v,w>|v,w∈V且P(v,w),<v,w>表示从v到w的弧,P(v,w)定义了弧<v,w>的意义或信息}图中的数据元素通常称为顶点,V是顶点的有穷非空集合;VR是两个顶点之间的关系的集合,若顶点间是以有向的弧连接的,则该图称为有向图,若是以无向的边连接的则称为无向图。弧或边有权值的称为网,无权值的称为图。2.图的存储结构邻接表、邻接多重表、十字链表和数组。这里我们只介绍数组表示法。图的数组表示 阅读全文
posted @ 2013-04-12 10:46
Coding for myself
阅读(450)
评论(0)
推荐(0)
浙公网安备 33010602011771号