闭包的概念 如果在一个集合上的运算生成这个集合的元素那么就满足闭包性质。 假设一个集合s不闭合,我们找到一个包含s的最小集合满足闭包性质,那么这个集合就是s关于这个运算的闭包。
关于自反闭包,对称闭包,传递闭包的关系表示和矩阵表示和求法[going] http://202.115.21.136:8080/lssx/end/imgs/8/ls84.files/8421.htm -------------------------------------------- 关系的复合类似矩阵的乘法,先与后或。运算的顺序是相同的。 t(R)=R*R^1……R^n -------------------------------------------- 然而我们有更好的算法,要感谢warshall了
 /**//*
*(C) 2007 Henry Shen
*/

#include<iostream>
using namespace std;
 int main() {
 bool M[7][7]= {
 {1,1,0,0,0,0,0},
 {0,0,0,1,0,0,0},
 {0,0,0,0,1,0,0},
 {0,1,0,0,0,0,0},
 {0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0},
 {0,0,0,0,0,0,0}
};

int i;
int j,k;

for(i=0;i<7;i++)
 {
cout<<endl;
for(j=0;j<7;j++)
 {
cout<<M[i][j]<<" ";
}
}

i=j=k=0;

cout<<endl;
//-----------warshall算法-------------
while(i<7)
 {
for(j=0;j<7;j++)
 {
if(M[j][i]==1)
 {
for(k=0;k<7;k++)
 {
M[j][k]=M[j][k]||M[i][k];
}
}
}
i++;
}
//------------------------------------
for(i=0;i<7;i++)
 {
cout<<endl;
for(j=0;j<7;j++)
 {
cout<<M[i][j]<<" ";
}
}

system("pause");

return 0;

}
|