离散数学实验c++关系的运算幂运算闭包运算资料

上传人:E**** 文档编号:101285795 上传时间:2019-09-27 格式:DOC 页数:11 大小:72.50KB
返回 下载 相关 举报
离散数学实验c++关系的运算幂运算闭包运算资料_第1页
第1页 / 共11页
离散数学实验c++关系的运算幂运算闭包运算资料_第2页
第2页 / 共11页
离散数学实验c++关系的运算幂运算闭包运算资料_第3页
第3页 / 共11页
离散数学实验c++关系的运算幂运算闭包运算资料_第4页
第4页 / 共11页
离散数学实验c++关系的运算幂运算闭包运算资料_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《离散数学实验c++关系的运算幂运算闭包运算资料》由会员分享,可在线阅读,更多相关《离散数学实验c++关系的运算幂运算闭包运算资料(11页珍藏版)》请在金锄头文库上搜索。

1、实验2 关系的运算(1) 关系的幂运算输入:集合A,二元关系集合R,幂次n输出:R的n次幂要求:尽量使运算的计算量最小(2) 关系闭包的计算输入:集合A,二元关系集合R输出:R的传递闭包t(R)要求:(a) 采用Warshall 算法(89页)(b) 编写代码判断输出t(R)为传递闭包程序代码:#include#include#includeusing namespace std;typedef vector vector Mat;class Relationvectors;/集合Mat A;/关系矩阵Mat B;Mat C;Mat E;Mat D100; /用来存储矩阵int n;publi

2、c:void inputs();/将集合存入向量中void inputa();/将读入的关系转化为关系矩阵void print();/输出关系矩阵void mi();int Warshall(); ;/定义类int n,m;/全局变量,下文中使用void Relation:inputs()couta;)s.push_back(a);if(getchar()=n)break;/将集合存入向量中void Relation:inputa()/将读入的关系转化为关系矩阵cout输入关系;int i,j,e,r;for(i=0;is.size();i+)vector u;for(j=0;jhz;) if

3、(h=0&z=0)break;for(i=0;is.size();i+)if(si=h) e=i;if(si=z) r=i;Aer=1;Ber=1;Eer=1;/Cer=1;/读入关系,将关系对应的矩阵中的位置元素变为1if(getchar()=n)break;void Relation:print()for(int i=0;is.size();i+)for(int j=0;js.size();j+)coutAij ;coutn; /读入幂次if(n=0) /0次幂for(int k=0;ks.size();+k)for(int j=0;js.size();+j)if(k=j)cout1 ;

4、/对角线上元素为1elsecout0 ;coutendl;elsefor(i=1;in;+i)for(int h=0;hs.size();+h)for(int d=0;ds.size();+d)int m=0;for(int x=0;x1)for(a=0;as.size();+a)for(b=0;bs.size();+b)if(Cab!=D0ab) break;if(b!=s.size()break; /检验是否重复if(a=s.size()&b=s.size()break;/重复则跳出不再幂乘for(int k=0;ks.size();k+)for(int j=0;js.size();j+)

5、Bkj=Ckj;Di-1=B;c=i;if(a=s.size()&b=s.size()int q;q=(n-i)%c; /找出结果位置if(q=0) q=c;for(int e=0;es.size();e+)for(int f=0;fs.size();f+)coutDq-1ef ; /输出coutendl;return;else/1次幂for(int h=0;hs.size();h+)for(int n=0;ns.size();n+)coutBhn ;coutendl;int Relation:Warshall()for(int i=0;is.size();+i)for(int j=0;js.

6、size();+j)if(Aji=1)for(int k=0;ks.size();+k)Ajk=Ajk+Aik;if(Ajk!=0&Ajk!=1)Ajk=1;print();int a=1;int b=1;/for(int p=0;ps.size();+p)for(int l=0;ls.size();+l)if (Apl=0)for (int x=0;xs.size();+x)if(Apx*Axl=1)a=0;if(a=0)coutwrong!endl;elsefor(int p=0;ps.size();+p)for(int l=0;ls.size();+l)if(Apl=1&Epl=0)Apl=0; /再判断传递性for(int p=0;ps.size();+p)for(int l=0;ls.size();+l)if (Apl=0)for (int x=0;xs.size();+x)if(Apx*Axl=1)b=0;if(b=1)coutwrong!endl;return 0;Apl=1;coutright!endl;/return 1;void main()Relation w;w.inputs();w.inputa();w.print();cout输入nendl;w.mi();coutendl;cout闭包为endl;w.Warshall();实验截图:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号