Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。/*图的邻接矩阵表示*/typedef struct _graph{ int vexs[MAX]; int vnum; int enum.....
分类:
其他好文 时间:
2014-08-14 23:49:16
阅读次数:
203
顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情...
分类:
其他好文 时间:
2014-08-09 18:12:58
阅读次数:
338
Dijkstra算法是解单源最短路径问题的贪心算法。其基本思想是,设置顶点集合点集合S并不断地做贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设u是G的其一顶点。把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组Distance记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路长度...
分类:
其他好文 时间:
2014-08-09 13:31:37
阅读次数:
271
Floyd算法
Dijkstra算法是用于解决单源最短路径问题的,Floyd算法则是解决点对之间最短路径问题的。Floyd算法的设计策略是动态规划,而Dijkstra采取的是贪心策略。当然,贪心算法就是动态规划的特例。
算法思想
点对之间的最短路径只会有两种情况:
两点之间有边相连,weight(Vi,Vj)即是最小的。
通过另一点:中介点,两点相连,使weight(Vi,Vk)+weight(Vk,Vj)最小。
Min_Distance(Vi,Vj)=min{weight(Vi,Vj)...
分类:
其他好文 时间:
2014-08-04 14:25:07
阅读次数:
275
单源最短路径
给定一带权图,图中每条边的权值是非负的,代表着两顶点之间的距离。指定图中的一顶点为源点,找出源点到其它顶点的最短路径和其长度的问题,即是单源最短路径问题。
Dijkstra算法
求解单源最短路径问题的常用方法是Dijkstra(迪杰斯特拉)算法。该算法使用的是贪心策略:每次都找出剩余顶点中与源点距离最近的一个顶点。
算法思想
带权图G=,令S为已确定了最短路径顶点的集合,则可用V-S表示剩余未确定最短路径顶点的集合。假设V0是源点,则初始 S={V0}。...
分类:
其他好文 时间:
2014-08-03 23:24:16
阅读次数:
392
如图,求V0到其他顶点的最短路径及其长度,
废话少说,用Dijkstra算法。我在《数据结构(C语言版)》里面的代码的基础上写了一个直接保存路径的版本。看代码,
#include
#include
using namespace std;
#define MAXINT 1000000
// src -- 为源节点
// g[][] -- 有向图的邻接矩阵
//...
分类:
其他好文 时间:
2014-08-02 18:31:54
阅读次数:
321
链接:http://poj.org/problem?id=2253
题意:一个青蛙在一块石头上,看到了另一个青蛙在另一块石头上,它想跳过去找它,如果距离太远它就需要借助别的石头当跳板,两块石头之间的青蛙距离被定义成两块石头之间所有路径中最大跳跃距离的最小值,求两个青蛙之间的青蛙距离。
poj2263和它类似,链接:http://poj.org/problem?id=2263
解题报告...
分类:
其他好文 时间:
2014-08-01 16:03:11
阅读次数:
287
单源最短路问题 Bellman-Ford 代码(C)本文地址: http://blog.csdn.net/caroline_wendy单源最短路: 固定一个起点, 求它到其他所有点的最短路的问题.Bellman-Ford: 设当前到顶点i的最短路长度为d[i], 并设初值d[s]=0, d[i]=INF, 再不断使用递推关系式d[e.to] = d[e.from] + e.cost更新d的值.代码...
分类:
其他好文 时间:
2014-07-28 00:19:29
阅读次数:
248
Dijkstra算法:解决的问题: 带权重的有向图上单源最短路径问题。且权重都为非负值。如果采用的实现方法合适,Dijkstra运行时间要低于Bellman-Ford算法。思路: 如果存在一条从i到j的最短路径(Vi.....Vk,Vj),Vk是Vj前面的一顶点。那么(Vi...Vk)也必定是从.....
分类:
其他好文 时间:
2014-07-23 22:11:57
阅读次数:
290
之后的题解偏重实用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也可以放放。
很久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话可以分为以下几种。
1、单源最短路:已知起点(终点),计算从源点到其他各个顶点的最短路径长度。
典型算法:Dijkstra,Bellman-Ford(可以算负的,比较慢),spfa(负权能用,加了松弛操作,速度比较炸天)
2、全...
分类:
其他好文 时间:
2014-07-21 23:27:49
阅读次数:
267