閉包的概念 如果在一個集合上的運算生成這個集合的元素那么就滿足閉包性質。 假設一個集合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;

}
|