Warshall算法

​ 今天的离散数学课后作业里有需要求传递闭包的题目,不懂上课没听,本来想用matlab偷一下懒,但是搜到了Warshall算法,故参考百科及其它博客后写水篇博客。

传递性

​ 了解warshall算法之前需要了解传递闭包,传递闭包具有传递性,如果元素<x,y>、<y,z>在集合里,且元素<x,z>也在集合里,那么这个集合就具有传递性。

传递闭包

​ 什么是传递闭包,有一种说法是将模糊相似关系矩阵R改造为模糊等价矩阵R,更清晰的说法是讲矩阵中所有满足传递性的节点都标出来。例如,x能到y,y能到z, z能到p,那么显然x到y还能到z、p。将原来矩阵中未标出的能到点 <x,z>和<x,p>都标出,这就是求传递闭包的过程。

Floyd算法

​ 如果学过Floyd算法的话在看完传递闭包的描述以后应该会觉得有点眼熟,两者思想是一致的,Warshall是通过0与1的相乘来判断两个点是否连通,而floyd比Warshall更高阶,具有了一种松弛操作,能找出最短路径。

​ 本质上这两者都是动态规划的应用。

Warshall算法

Warshall算法通俗的来说就是通过n3次方操作来判断矩阵中所有可以联通的点,例如现在有1到2,2到3,3到4,4到5,若想要判断1与4连通需要判断1与3连通,而想要判断1与5连通需要先判断1与4连通,所以需要进行n3次方来暴力判断所有的点。显然这么暴力的Warshall和Floyd算法在竞赛里是很少用的。

下面贴上代码:

void Warshall()
{for(k=1;k<=n;k++)//依次取得的可以作为中间点的顶点{for(i=1;i<=n;i++){for(j=1;j<=n;j++){temp[i][j]=(r[i][j])||(r[i][k]&r[k][j]);}}for(i=1;i<=n;i++)for(j=1;j<=n;j++)r[i][j]=n[i][j];}}

参考

Warshall传递闭包算法的学习与实现 - lpshou - 博客园 (cnblogs.com)

谈谈传递闭包以及自己杂想_ruangongshi的专栏-CSDN博客

浅谈Warshall算法相关推荐

  1. music算法_“要热爱 请深爱”系列(5)浅谈模拟退火算法

    黄乐天 浅谈模拟退火算法 背景 在实际生活中, 数学问题中,我们常常会遇到(一定范围内)函数求最值的问题.一般可以用数学方式解答,但如果遇到如下恶心的函数: 它的函数图像是这样的: 我们只好用计算机科 ...

  2. 浅谈PPO算法-玩转月球登陆

    浅谈PPO算法-玩转月球登陆 前言 github 什么是Actor-Critic? Actor-Critic代码 ppo算法 实现 前言 总感觉强化学习公式真难学,也难表达心中所想,我还是白话强化学习 ...

  3. 浅谈匈牙利算法(二分图最大匹配)

    前置知识 一张图是二分图,当且仅当它的点可以被分成两部分,而这张图上的所有边的两个端点,都分属不同的部分.我们称这两个点集,一个叫左部,一个叫右部.左部中的点叫左部点:右部中的点叫右部点. 一张图的一 ...

  4. 浅谈Manacher算法与扩展KMP之间的联系

    首先,在谈到Manacher算法之前,我们先来看一个小问题:给定一个字符串S,求该字符串的最长回文子串的长度.对于该问题的求解,网上解法颇多,时间复杂度也不尽相同,这里列述几种常见的解法. 解法一   ...

  5. 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)

    本文始发于个人公众号:TechFlow 在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及 ...

  6. 浅谈HASH算法与CSDN密码泄漏事件

    在CSDN密码泄漏事件中,网友评论提到密码的明文保存和MD5保存问题.目前,很多站点都用MD5算法保存密码,但对于HASH(哈希)算法的认识还存在很多误区,很有必要重新认识. 一.HASH算法不是加密 ...

  7. 浅谈ICA算法的概念、本质和流程

    本文转自http://m.elecfans.com/article/699564.html ICA独立成分分析是近年来出现的一种强有力的数据分析工具(Hyvarinen A, Karhunen J, ...

  8. 排序中减治法算法伪代码_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)...

    在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及建模.今天这篇文章呢,就正式和大家聊一聊 ...

  9. 浅谈Stein算法求最大公约数(GCD)的原理及简单应用

    一.Stein算法过程及其简单证明 1.一般步骤: s1:当两数均为偶数时将其同时除以2至至少一数为奇数为止,记录除掉的所有公因数2的乘积k: s2:如果仍有一数为偶数,连续除以2直至该数为奇数为止: ...

最新文章

  1. C语言可以不用,但是不能不会!
  2. 2021年春季学期-信号与系统-第四次作业参考答案-第六小题
  3. three.js学习资料整理
  4. mysql合并到区间_合并区间
  5. java实例_图例 | Java混合模式分析之火焰图实例
  6. 可执行文件添加快捷方式_如何停止Windows向快捷方式文件名添加“-快捷方式”...
  7. PyTorch 1.0 中文官方教程:迁移学习教程
  8. cognos ibm 收购_IBM Cognos与Linux上的Sterling Selling and Fulfillment Suite集成
  9. 数据分析2 - 基础篇
  10. 纯js读取excel文件内容,支持所有刘浏览器
  11. 支持linux的midi键盘,十款人气MIDI键盘推荐,适合各个阶段的音乐人
  12. Netty系列三、Netty实战篇
  13. 我的飞信发展方案(一)
  14. Android开发语音转文字,在Android上语音转文字
  15. Mir2源码详解之服务端-选择(角色)网关(SelGate)
  16. JS对象(对象的创建、属性的增删改查、属性的检测和枚举)
  17. excel如何转化成word文件
  18. java Optional操作
  19. 新买的笔记本电脑怎么分盘_笔记本电脑验机指南
  20. 仿微信录音功能-(声波动画,上滑取消,超时截取,倒计时提醒)

热门文章

  1. Jackson ImmunoResearch通过 SDS-PAGE 进行蛋白质分离
  2. MATLAB中如何打角标和希腊字母
  3. OpenCV-Python的文本透视矫正与水平矫正
  4. 【计组期末复习】机器周期和时钟周期、控制单元的功能:取指周期的微操作命令、取数指令的微操作、存数周期的微操作
  5. BZOJ-1898 Swamp 沼泽鳄鱼
  6. 【随笔】记录一次简易的液位报警器的拆机修理
  7. navicat使用和测试
  8. ISFP——思想起决定作用
  9. adb命令之:手机与电脑文件之间的粘贴复制
  10. 分享一个国内可用的ChatGPT网站,免费无限制,支持AI绘画 - AI 百晓生