沃舍尔算法_Warshall算法和Floyd算法-程序员宅基地

技术标签: 沃舍尔算法  

不用说这两位都是冷门算法……毕竟O(n^3)的时间复杂度算法在算法竞赛里基本算是被淘汰了……而且也没有在这个算法上继续衍生出其他的算法…

话说学离散的时候曾经有个把warshall算法简化到1/2时间的想法……不过懒得去翻了,现在想想本来这两个不用矩阵而用位运算的话速度不知道比我那个方法快多少倍……

嘛,切入正题吧,先讲warshall算法,其用来计算有向图的传递闭包,不知道概念的请去百度(躺

之前在学离散的时候还是花了点时间来研究这个算法的,但是仔细看了下书上的就发现和书上写的有些不一样,下面讲讲我知道的那种和书上的那种:

我知道的那种:

将有向图的邻接矩阵进行相乘操作,每乘一次保存结果,原本的矩阵称为R(1),再乘以R(1)称为R(2),再乘以R(1)称为R(3)…直到取到R(n-1)为止。将R1….Rn-1取并,得出相连矩阵结果。

原理,易证,将邻接矩阵相乘所得为比当前路线高一阶的相连矩阵,假设R1为所有路径为1的通路,那么R2就是所有路径为2的通路。。。Rn-1就是所有路径为n-1的通路。因为只有n个节点,假设求得路线不存在环,那最多为n-1长度,可从之前结果获得,假设存在环,那么环的结果再之前便已经取得。无论怎样,其并结果绝对包含所有节点的链接关系。

书上新看到的:

for k in vertex

for i in row

for j in col

如果点i,k.col存在相连关系,k.row,j存在相连关系,那么这个点就是可以被连上的。

同样的,floyd也是这个尿性,不过里面得改一下:

若能相连,看看是不是比现在的值小,小的就换上。

嘛,怎么说肯定不是很理解,所以我就用例子说明一下把:

这样的一张图,邻接矩阵的样式为:

a b c d

a 0 n 3 n

b 2 0 n n

c n 7 0 1

d 6 n n 0

布尔值的样式是:

a b c d

a 0 n 1 n

b 1 0 n n

c n 1 0 1

d 1 n n 0

那么,warshall的做法是,先统计第1行和第1列,发现(d,c)列对应的(a,c)(第一行),和(d,a)(第一列)都为1,则(d,c)变为1,同理,(b,c)变为1,那么第一轮的结果是:

a b c d

a 0 n 1 n

b 1 0 1 n

c n 1 0 1

d 1 n 1 0

第二轮:

a b c d

a 0 n 1 n

b 1 0 1 n

c 1 1 1 1

d 1 n 1 0

第三轮:

a b c d

a 1 1 1 1

b 1 1 1 1

c 1 1 1 1

d 1 1 1 1

至此,已经没有进行第四轮的必要,故这是一个全通图。floyd的思路与其类似,不过是判断是否两个关联值加起来是否小于当前值,小于的话那就更新,不然不更新。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36416418/article/details/112873248

智能推荐

Struts2 单选按钮示例-程序员宅基地

文章浏览阅读284次。下载它– Struts2-Radio-Button-Example.zip 在Struts 2中,可以使用<s:radio>标记创建HTML单选按钮。 有趣的是,有多种方法可以通过List,OGNL或Object将数据填充到单选按钮中。 检查以下示例以了解操作方法。 Struts 2 <s:radio>示例 显示使用List,OGNL和Object将数据填充到..._struts2中单选按钮

基于element ui 进行组件库的封装_在elementplus基础上封装成自己的ui框架-程序员宅基地

文章浏览阅读1k次。一、创建工程vue create vt-ui二、对vue 工程改造1、创建packages 用于存储自定义组件的原代码2、 将原有的src 目录改成 examples ,用于测试packages 下的组件3、整个项目目录结构如下三、在packages目录下创建组件(1)创建table 组件<template> <div class="vt-table"> <div class="vt-table-header">_在elementplus基础上封装成自己的ui框架

精选 2023 年大厂高频 Java 面试真题集锦(含答案),面试一路开挂_大厂面试真题-程序员宅基地

文章浏览阅读139次。面试是跳槽涨薪最直接有效的方式,各位做好面试造飞机,工作拧螺丝的准备了吗?掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击 9999 点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。_大厂面试真题

慢慢欣赏linux 进程unattended-upgr CPU占用率过高定位-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏5次。慢慢欣赏linux 进程unattended-upgr CPU占用率过高定位_unattended-upgr

各大平板电视厂商的音效技术_电视机音效技术有哪最好的-程序员宅基地

文章浏览阅读3.3k次。音频是信息传输中一非常重要的元素,再好的戏没声音也是白搭,所以在电视的发展进程中,音频技术一直得到重视。但相比图像的进展,音频的技术发展较为滞后,所以音频行业工作者应该努力。 创维A12音频引擎技术   创维在液晶电视音响上有A12音频引擎技术,并以此挑战在中国国内市场有霸主地位的海信。   A12音频引擎是创维-SRS联合实验室成立以来的重要成果,它是基于数字音效心理学原理新开发的音频技术,包括_电视机音效技术有哪最好的

微信小程序如何修改嵌套云数据库数组中的数据-程序员宅基地

文章浏览阅读177次。需要改集合每一条字段具备“open_id”属性,如果没有,系统会默认你不是创作者,因此需要选择。在实现小程序功能过程中,需要完成修改以下数据库嵌套数组的display属性为0。再次点击编译后后,更改的数据生效,可以在后台看见更新的属性。

随便推点

读取远程服务器的WMI,提示RPC服务器不可用_netsh firewall set service remoteadmin enable(disa-程序员宅基地

文章浏览阅读3.8k次。启用或禁用远程管理例外要启用远程管理例外,请在命令提示符下键入以下内容,然后按 Enter:netsh firewall set service remoteadmin enable要禁用远程管理例外,请在命令提示符下键入以下内容,然后按 Enter:netsh firewall set service remoteadmin disable注意To per_netsh firewall set service remoteadmin enable(disable为不可用)

Android学习笔记在互联网上火了,满满干货指导_网上火的学习资料是什么-程序员宅基地

文章浏览阅读900次,点赞25次,收藏17次。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。被人面试过,也面试过很多人。最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

springCloud学习二之Eureka高可用搭建,2024年最新高级java工程师面试-程序员宅基地

文章浏览阅读556次,点赞7次,收藏11次。大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Alder Lake会是英特尔的救世主吗?_alder lake 发射-程序员宅基地

文章浏览阅读2.3k次。这次的博客我们继续来聊芯片的话题,目前半导体行业的发展可以用冰火两重天来形容,传统的桌面及移动SOC市场已经基本停止增长了,而云计算成了各大巨头的兵家必争之地,这点笔者在前文《英特尔火线换帅、苹果搅动乾坤,国芯路在何方》已经有过详细论述了。在行业整体突飞猛进的基础上,技术之魂帕特.基辛格从Vmware回归以后,英特尔便开始了史无前例的颠覆式革新,最近他们拿出了一款从头到脚本全面升级的重磅产品Alder Lake,可以说Alder Lake的发布不但告慰了葛洛夫、欧德宁等前任CEO的在天之灵,同时也宣.._alder lake 发射

我问导师,Vue3有没有对应工具来生成漂亮的文档? 用 Vitepress_vue3.0官方文档 用什么生成的-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏7次。作者:Michael Thiessen译者:前端小智来源:news点赞再看,微信搜索**【大迁世界】,B站关注【前端小智】**这个没有大厂背景,但有着一股向上积极心态人。本文 GitHub https://github.com/qq449245884/xiaozhi 上已经收录,文章的已分类,也整理了很多我的文档,和教程资料。最近有人在问:小智, Vue3 有没有对应制作文档的工具。于是,我去查了一些资料,发现,Vue3和新的Vite构建工具为我们提供了另一种快速开发静态站点的方法,那就是 ._vue3.0官方文档 用什么生成的

SAP MM 采购订单抬头数据里的Condition_sap 中看condition type得table-程序员宅基地

文章浏览阅读2.8k次。SAP MM 采购订单抬头数据里的Condition 采购订单在header和ITEM层面都有condition选项卡,显示采购的单价以及金额信息。这里笔者重点关注header层面的condition里如下显示数据。 如下的采购订单,同一个供应商采购2个不同的物料,采购单价各不相同。SAP在Header层面的condition里只在condition value列显示整单采购净金额..._sap 中看condition type得table

推荐文章

热门文章

相关标签