Floyd-Warshall方法求有向图的传递闭包

本文介绍了如何利用Floyd-Warshall算法在O(v^3)的时间复杂度内求解有向图的传递闭包。通过将边的权值设为1,并修改算法中的最小值比较为逻辑运算,可以判断图中是否存在从i到j的路径。给出了C++实现的简化代码示例。
摘要由CSDN通过智能技术生成

有向图G的传递闭包定义为:G*=(V,E*),其中
E*={(i,j)}:图G中存在一条从i到j的路径。

在floyd-warshall求每对顶点间的最短路径算法中,可以通过O(v^3)的方法求出图的传递闭包。可以位每条边赋以权值1,然后运行Floyd-Wareshall。如果从i    到j存在一条路径,则d(i,j)<N,否则d(i,j)=MAX。
 一种改进的算法是:由于我们需要的只是判断是否从i到j存在一条通路,所以在Floyd-Wareshall中的动态规划比较中,我们可以把min和+操作改为逻辑or(||    )和逻辑与(&&)。
 设tk(i,j)=1表示从i到j存在一条通路p,且p的所有中间节点都在0,1,2,...,k中,否则tk(i,j)=0。我们把边(i,j)加入到E*中当且仅当tn(i,j)=1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值