栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言实现等价关系的判断以及等价类的输出

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言实现等价关系的判断以及等价类的输出

原理:

设X={1,2,3,......,n},关系R的关系矩阵是M=(mij)

判断等价关系

(1)R是自反的<=>m11=m22=......=mnn=1

  (2)   R是对称的<=><=>mij=mji

  (3)   R是传递的<=>tr(R)=R

求等价类

如果mij=1,即iRj,则

算法:

Step1 写出n元集合X上关系R的关系矩阵M=(mij)

Step2 for i=1 to n

              如果mii=0,则停止,关系R不是自反的.

Step3 for i=1 to n

           for j=1+i to n

                       如果mij != mji,则停止,关系R不是对称的

Step4  求传递闭包的关系矩阵A

            如果A!=M,则停止,关系R不是传递的。

Step5 令B={}(空集,用于放置等价类元素)

Step6  令X= X-B(X 存放剩余元素)

Step7  如果X为空,则停止,否则令i是X中最小元素,B={}空集,B=B交{i}

Step8 for j=1 to n

           如果mij=1,则B=B交{i}

Step9 按行输出B得到一个等价类,转到Step6

代码实现:

以X={1,2,3,4,5,6},R={(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(1,4),(2,3),(2,6),(3,2),(3,6),(4,1),(6,2),(6,3)}为例,给出代码

#include 
#include 

int main()
{
    int x[6]={1,2,3,4,5,6};
    //写出关系矩阵
    int Mr[6][6]={{1,0,0,1,0,0},{0,1,1,0,0,1},{0,1,1,0,0,1},{1,0,0,1,0,0},{0,0,0,0,1,0},{0,1,1,0,0,1}};
    int n=6;
    //判断关系是否自反
    int flag=0;
    for(int i=0;i 

最终得出以下结果

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429363.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号