数据结构最短路径例题_数据结构8——最短路径

一、最短路径

最短路径:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径。

求最短路径的四个算法如下:

二、算法概述

【Dijkstra算法】

单源最短路:从单个源点出发,到所有结点的最短路

作用:计算正权图上的单源最短路。

图类型:有向图、无向图。

限制:边权为正。

【Bellman-Ford算法】

事实1:当负权存在时,连最短路都不一定存在。

事实2:如果最短路存在,一定存在一个不含环的最短路。

作用:计算图上的单源最短路(前提是最短路存在)。

图类型:有向图、无向图。

优势:边权可为负。

【Floyd算法】

作用:求出每两点之间的最短路。

图类型:有向图、无向图。

特点:如果要用Dijkstra或Bellman-ford求出每两点之间的最短路,那么需要调用n次Dijkstra(边权均为正)或者Bellman-ford(有负权)。

三、负权问题

如果一个图仅仅是存在负权,但不构成负权回路,又该如何?

Dijkstra 算法

观察上图,若 A 作为源点,在第一轮循环后,B 被标记数组标记,但我们发现在第二轮循环中,B 还可以通过 C 点继续进行更新。由此,可以得出结论:Dijkstra 算法不适用于负权图。</

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值