设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 最终得出以下结果



