闭包的概念 如果在一个集合上的运算生成这个集合的元素那么就满足闭包性质。 假设一个集合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;
}
|