Warshall算法

这篇具有很好参考价值的文章主要介绍了Warshall算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

传递闭包的warshall算法 伪码,算法,算法,数据结构,图论

🚀write in front🚀
📜所属专栏:> 算法
🛰️博客主页:睿睿的博客主页
🛰️代码仓库:🎉VS2022_C语言仓库
🎡您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!
关注我,关注我,关注我你们将会看到更多的优质内容!!

传递闭包的warshall算法 伪码,算法,算法,数据结构,图论

前言

  Warshall算法是一种经典的图论算法,用于计算给定有向图的传递闭包。在本文中,我们将详细介绍Warshall算法,并通过图例来演示算法的执行过程。

什么是传递闭包?

传递闭包的warshall算法 伪码,算法,算法,数据结构,图论

  在离散数学中,如果存在一个有向图中的节点u可以直接和间接到达另一个节点v,则称u可以到达v。如果对于图中的所有节点对(u,v),都存在一条从u到v的有向路径,则称该图是传递的。传递闭包则表示所有可达性的集合。

Warshall算法的原理

  在我们写程序计算传递闭包时通常会这样写:
传递闭包的warshall算法 伪码,算法,算法,数据结构,图论
  这样的时间复杂度为O(n^4),为了简化该算法的复杂度,Warshall算法使用动态规划的思想,通过多次迭代,计算有向图的传递闭包。
具体算法:

  • 初始化可达矩阵。将可达矩阵的值初始化为邻接矩阵的值。
  • 逐步构建可达矩阵。对于每一对顶点i和j,如果存在一条从i到j的路径或者存在一条从i到k的路径和一条从k到j的路径,那么我们就可以说顶点i可达顶点j。

因此,我们可以使用以下公式来逐步构建可达矩阵。

T[i][j]=T[i][j]||(T[i][k]&&T[k][j];

其中,reach[i][j]表示从顶点i是否可达顶点j,k是一个介于1和n之间的中间顶点。

最终可达矩阵即为该图的传递闭包。

完整伪代码:

传递闭包的warshall算法 伪码,算法,算法,数据结构,图论

总结:

  其实简单的说,传递闭包就是让“间接到达”变成直接到达。所以我们通过k遍历了所有的间接情况,通过∪和∩得到了最后的矩阵。

  更新不易,辛苦各位小伙伴们动动小手,👍三连走一走💕💕 ~ ~ ~ 你们真的对我很重要!最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

专栏订阅:
每日一题
c语言学习
算法
智力题
初阶数据结构
更新不易,辛苦各位小伙伴们动动小手,👍三连走一走💕💕 ~ ~ ~ 你们真的对我很重要!最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

传递闭包的warshall算法 伪码,算法,算法,数据结构,图论文章来源地址https://www.toymoban.com/news/detail-812134.html

到了这里,关于Warshall算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法——弗洛伊德算法(Floyd-Warshall)(图论)(c++)

    (蒟蒻的第四篇文章,希望dalao勿喷) (希望没问题) 声明: 1.本人变量定义的名称很low 2.本人用的方法也很low 3.但我觉得文章应该不low  (盲目自信) 第四篇文章讲讲Floyd算法 Floyd算法是一种寻找最短路径的常见算法,其特点是: 短,好理解(虽然其他算法也挺好理解的

    2023年04月09日
    浏览(25)
  • UVa247 Calling Circles(Floyd warshall算法)

    给定两个人相互打电话,如果a打给b,b打给c,c打给a,则说a,b,c在同一电话圈中。给出n个人的m次通话,输出所有的电话圈 用graph[u][v]=1表示u和v之间有打电话。在使用floyd算法计算所有的点对之间的值。graph[u][v]=1表示u,v之间有直接或者间接打电话。如果graph[u][v] = 1并且graph[v][u]

    2024年02月12日
    浏览(27)
  • Floyd_Warshall算法详解及实现(多源最短路径)

    小明要去这样的城市旅游(城市交通图如下),为了减轻经济负担,小明想知道任意两个城市之间的最短路径。 从图中,可以得到:小明打算去4个城市(节点数)旅游,而这4个城市之间有8条公路(边数)连通,公路上的数字(权重)表示这条公路的长短。 现在需要设计一

    2023年04月17日
    浏览(27)
  • 算法——图论——最短路径——Floyd / 传递闭包

    目录  Floyd-Warshall(弗洛伊德)算法 传递闭包 一、试题 算法训练 盾神与离散老师2    求所有顶点到所有顶点的最短路径问题 弗洛伊德算法(Floyd-Warshall algorithm)是一种用于寻找图中所有顶点对之间最短路径的动态规划算法。 该算法可以处理带有负权边但不含负权环的加权

    2024年02月20日
    浏览(32)
  • HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包

    用于解决这类问题: 举例一、  举例二、(求传递闭包)   代码如下:

    2024年02月11日
    浏览(37)
  • Floyd判联通(传递闭包) & poj1049 sorting it all out

    Floyd传递闭包顾名思义就是把判最短路的代码替换成了判是否连通的代码,它可以用来判断图中两点是否连通。板子大概是这个样的: 给定 n个变量和 m个不等式。其中 n小于等于 26,变量分别用前 n的大写英文字母表示。 不等式之间具有传递性,即若 AB 且 BC,则 AC。 请从前

    2024年02月04日
    浏览(26)
  • 结构体和数据结构--向函数传递结构体

    将结构体传给函数的方式有以下三种: 目录 一、用结构体的单个成员作为函数参数,向函数传递结构体的单个成员 二、用结构体变量作函数实参,向函数传递结构体得完整结构 三、用结构体指针或结构体数组作函数参数,向函数传递结构体的地址。         用单个结构体

    2024年02月04日
    浏览(29)
  • 第三章 图论 No.3 flody之多源汇最短路,传递闭包,最小环与倍增

    flody的四个应用: 多源汇最短路 传递闭包 找最小环 恰好经过k条边的最短路 倍增 多源汇最短路:1125. 牛的旅行 1125. 牛的旅行 - AcWing题库 直径概念:同一连通块中,两个距离最远的点之间的距离 如何求直径?由于图中存在着两个连通块,所以直接对全图做一个flody,就能更

    2024年02月14日
    浏览(31)
  • 【算法与数据结构】--算法应用--算法和数据结构的案例研究

    一、项目管理中的算法应用 在项目管理中,算法和数据结构的应用涉及项目进度、资源分配、风险管理等方面。以下是一些案例研究,展示了算法在项目管理中的实际应用: 项目进度管理 : 甘特图算法 :甘特图是一种项目进度管理工具,它使用甘特图算法来展示项目任务

    2024年02月08日
    浏览(41)
  • 数据结构与算法设计分析—— 数据结构及常用算法

    1、顺序表与链表 线性表是 线性结构 ,是包含n个数据元素的有限序列,通过顺序存储的线性表称为 顺序表 ,它是将线性表中所有元素按照其逻辑顺序,依次存储到指定存储位置开始的一块连续的存储空间里;而通过链式存储的 链表 中,每个结点不仅包含该元素的信息,还

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包