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

}