Dijkstra算法虽好,但是不能解决带负权边的图,而Bellman-Ford就是解决这个问题的
在一个含有n个顶点的图中,任意两点之间的最短路径最多包含n-1条边,最短路径中不可能包含回路.
最短路径是一个不包含回路的简单路径,回路分为正权回路(回路权值之和为正)和负权回路(回路权值之和为负). 如果最短路径中包含正权回路,那么去掉这个回路,一定可以得到更短的路径;如果最短路径中包含...
分类:
其他好文 时间:
2014-12-04 23:15:21
阅读次数:
283
算法思想:每次找到离源点最近的顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径.时间复杂度是O(N^2).
基本步骤:
将所有的顶点分为两部分,已知最短路程的顶点集合S和未知最短路径的顶点集合V. 最开始,已知最短路径在集合S中只有源点一个顶点,用book数组来标记哪些点在集合S中.设置源点p到自己的最短路径为0(即dis[p] = 0). 若存在有源点能直接到达的...
分类:
编程语言 时间:
2014-12-04 21:39:59
阅读次数:
269
最短路径问题,首先想到了贪心算法实现的dijkstra算法;这道题我用了链表的存储方式,其实用邻接矩阵也可以,主要为了练手,并且链表比矩阵要节约空间;
题目描述:
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
输入:
输入n,m,点的编号是1~n,然后是m行,每行4个数 ...
分类:
其他好文 时间:
2014-12-04 15:36:05
阅读次数:
165
数据结构课图作业之最短路。 1 #include 2 #include 3 using namespace std; 4 5 #define N 120 6 #define INF 0x3f3f3f3f 7 #define _clr(x, y) memset(x, y, sizeof(x)) ...
分类:
编程语言 时间:
2014-12-03 14:15:24
阅读次数:
112
1031_Campus题目链接:http://soj.me/1031题目大意:给出四个校区的一些地点之间的距离,地点名用字符串来表示,问某两个地点之间的最短路径长度,典型的单源最短路径题目思路:单源最短路径问题可以用dijkstra算法实现,这道题比较麻烦的是用字符串来表示地点,我用的处理方法是建立...
分类:
其他好文 时间:
2014-11-26 10:56:02
阅读次数:
232
一个人的旅行
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 20267 Accepted Submission(s): 7081
Problem Description
虽然草儿是个路痴(就是在杭电待了一年...
分类:
编程语言 时间:
2014-11-22 18:56:12
阅读次数:
205
1321_Robot题目链接:http://soj.me/1321题目大意:给一个矩阵,每一个点上面的数字表示走到该点需要的花费,找出给定起点到终点的最小总花费思路:每个格子看作一个结点,花费可以看作从上一个点走到这个点的路程,那么这道题就是典型的最短路径问题,可以用Dijkstra算法解决。一开始...
分类:
其他好文 时间:
2014-11-21 01:26:41
阅读次数:
235
Dijkstra算法,是有向/无向加权图(就是每条边都有长度)中,计算两个点之间最短距离的有效方法,在使用堆排序的情况下,它的时间复杂度为O(Nlog(N+M)),(这里N代表节点数,M代表边数)很接近线性了,还是非常好的。
不过,Dijkstra算法有一个限制,就是它只适用于边长不为负的图。如果一张图里有负数长的边长,那么Dijkstra算法就不适用了。这时候就需要另外的算法了。
为什么不适用呢?其实很容易就可以找到反例。...
分类:
编程语言 时间:
2014-11-20 23:46:29
阅读次数:
278
一:说明
(1)使用floyd实现各个站点的计算记录和路径
(2)站点获取和初始距离根据外部文件得到
(3)结果以外部文件的形式存储
(4)站点间转乘,认为初始值也为1
(5)代码注释比较详细,如有疑问或者代码有,请联系我,谢谢
(6)java中二维数据的定义:
a: float[][] numthree; //定义一个float类型的2维数组
...
分类:
编程语言 时间:
2014-11-13 12:58:05
阅读次数:
209
Dijkstra算法又称单源点距离最短问题设一个图中有V0,V1,V2,V3...等顶点,这里设求的是V0到V1,V2,...的最短距离基本思想V0到剩余顶点的直接距离dist[](不经过其他任何节点,没有联通的设为无穷大)中,找出一个最小的,设其顶点为V1,这里我们就求出了V0到V1的最短距离。将...
分类:
编程语言 时间:
2014-11-12 00:20:15
阅读次数:
273