为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

南邮离散实验三盖住关系和有补格判定

2019-05-26 11页 doc 51KB 78阅读

用户头像

is_633808

暂无简介

举报
南邮离散实验三盖住关系和有补格判定 实 验 报 告 (2017  / 2018 学年 第 一 学期) 课程名称 离散数学 实验名称 求取整除关系这一偏序关系上所有盖住关系,并判定对应偏序集是否为有补格。 实验时间 2017 年 12 月 6 日 指导单位 计算机科学与技术系 指导教师 柯昌博               学生姓名 胡君 班级学号 B16041309 学院(系) 计算机学院、软件学院 专 业 ...
南邮离散实验三盖住关系和有补格判定
实 验 报 告 (2017  / 2018 学年 第 一 学期) 课程名称 离散数学 实验名称 求取整除关系这一偏序关系上所有盖住关系,并判定对应偏序集是否为有补格。 实验时间 2017 年 12 月 6 日 指导单位 计算机科学与技术系 指导教师 柯昌博               学生姓名 胡君 班级学号 B16041309 学院(系) 计算机学院、软件学院 专 业 软件工程         实 验 报 告 实验名称 求取整除关系这一偏序关系上所有盖住关系,并判定对应偏序集是否为有补格。 指导教师 柯昌博 实验类型 上机 实验学时 4 实验时间 12月6日 一、 实验目的和要求 目的:学以致用,将书本上学习的求取盖住关系和有补格的判定用代码实现出来,将几门学科融会贯通,让学生学会动手实践,而不是只停留在书本上,做一个只会读书的“书呆子”。 要求:用代码实现:用户按从小到大的顺序输入集合A上的元素,以“-1”作为结束标志,程序输出集合A上整除关系这一偏序关系上所有的盖住关系,并判定对应偏序集是否为有补格。 二、 实验环境(实验设备) 设备:MacBook Pro (Retina, 13-inch, Early 2015) 环境(IDE):macOS Sierra 10.12.1(16B2555) Xcode Version 7.1 beta (7B60) 三、实验原理及内容 1.盖住关系的定义、格的定义、有界格的定义、有补格的定义             实 验 报 告 1、 程序实现代码如下:} #include #include using namespace std; vector a; //保存集合A上的元素 class note //表示序偶的结构体 { public: int x,y; note(int aa,int bb) { x=aa; y=bb; } }; vector COV; //保存所有盖住关系的序偶 void SolveCov() //计算出所有盖住关系,并保存在COV数组,原理根据书上定义 { for(int i=0;i=0;k--){ if(gcd(a[i],a[j])%a[k]==0){ inflag2=1;//inflag2负责保存该对元素的下确界是否存在的真假值 break; } } if(inflag1==0||inflag2==0){ outflag=0;//outflag负责保存整个偏序关系是否是格的真假值 return false; } } } return true; } bool JudgeYouJieGe() //判断是不是有界格,根据书上定义 { int flag=1,i; for(i=1;i=0;i--){ if(a[max]%a[i]!=0){ flag=0; return false; } } return true; } bool JudgeYouBuGe() //判断是不是有补格,根据书上定义 { int outflag=1; for(int i=0;ia[j]){ max=a[i]; min=a[j];} else { min=a[i]; max=a[j];} int k; for(k=max;k=0;k--){ if(gcd(a[i],a[j])%a[k]==0&&k!=0){ ininflag=0;//ininflag负责保存目前该对元素是否满足上确界为1且下确界为0的真假值 break; } } } if(ininflag==1){ inflag=1;//inflag负责保存对于当前元素a[i]是否能在集合A中找到一个元素是其补元素的真假值 break; } } if(inflag==0){ outflag=0;//outflag负责保存整个偏序关系是否是格的真假值 return false; } } return true; } int main() { int i,tmp; cout<<"请按从小到大顺序输入集合A上的元素\n"; cin>>tmp; while(tmp!=-1){ a.push_back(tmp);//选择vector结构是因为vector可以动态生成空间,避免了要用户输入集合A上元素个数的麻烦 cin>>tmp; } SolveCov(); cout<<"所有的盖住关系为:\nCOV A={"; for(i=0;i"; else cout<<",<"<"; } cout<<"}"<流程
图   实 验 报 告 四、实验小结(包括问题和解决方法、#体会#、意见与建议等) 1.本程序保持这个原则:初始化为满足条件更苛刻的情况(真1或假0),相比满足条不苛刻的情况作为跳出情况。这个很好用,可以简化判断流程以及节省判断时间 2.数组a选择vector结构是因为vector可以动态生成空间,避免了要用户输入集合A上元素个数的麻烦 3.int gcd(int x,int y) //辗转相除法计算最大公约数,至于最小公倍数则是x*y/gcd(x,y) { int r=1; while(r) { r=y%x; y=x; x=r; } return y; } 五、指导教师评语 成 绩   批阅人   日 期              
/
本文档为【南邮离散实验三盖住关系和有补格判定】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索