首页 > 其他分享 >Johnson多源负权最短路

Johnson多源负权最短路

时间:2024-11-25 18:23:11浏览次数:3  
标签:Johnson dij 负权 短路 算法 多源

Johnson多源负权最短路

Floyd算法复杂度是 \(O(n^3)\),然而dij的复杂度只是 \(O(mlogm)\)。
所以对于稀疏图来说,对每个点跑dij就已经比Floyd快了。
但是dij有一个缺陷:它不能处理有负权的图,于是Johnson算法应孕而生。(我认为是这样的)

Johnson算法流程

  1. 我们设一个虚拟节点为 \(0\) ,从这个点向其他所有点连一条边权为\(0\)的边。
  2. 求出从 \(0\) 到其它点的最短路为 \(h[i]\)。
  3. 对于每条边边权设为 \(w+h[u]-h[v]\) 。
  4. 最后再对每个点跑dij,不过 \(x\) 到点 \(y\) 的距离为 \((dis_{i->j}-h_i+h_j)\)

因为先用spfa跑了最短路,所以 \(w+h[u] >= h[v]\) 一定成立。

再考虑正确性:现有一条路径:a->b->c
计算得答案为 disa->b + h[a] - h[b] + disb->c + h[b] - h[c] == disa->b + disb->c + h[a] - h[c]
容易发现路径上的h值都抵消掉了,只剩下了头和尾,而头和尾的h值是确定的,所以原来的最短路和处理后的最短路是同一条(至少处理后值一样)。

标签:Johnson,dij,负权,短路,算法,多源
From: https://www.cnblogs.com/water-flower/p/18568324

相关文章

  • Johnson-Trotter 算法
    当一个数上方箭头所指的一侧,相邻的数比这个数小的时候,称这个数处于活动状态6、3、5处于活动状态,显然1永远不是活动的n除了以下两种情形外,它都处于活动状态:(1)n是第一个数,且其方向指向左侧;(2)n是最后一个数,且其方向指向右侧。Johnson-Trotter算法:(1)确定“活动的最大数......
  • 美畅物联丨跨越网络限制:视频汇聚平台如何实现多源整合
    ​在当今数字化时代,视频监控在各个领域发挥着至关重要的作用,从城市安防到企业管理,从交通监控到环境监测等。然而,由于监控点的广泛分布和分散性,如何有效地将这些来自不同地点的视频数据进行汇聚和整合,成为了一个亟待解决的问题。视频汇聚平台应运而生,为解决这一难题提供了有力......
  • 论文精读:多源域自适应目标检测中的目标相关知识保存(CVPR2022)
    原文标题:Target-RelevantKnowledgePreservationforMulti-SourceDomainAdaptiveObjectDetection中文标题:多源域自适应目标检测中的目标相关知识保存论文地址:https://arxiv.org/pdf/2204.07964代码地址:无官方实现?我有点纳闷难道顶会不公布代码的吗这篇文章是由北......
  • 威胁检测与防范:多源威胁检测响应平台如何对抗安全风险
    随着技术的飞速发展,网络空间中的威胁日益多样化、隐蔽化,给个人、企业乃至国家的信息安全带来诸多挑战。面对严峻的网络威胁,传统的防火墙、入侵检测系统(IDS)等防御手段虽能在一定程度上抵御外部攻J,但依然存在局限性。因此,在复杂多变的网络环境下,高效的威胁检测与防范,成为维护网络安全......
  • 代码随想录算法训练营第六十天 | Bellman_ford之判断负权回路
    目录Bellman_ford之判断负权回路思路常规拓展方法一: Bellman_ford-超时方法二:Bellman_ford2方法三:Bellman_ford队列优化Bellman_ford之判断负权回路题目链接:卡码网:95.城市间货物运输II文章讲解:代码随想录 某国为促进城市间经济交流,决定对货物运输提供......
  • 图论篇--代码随想录算法训练营第五十九天打卡|Bellman_ford 算法精讲,SPFA算法,Bellman
    本系列算法用来解决有负权边的情况Bellman_ford算法精讲题目链接:94.城市间货物运输I题目描述:某国为促进城市间经济交流,决定对货物运输提供补贴。共有n个编号为1到n的城市,通过道路网络连接,网络中的道路仅允许从某个城市单向通行到另一个城市,不能反向通行。网络......
  • 【图论】Johnson全源最短路算法
    ·2024-9-11·最后更新时间2024-9-11作者学会了一个叫做\(Johnson\)的算法,所以就有了这篇博客......Johnson算法是一个高效处理全源最短路的算法其实也很慢,但目前是最高效的为了更加方便你们接下来的学习我希望你们已经掌握了基本的最短路算法(SPFA,Dijsktra,Bellman-Ford,Floyd......
  • 【算法笔记】多源最短路问题——Floyd算法
    0.前言在图中,如果要求任意两点间的距离,则可以使用Floyd(\(\mathcalO(N^3)\)......
  • 多源BFS解决最短路问题
    目录01矩阵飞地的数量地图中的最高点地图分析01矩阵题目思路解决这道题使用的方法是多源BFS,多源BFS区别于单源BFS的地方在于起点不是一个多个,首先将矩阵中所有的0加入队列中,创建一个和原始矩阵大小相同的矩阵dists,矩阵dists中的值为每个点距离0的最短距离,然后进行......
  • Johnson 全源最短路算法以及 Primal-Dual 原始对偶算法
    Johnson全源最短路算法引入:多源最短路问题,设点数为\(n\)边数为\(m\)。我们有如下方案:floyd,时间复杂度\(O(n^3)\),适合任意图。Bellman-ford(SPFA),时间复杂度\(O(n^2m)\),适合任意图。Dijkstra,时间复杂度\(O(nm\logm)\),适合非负权图。综上分析,我们发现:Dijkstra的时间......