浅谈Warshall算法
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算法相关推荐
- music算法_“要热爱 请深爱”系列(5)浅谈模拟退火算法
黄乐天 浅谈模拟退火算法 背景 在实际生活中, 数学问题中,我们常常会遇到(一定范围内)函数求最值的问题.一般可以用数学方式解答,但如果遇到如下恶心的函数: 它的函数图像是这样的: 我们只好用计算机科 ...
- 浅谈PPO算法-玩转月球登陆
浅谈PPO算法-玩转月球登陆 前言 github 什么是Actor-Critic? Actor-Critic代码 ppo算法 实现 前言 总感觉强化学习公式真难学,也难表达心中所想,我还是白话强化学习 ...
- 浅谈匈牙利算法(二分图最大匹配)
前置知识 一张图是二分图,当且仅当它的点可以被分成两部分,而这张图上的所有边的两个端点,都分属不同的部分.我们称这两个点集,一个叫左部,一个叫右部.左部中的点叫左部点:右部中的点叫右部点. 一张图的一 ...
- 浅谈Manacher算法与扩展KMP之间的联系
首先,在谈到Manacher算法之前,我们先来看一个小问题:给定一个字符串S,求该字符串的最长回文子串的长度.对于该问题的求解,网上解法颇多,时间复杂度也不尽相同,这里列述几种常见的解法. 解法一 ...
- 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)
本文始发于个人公众号:TechFlow 在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及 ...
- 浅谈HASH算法与CSDN密码泄漏事件
在CSDN密码泄漏事件中,网友评论提到密码的明文保存和MD5保存问题.目前,很多站点都用MD5算法保存密码,但对于HASH(哈希)算法的认识还存在很多误区,很有必要重新认识. 一.HASH算法不是加密 ...
- 浅谈ICA算法的概念、本质和流程
本文转自http://m.elecfans.com/article/699564.html ICA独立成分分析是近年来出现的一种强有力的数据分析工具(Hyvarinen A, Karhunen J, ...
- 排序中减治法算法伪代码_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)...
在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及建模.今天这篇文章呢,就正式和大家聊一聊 ...
- 浅谈Stein算法求最大公约数(GCD)的原理及简单应用
一.Stein算法过程及其简单证明 1.一般步骤: s1:当两数均为偶数时将其同时除以2至至少一数为奇数为止,记录除掉的所有公因数2的乘积k: s2:如果仍有一数为偶数,连续除以2直至该数为奇数为止: ...
最新文章
- C语言可以不用,但是不能不会!
- 2021年春季学期-信号与系统-第四次作业参考答案-第六小题
- three.js学习资料整理
- mysql合并到区间_合并区间
- java实例_图例 | Java混合模式分析之火焰图实例
- 可执行文件添加快捷方式_如何停止Windows向快捷方式文件名添加“-快捷方式”...
- PyTorch 1.0 中文官方教程:迁移学习教程
- cognos ibm 收购_IBM Cognos与Linux上的Sterling Selling and Fulfillment Suite集成
- 数据分析2 - 基础篇
- 纯js读取excel文件内容,支持所有刘浏览器
- 支持linux的midi键盘,十款人气MIDI键盘推荐,适合各个阶段的音乐人
- Netty系列三、Netty实战篇
- 我的飞信发展方案(一)
- Android开发语音转文字,在Android上语音转文字
- Mir2源码详解之服务端-选择(角色)网关(SelGate)
- JS对象(对象的创建、属性的增删改查、属性的检测和枚举)
- excel如何转化成word文件
- java Optional操作
- 新买的笔记本电脑怎么分盘_笔记本电脑验机指南
- 仿微信录音功能-(声波动画,上滑取消,超时截取,倒计时提醒)