图的最短路径算法

来源:互联网 发布:北京大学远程网络教育 编辑:程序博客网 时间:2024/05/19 17:08

最短路径问题的抽象

在网络中(带权图),求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径。

  • 这条路径就是两点之间的最短路径(Shortest Path)
  • 第一个顶点为源点(Source)
  • 最后一个顶点为终点(Destination)

最短路径问题,其实不是一个问题,而是一套问题,这一套问题至少可以分为两大类:

  • 单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径。
    • 无权图
    • 有权图
  • 多源最短路径问题:求任意两顶点间的最短路径。

.
.
.

无权图的单源最短路算法

  • 按照递增的顺序找出到各个顶点的最短路
  • 将BFS搜索算法修改成为无权图单源最短路算法,其中dist[ W ]表示S到W的最短距离。由于dist[] 初始化时可以设置为一个特别的数,所以dist[ W ]还可以用来标识W是否已被访问过。Path[ W ],S到W的路上经过的某顶点
void BFS ( Vertex V ) {    visited[ V ] = true;    Enqueue( V, Q );    while ( !IsEmpty( Q ) ){        V = Dequeue( Q );        for ( V的每个邻接点W ){            if ( !visited[ W ] ){                visited[ W ] = true;                Enqueue( W, Q );            }        }    }}

修改为:

 void Unweighted( Vertex S ){      Enqueue( S, Q );      while ( !IsEmpty( Q ) ){          V = Dequeue( Q );          for ( V的每个邻接点W ){              if( dist[ W ] == -1 ){ //如果W被访问过,dist[W]显然不可能为-1                  dist[ W ] = dist[ V ] + 1;                  path[ W ] = V;                  Enqueue( W, Q );             }          }      }  }

利用Path[ ]和堆栈,可以推出S到D经过的路径。
时间复杂度:T = O(V + E)
.
.
.
.
有权图的单源最短路算法
Dijkstra算法

待续
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 合同员工签字了老板一直未签怎么办 下体长毛了很多肉芽很痒怎么办 对方拟把假离婚协议弄假成真怎么办 领主之塔改版后旧材料怎么办 汽车遥控钥匙打不开车门怎么办 苹果手机访问限制密码忘了怎么办 苹果的访问限制密码忘了怎么办 手机下雨天进水声音出了问题怎么办 胸太小了该怎么办经常揉胸会变大吗 鼻冲洗器冲鼻子耳朵进水怎么办 手表进水了然后里面有水珠怎么办 玩游戏后头晕恶心想吐怎么办 吃完美林3小时后又发烧怎么办 颜值和身材都是负分怎么办 妈妈离婚又有一个孩子我该怎么办 孩子妈妈天天给孩子吃药我该怎么办 被像蚂蚁有翅膀的虫子咬了怎么办 1周半宝宝扭脚丫肿了怎么办 离婚后前夫带孩子走了找不到怎么办 宜昌全视之眼逃出卢浮宫怎么办 qq号被盗了密保手机也被改怎么办 乐视盒子控播平台认证怎么办 购买冲气娃娃被发现了怎么办 买了充气娃娃太美舍不得扔怎么办 一品官老爷账号密码忘了怎么办 苹果手机加声音显示出耳机怎么办 被删除的照片恢复后效果变差怎么办 w10系统玩刺激战场声音小怎么办 宝宝不咳嗽但是喉咙有痰怎么办 深圳限行如果车堵在路上怎么办 奔跑吧qq中奖我填写资料怎么办 微信之前绑定的手机号丢了怎么办 龙之谷手游换装备洗炼材料怎么办 小学生在班上碰到流氓同学怎么办 问道手游仓库密码忘了怎么办 问道手游安全码忘了怎么办 问道手游账号密码忘了怎么办 坐一天一夜长途车腰疼怎么办 智联的简历一直说不完整怎么办 智联招聘简历投错了怎么办 投简历的公司写错面试时怎么办