开发者社区> 问答> 正文

Bellman-Ford算法判定负环中的疑问

(维基百科)用Bellman Ford判定负环: 因为负权环可以无限制地降低总花费,如果第n(n为结点数)轮仍能通过松弛操作降低花费,就一定存在负环。

算法 进行n - 1轮松弛操作后(这个为大前提): 如果不含负环,算法就能找到源点到所有结点的最短路。把 “不含负环” 记作p。 就有对于 “任意” 的边e(u,v),有d[u] + w >= d[v]。 (三角不等式),把这个命题记作q。 上面的就简记为: p -> q。 判断负环时,用q这个命题来判断,如果非q,那么就非p,即含负环。(也就是说,如果进行第n轮松弛操作时,仍然能更新,就说明存在负环) 我的疑问是,是否有 q -> p。有的话,怎么证。 如果没有“q -> p”,我感觉通过非q来判定是否含有负环在逻辑上有问题,因为也有可能“q成立时,非p成立,”。

展开
收起
游客aoaonxzp4zaq2 2022-02-25 20:37:43 1493 0
1 条回答
写回答
取消 提交回答
  • 微信搜索「龙哥手记」,回复关键字:见面礼

    不是算法

    2022-02-27 16:52:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载