算法设计与分析课程复习笔记12——全点对最短路径

算法设计与分析课程复习笔记12——全点对最短路径

全成对最短路径

输入:有向图G=(V,E), 权函数w,
计算:图中任何点对之间的最短距离
结果表示: n × n矩阵, 元素是对应的点对之间的最短距离δ(u, v)

解决方案:

  • 对于每一个顶点, 运行BELLMAN-FORD(单源最短))
    计算开销: O(V2E), 甚至O(V4):对于边稠密的图
  • 如果不存在负权值边, 可利用Dijkstra’s算法计算单源最短
    计算开销:O(VElgV), 甚至O(V3lgV):对于边稠密的图
  • 可以设计O(V3)开销的全成对最短路径算法,且不需要特殊的数据结构

最短路径的优化结构

  • 最短路径的部分路径必然是最短的
  • p是从i到j至多含有m条边的最短路径
    if i = j ,w(p) = 0
    if i ≠ j , p = i ~(p’)k→j,p’最多有m-1条边,p’也是最短路径
    δ(i, j) = δ(i, k) + wkjw_{kj}wkj

递归解
lij(m)l_{ij}^{(m)}lij(m):从i到j至多含有m条边的最短路径的权
m=0, lij(0)l_{ij}^{(0)}lij(0)=0,if i =j; lij(0)l_{ij}^{(0)}lij(0)=∞\infty,if i ≠j。
m≥\geq 0,lij(m)l_{ij}^{(m)}lij(m) = min1≤k≤n{ lik(m−1)+wkj}min_{1≤k≤n}\{l_{ik}^{(m-1)}+w_{kj}\}min1kn{ lik(m1)+wkj}

计算最短路径
m=1:lij(1)l_{ij}^{(1)}lij(1)=wijw_{ij}wij,L(1)L^{(1)}L(1)=W
给出W = (wijw_{ij}wij), 计算L(1),L(2),…,L(n−1)L^{(1)}, L^{(2)}, …, L^{(n-1)}L(1),L(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值