码迷,mamicode.com
首页 > 编程语言 > 详细

单源最短路(bellman-ford算法+dijkstra算法)+任意两点最短路(floyd-warshall算法)

时间:2018-01-21 19:12:18      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:from   详细   amp   表示   class   void   struct   rsh   upd   

ps:本来是复习图论的,最后变成了预习,隔了一段时间简直了,重新学过!

哈哈哈哈哈哈哈,,真的菜啊!

 

   单源最短路问题是求,,固定一个起点,求它到其他所有点的最短路问题。

  两点之间最短路是求,固定起点和终点求最短路

两者没有根本区别,复杂度也是一样的

 

1,单源最短路1 bellman-ford算法

核心算法:

d[i]=min(d[j]+(从顶点j到顶点i边的权值),d[i])

d【i】表示任意点到顶点i的最短距离

一般初始化为INF,,然后起点d【s】初始化0。

只要图中不存在负圈(负圈是指两点间权值为负数所形成的圈)更新操作就是有限的

struct edge// 从顶点from——>to的权值为cost的边
{
    int from;   
    int to;
    int cost;
};
edge es[maxn];  //
int d[maxn];    //最短距离
int v,b;        //分别为顶点和边数
void bellman(int s)//从顶点开始递归
{
   for(int i=0;i<v;i++)
        d[i]=INF;//先把所有顶点的最短距离设为最大,排除自圈
   d[s]=0;//初始化起点
   while(true)
   {
       bool vis=false;
       for(int i=0;i<b;i++)
       {
           edge e=es[i];
           if(d[e.from]!=INF&&d[e.to]>d[e.from]+e.cost)
           {
               d[e.to]=d[e.from]+e.cost;
               update=true;
           }
       }
       if(!update)break;
   }
   
}

算了找到了大佬的详细思路,我看懂了再来补把

 

bellman-ford算法:http://www.wutianqi.com/?p=1912

 

dijkstra算法:http://www.wutianqi.com/?p=1890

 

 

 floyd算法:http://www.wutianqi.com/?p=1903

 

单源最短路(bellman-ford算法+dijkstra算法)+任意两点最短路(floyd-warshall算法)

标签:from   详细   amp   表示   class   void   struct   rsh   upd   

原文地址:https://www.cnblogs.com/huangzzz/p/8324814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!