“离散数学”实验报告专业:计算机嵌入式班级: 10455341 学号: 1045534125 姓名:孟腾腾指导老师:闫仁武日期: 2011/11/15 开始声明各子函数输入关系矩阵输入 z z=1 ; 调用自反函数 z=2 ,调用传递 1 算法函数 z=3 调用传递 2 函数 z=4, 条用对称函数结束一、实验内容求有限集上给定关系的自反、对称和传递闭包二、实验思路设计思路在三种闭包中自反和对称闭包的求解很容易, 对矩阵表示的关系, 其自反闭包只要将矩阵的主对角线全部置为 1 ??; 对称闭包??上关系的?置矩阵, ?将????? 1 的???设置为 1 ????;传递闭包?有?种算法: 算法 R ?集? X 上的二?关系,?其自反闭包为 r?R?=R UI (x)( I (x) 为??关系) R ?集? X 上的二?关系,?其对称闭包为 s?R?=R U R^c R ?集? X 上的二?关系,?其传递闭包为????? ni iRRt 1)( ??计算,????法二: Warshall 算法(1962) 设?的关系矩阵为?????矩阵??????置??????对?有的?,????, ????,?对????,?,…,?,????,??????,??????,??????????????????,??????,??结束?三、???主函数?、????// : Defines the entry point for the console application. // #include "" int const Max=20; class Relation { protected: int Len,A[Max],R[Max][Max]; int Index(int x); public: Relation(){Len=0;}; Relation(int *p,int Q[Max][Max],int n); int IsofA(int x); int IsofR(int x,int y); Relation UnionA(Relation R1); Relation CrossR(Relation R1); Relation C_r(); Relation C_s(); Relation C_t(); Relation C_t(int); int Reflexive(); int Symmetric(); int Transitive(); int Equivalent_Relations(); void PrintA(); void PrintR(); }; int Relation::Index(int x) { int i; for(i=0;i<Len;i++) if(A[i]==x)return(i); return(-1); }; Relation::Relation(int *p,int Q[Max][Max],int n) { int i,j; for(i=0;i<n;i++) { A[i]=p[i]; for(j=0;j<n;j++) R[i][j]=Q[i][j]; }; Len=i; }; int Relation::Reflexive() { for(int i=0;i<Len;i++) if(!R[i][i])return(0); return(1); }; int Relation::Symmetric() { int i,j,K=Len-1; for(i=0;i<K;i++) for(j=i+1;j<Len;j++) if(R[i][j]!=R[j][i])return(0); return(1); }; int Relation::IsofA(int x) { for(int i=0;i<Len;i++) if(A[i]==x)return(1); return(0); }; int Relation::IsofR(int x,int y) { int i,j; i=Index(x); j=Index(y); if(i==-1||j==-1||R[i][j]==0)return(0); return(1); }; Relation Relation::UnionA(Relation R1) { int i,j; Relation t; for(i=0;i<Len;i++)[i]=A[i]; =Len; for(j=0;j<;j++) { for(i=0;i<Len;i++) if([i]==[j])break; if(i>=Len)[++]=[j]; }; for(i=0;i<;i++
离散实验报告二 来自淘豆网m.daumloan.com转载请标明出处.