传递闭包的warshall算法
来源:互联网 发布:excel 数据截断 编辑:程序博客网 时间:2024/05/16 10:15
#include<stdio.h>#define MATRIX_SIZE 5void Warshall_Algorithm(int matrix[][MATRIX_SIZE],int N);int main(){ int warshall[MATRIX_SIZE][MATRIX_SIZE]={0,1,0,0,1,0,1,0,1,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0}; /*以下部分是自己输入关系矩阵 的值,但是其值仅限于0 or1 for(int i=0;i<MATRIX_SIZE;tt++){ printf("please input %dth row's digits\n",i); for(int j=0;j<MATRIX_SIZE;pp++) scanf("%d",&warshall[i][j]);}*/Warshall_Algorithm(warshall,MATRIX_SIZE); for(int tt=0;tt<MATRIX_SIZE;tt++){ printf("\n"); for(int pp=0;pp<MATRIX_SIZE;pp++) printf(" %d ",warshall[tt][pp]);} getchar(); }void Warshall_Algorithm(int matrix[][MATRIX_SIZE],int N){ for(int i=0;i<N;i++) for(int j=0;j<N;j++){ if(matrix[i][j]==1){ for(int k=0;k<N;k++){ if(matrix[j][k]==1) matrix[i][k]=1;}}} }
原理部分是网上找的太懒了呵呵:
来自于:http://cs.bnu.edu.cn/~fxshen/discrete_math/teach%20content4.8.htm
Warshall算法
计算关系R的传递闭包的算法。
设A={ a1,a2,……,an},R是A上关系。定义矩阵WK=[tij]如下:tij=1当且仅当从ai到aj有一条路径,经过的顶点在{a1,a2,…,ak}之中。
W0=MR.Wn= MR∞.
设已有Wk-1=[sij],计算WK=[tij]:
tij=1
当且仅当
(1) sij=1
//ai到aj有路径中间点在
{a1,a2,…,ak-1}之中。
或
(2) sik=1且skj=1.
//ai到aj有路径经过ak,其余中间
点在{a1,a2,…,ak-1}之中。
Wk-1的元素a1k乘ak1加到a11
元素a1k乘ak2加到a12
……
元素a1k乘akn加到a1n
元素a2k乘ak1加到a21
元素a2k乘ak2加到a22
……
元素a2k乘akn加到a2n
……
……
元素ank乘ak1加到an1
元素ank乘ak2加到an2
……
元素ank乘akn加到ann
Wk-1第k列的元素遍乘第k行的元素加到矩阵Wk-1
Algorithm Warshall
1. Closure←Mat
2. ForK=1 Thro N
a.For I=1 Thro N
1.For J=1 Thro N
a.Closure[I,J]←Closure[I,J]∨Closure[I,K]∧ Closure[K,J]。
End of AlgorithmWarshall
例2. W0=MR=
k=1,第1列的元素遍乘第1行的元素加到W0
W1=
k=2,第2列的元素遍乘第2行的元素加到W1
W2=
k=3,第3列的元素遍乘第3行的元素加到W2
W3=
k=4,第4列的元素遍乘第4行的元素
加到W3,第4行的元素全0。
W4= W3
MR∞=W3.
- 传递闭包的warshall算法
- Warshall 传递闭包算法
- Warshall传递闭包算法
- Warshall传递闭包算法的学习与实现
- Floyd-Warshall算法求矩阵的传递闭包
- Warshall传递闭包算法的学习与实现
- Warshall算法求传递闭包
- Floyd-Warshall算法(传递闭包)
- WarShall算法--图的传递闭包(进一步演变成flayd算法)
- 任意两点最短路 Floyd-Warshall算法 传递闭包
- 【离散数学】Warshall算法实现 传递闭包对应矩阵
- 求传递闭包Warshall算法代码实现
- 传递闭包计算warshall算法C语言实现
- 关系传递闭包Warshall算法之思想的一种解说
- 图的多源点最短路问题和传递闭包之Floyd-Warshall算法 By ACReaper
- Floyd-Warshall方法求有向图的传递闭包
- Floyd-Warshall方法求有向图的传递闭包 收藏
- poj3660 Cow Contest(Floyd-Warshall方法求有向图的传递闭包)
- Adapter example2
- APK反编译Apktool
- 轻松解决 Eclipse Indigo 3.7 中文字体偏小,完美 Consolas 微软雅黑混合字体!
- 答案
- SQLITE学习笔记二(数据库管理,命令行操作)
- 传递闭包的warshall算法
- uva10054
- 没有什么是永垂不朽的
- C语言文件输入输出错误检测,仅仅是照搬谭浩强书上的,便于以后查阅
- Struts2中的值栈与OGNL2 的使用
- 任务和栈
- 双子的孤独无药可医
- Android 事务操作和数据显示(ListView的使用)
- Windows进程间各种通信方式浅谈