Warshall’s Algorithm: Transitive Closure小理解

本文深入探讨了有向图中的传递闭包概念及其两种算法实现:一种类似Floyd算法,另一种结合矩阵运算与快速幂,适用于求解特定路径可达性问题。通过实例解析,对比不同算法的时间与空间复杂度。

前言

这一算法相关的博客很少,因此我觉得很有必要写这篇博客。但由于我是用网上搜集得来的资料自学的,因此在下面的讲述中可能会有不对的地方,还请dalao们耐心指出,十分感谢。

你最好已经知道的知识:floyd算法,矩阵快速幂。
提前说一下,这个算法和floyd很像,但有新的东西。

我会列举2种我查到的Transitive Closure算法,并对他们进行分析,请读者耐心阅读。

概念

Transitive Closure翻译为“传递闭包”,它到底是什么?参考一下传递闭包(百度百科)

用我的话说,它就是在一个有向图中,所有的「能不能从一个点到另一个点」的关系(老外说得好: all paths in a directed graph)。

举个例子:
图1
[图1:有向图]
(本篇博客所有图片均截自参考资料[1])

那么它的传递闭包是:
图2
[图2:有向图的传递闭包]

图2中实线是原图中的关系,虚线是添加的关系。

有人可能会问,求「是否能到达」算什么,用Floyd算法连最短路都求出来了。确实,「法1」我自认为完全可以用floyd代替,而「法2」则与矩阵运算结合。

法1

我们先思考这个问题,能从u到v的条件:

  1. 存在一条边为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值