作业帮 > 综合 > 作业

判断一个给定关系是否为等价关系,如果是,给出其划分.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/20 20:30:57
判断一个给定关系是否为等价关系,如果是,给出其划分.
求C++离散实验的代码
你关系是用什么形式给出的?是邻接矩阵么.检查一下自反性,传递性和对称性就行了吧.

划分的话你就用floodfill,每次找一个没染色的点,然后递归地把相关的点都染色.最后看染过集中颜色就行了.同种颜色的就是一个等价类的.

如果是邻接矩阵g,内容为true/false的话.
bool check(mat g)
{
    for (i=0;i<n;i++)
    {
        if (!g[i][i]) return false;
    }
    for (i=0;i<n;i++)
    {
        for (j=i;j<n;j++)
        {
            if (g[i][j]!=g[j][i]) return false;
        }
    }
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            for (k=0;k<n;k++)
            {
                if (g[i][k]!=g[i][j]&&g[j][k]) return false;
            }
         }
     }
     return true;
 }