离散数学实验四 关系闭包计算

您所在的位置:网站首页 传递闭包算法 离散数学实验四 关系闭包计算

离散数学实验四 关系闭包计算

2023-09-21 03:27| 来源: 网络整理| 查看: 265

一、实验目的 熟悉Warshall算法,掌握求关系的自反闭包、对称闭包和传递闭包的方法。

二、实验内容

定义1 设R是A上的二元关系,R的自反(对称、传递)闭包是关系R1,则

① R1是自反的(对称的、传递的) ② RR1 ③对任何自反的(对称的、传递的)关系R2,若RR2,则R1R2。 R的自反、对称和传递闭包分别记为r®、s®和t®。

定理1 令RAA,则

① r®=R∪IA ② s®=R∪R-1 ③ t®=R∪R2∪R3…

Warshall算法:设R是n个元素集合上的二元关系,M是R的关系矩阵;

(1)置新矩阵A:=M (2)置i:=1; (3)for j=1 to n do if A[j,i]=1 then do for k=1 to n do A[j,k]:=A[j,k]+A[i,k] (4)i=i+1; (5) if i for(j=0;j for(j=0;j printf("输入错误!"); return 0; } } } //初始化自反闭包、对称闭包和传递闭包的关系矩阵,使之都为刚输入的关系矩阵 int zf[n][n], dc[n][n],cd[n][n]; for(i=0;i zf[i][j]=a[i][j]; dc[i][j]=a[i][j]; cd[i][j]=a[i][j]; } } //求自反闭包(将关系矩阵的主对角线全改为1) for(i=0;i printf("\n"); for(j=0;j for(j=0;j dc[j][i]=1; } } } printf("对称闭包的关系矩阵为:"); for(i=0;i printf("%d ",dc[i][j]); } } printf("\n"); //求传递闭包(利用Warshall算法) int k; for(i=0;i if(cd[j][i]==1){ for(k=0;k for(j=0;j cd[i][j]=1; } } } printf("传递闭包的关系矩阵为:"); for(i=0;i printf("%d ",cd[i][j]); } } return 0; }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3