- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二元关系的闭包运算
二元关系的闭包运算
关键词:二元关系 关系矩阵 自反闭包 对称闭包 传递闭包 Warshall算法 三重循环
离散数学是现代数学的一个重要分支,也是计算机科学技术,电子信息技术,生物技术等的核心基础课程.二元关系是离散数学中重要内容。世界上的事物都在一定范围内以某种方
式互相联系,例如天体之间可以用的是同一星系来划分,人们之间可以用是否有共同的祖先来
定血缘.类似的数学或者计算机科学中的研究对象也以各种不同形式互相联系着,例如整数之
间以大小,整除或同余关系互相联系着,命题公式之间以是否具有相同的主合取范式相联系,
程序中两个变量可以是否占有同一内存地址相联系。 总之,事物之间总可以根据需要确定相
应的关系.从数学的角度来看,这类联系就是某个集合中元素之间存在的关系。一个二元关系
可能具有某种性质,也可能不具有这种性质。关系闭包就是使一个二元关系变成具有指定性
质的关系,并且还要满足最小条件。
Warshall算法的基本思想
对每个结点(从第一列开始),找出所有具有到此结点的有向边的结点(即该列中元素为1的所在行的结点),再将这些结点所在行同该结点所在行进行逻辑加后作为这些结点所在的新行(添加新的有向边)(反映了如果这些结点没有到其它结点的有向边,但有到该结点的有向边,再通过该结点间接到达其它结点,根据传递闭包的定义,这些结点就必然有一条有向边到达其它结点。)
设R是集合上的二元关系,Mr是R的关系矩阵
(1)置新矩阵A:=Mr
(2)置(列) j:=1
(3) 对所有的i(1≤i≤n)
如A(i,j)=1,则对k=1,2,…,n
A(i,k):=A(i,k) ( A(j,k)
(即将A的第i行与A的第j行进行逻辑加后送回A的第i行)
(4)j:=j+1
(5)如j≤n转(3),否则停止。
主要实验流程图
试验结果截图展示
启动程序
输入矩阵并得到结果
实验总结
Warshall算法给我们提供了一个求二元关系传递闭包的高效方法。综合现代计算机技术,利用Warshall算法我们可轻松的求出一个二元关系的传递闭包。
参考文献:
离散数学(第三版) 西安电子科技大学出版社 方世昌 2009年1月
【2】 C程序设计(第三版) 清华大学出版社 谭浩强 2012年1月
【3】 C#高级编程(第六版) 清华大学出版社 (美)内格尔(Nagel.C) 等著;
翻译;黄静 2008年10月
组员评分:
徐海燕: ——董晓娟
董晓娟: ——徐海燕
工作任务分配:
董晓娟:
徐海燕:
程序开始
输入矩阵的行数和列数
输入矩阵各元素的值
输入是否正确?
计算出传递闭包关系矩阵
打印传递闭包的关系矩阵
结束
正确
不正确
文档评论(0)