Fine-Grained学习笔记(3):最短路(边权,点权),(min,+)矩阵乘
问题:APSP(全局最短路)
给定
已知的算法:
Floyd-Warshall算法:
考虑如下的公式:
形式上有些类似于矩阵乘,因此该过程被称为"(min,+)矩阵乘"
时间复杂度目前没有定论,但一般认为是
Zwick的最短路算法(2002):
引理(有限整数的(min,+)矩阵乘):
给定
证明:
按如下方式构造新的矩阵
然后使用普通的矩阵乘计算
总共需要进行
然后遍历矩阵中
总时间复杂度为
然而,全局最短路可能有最多
Zwick算法的第一个思路是根据跳数的多少对路径进行分类讨论
情况1:
跳数
情况2:
跳数
碰撞引理:
随机选取
证明:
随机选取子集
那么对于一组
那么,
在以此法找出的
然后对于
该情况下总时间复杂度
总的时间复杂度
改进:对跳数较小的情况也应用碰撞引理
假设已经找到了所有跳数
在此概率化的条件下,以
计算
无向边的情况:
Seidel在1995年证明了无权无向图最短路可在
Galil,Margalit在1997年证明了边权值限制在
Shoshan,Zwick在1999年得到了
C.(作者本人),V.,Xu在2021年得到了更简便的
这里讲了一下作者本人的算法但因为我完全没明白,并且与主线关系也不大,所以就略过了
实数点权的最短路算法:
热身:在实数点权图中找出权值最小的三角形
引理:
给定
的复杂度是
(可以理解为在下图中,对于每一对
证明:(思路:分块)
将
步骤1:对于所有的
该步骤本质上是进行
步骤2:根据得到的
时间复杂度
总时间复杂度
Vassilevska,Williams,Yuster在2016年提出的最小点权三角形算法:
对于每一对
然后在所有的
总时间复杂度
Czumaj-Lingas在1990年对该问题提出了以递归的技巧达到的
回到APSP问题上来
引理:
给定实数矩阵
实际上,就是在计算
证明:
将
步骤1:
对于每个
然后令
步骤2:
暴力计算
时间复杂度
总时间复杂度
如果将步骤1的长方形矩阵乘法复杂度写作
chan2007算法:
思路:根据跳数多少分类讨论
情况1:
跳数
假设所有跳数
则计算
该情况的时间复杂度
情况2:
跳数
将点权移动到边权上,然后同Zwick算法中的情况2,复杂度
总时间复杂度
令
待解决的问题:更优的复杂度?实数边权(边权最短路问题比点权严苛,点权最多
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?