- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中南大学离散数学报告2
离散数学实验报告
(实验二AC)
一、实验目的:
掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。理解等价类的概念,掌握等价类的求解方法。
二、实验内容:
1. 求有限集上给定关系的自反、对称和传递闭包。(有两种求解方法,只做一种为A,两种都做为B)
2. 求有限集上等价关系的数目。(有两种求解方法,只做一种为A,两种都做为B)
3. 求解商集,输入集合和等价关系,求相应的商集。(C)
三、实验环境:
工具:Mcrosoft Visual Studio 2005;
程序设计语言:C语言。
四、实验原理和实现过程(算法描述):
实验A 求有限集上等价关系的数目。
集合上的等价关系与该集合的划分之间存在一一对应关系。一个等价关系对应一个划分,一个划分也对应一个等价关系。我们把n个元素的集合划分成k块的方法数叫第二类Stirling数,表示为S(n,k)。给定S(n,n) = S(n,1) = 1,有递归关系:
S(n,k) = S(n ? 1,k ? 1) + kS(n ? 1,k)
集合上所有等价类的个数即为k从1到n,所有S(n,k)之和。
这个问题的算法比较简单,仅需两步就可完成,首先根据上式,定义一个递归函数S(n,k),然后对k从1到n,求取sum=∑S(n,k),sum的值就是给定n元集合上的等价关系数目,最后将其输出即可。
实验A的流程图如下所示:
实验C 求解商集,输入集合和等价关系,求相应的商集
商集即等价类构成的集合,要求商集,首先需要判断输入的关系是否为等价关系,否则没有商集。判断输入的关系是否为等价关系的算法如下:
(1)将输入的关系转换为关系矩阵,这里定义了一个函数translate(),转换的方法为:依次查找输入的关系中的二元组的两个元素在集合中的位置,例如a,b,若a在集合A中的位置为i,b在集合A中的位置为j,就令存放关系矩阵的二维数组M[i][j]=1,这样就将输入的关系R转换为关系矩阵的形式。
(2)定义三个函数zifan(),duichen()和chuandi(),分别的作用是判断输入的关系是否自反、对称和传递。由等价关系的定义知,若三个函数的返回值均为1,则输入的关系是等价关系。判断的方法是:若关系矩阵M中所有的M[i][i]=1,则是自反关系;若M中所有的M[i][j]=M[j][i],则是对称关系;若M[i][j]=1并且M[j][k]=1,那么一定有M[i][k]=1,则是传递关系。
判断了所输入的关系为等价关系后就可以求其商集了,由于商集即等价类构成的集合,所以要求其等价类。确定集合A={a1,a2,a3,…,an}关于R的等价类的算法如下:
(1) 令A中每一个元素自成一个子集,A1={a1},A2={a2},…,An={an}
(2) 对R中每个二元组 x,y ,判定x和y所属子集。假设x属于Ai,y属于Aj,若AiAj,则将Ai并入Aj,并置Ai为空;或将Aj并入Ai,并置Aj为空。一般将元素少的集合合并到元素多的集合。
(3) A1 ,A2,…,An中所有非空子集构成的集合即为所求商集。
集合的并运算采用并查集(union-find sets)的方法。并查集是一种树型的数据结构,多棵树构成一个森林,每棵树构成一个集合,树中的每个节点就是该集合的元素,找一个代表元素作为该树(集合)的祖先。并查集支持以下三种操作:1) Make_Set(x) 把每一个元素初始化为一个集合
初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身。
Find_Set(x) 查找一个元素所在的集合
查找一个元素所在的集合,只要找到这个元素所在集合的祖先即可。判断两个元素是否属于同一集合,只要看他们所在集合的祖先是否相同即可。
Union(x,y) 合并x,y所在的两个集合
合并两个不相交集合操作很简单:首先设置一个数组Father[x],表示x的父亲的编号。那么,合并两个不相交集合的方法就是,找到其中一个集合的祖先,将另外一个集合的祖先指向它。
五、实验数据及结果分析:
以下是实验过程中的实验数据截图:
实验A
以上三图显示了集合元素数为3、4、5的等价关系数目分别为5、15、52,根据原递归式计算也是此值。说明程序正确。
上图显示的是当输入错误的情况,当输入错误时提示错误,再次输入后正确计算出其结果。
由以上图示数据可以看出程序完整地实现了实验A的要求。
实验C
(1)运行程序开始提示输入集合A:
(2)输入集合并回车,频幕上显示要计算的集合A,并提示下一步输入集合上的等价关系R:
(3)输入集合A上的一个等价关系R并回车,显示关系R和它的关系矩阵,以及计算出的商集:
(4)再次运行程序,此次输入的关系不是等价关系,则会出现
您可能关注的文档
最近下载
- 中国农村居民人均收入及消费支出分析毕业论文.docx
- DBJ/T45-066-2018(J11629-2018)广西岩土工程勘察规.pdf
- 2024年春上海开放大学马克思主义基本原理计分作业1-8答案.pdf
- 国家开放大学《电子商务网站规划与设计》大作业参考答案.docx
- 基于Node和VUE3.0的景区旅游APP系统设计与实现.docx VIP
- (正式版)D-L∕T 806-2013 火力发电厂循环水用阻垢缓蚀剂.docx VIP
- 双光镜片屈光度检测修改完20201013.ppt
- 23G523-1_型钢混凝土组合结构构造 图集.docx
- 锅炉给水泵检修方案.doc
- 第16课 国家出路的探索与列强侵略的加剧说课课件 高中历史统编版(2019)必修中外历史纲要上册.pptx
文档评论(0)