判断一个二元关系的性质(自反,反自反,对称,反对称,传递)

例如:编写程序实现有限二元关系(集合)是否具有自反性、对称性、传递性等。

这大致都是仿照SIgmundRoths大佬写出的程序,但是在运行的时候发现判断传递关系时,出现了一个序偶如果能和多个序偶进行传递判断的情况下,至于第一个序偶进行判断而忽略了后续判断的情况,所以稍微改动了下,但大致还是大佬的结构,关于所说的重复累赘问题,我这边解决失败了,所以等之后有时间会再来尝试的
这是大佬的原文章

改动部分

2020/6/20 更改了传递性判断,原方法无法判断如果全部不存在匹配的情况,级形如< 1 , 2 >,< 3 ,4 >的判断,就是将传递性模块重新构造了一边。
同时调整了空集的情况

可以改进的地方

输入模块

输入出没有进行输入的判断,如果出现<2,>的输入将默认为正确,另外每输入一个序偶都需要进行回车。

对称性与反对称性模块

会有重复的判断,如对称性模块里,如果已经判断了一对序偶具有对称性,但在下一个序偶判断是,仍然会和他们匹配,且对称的序偶对的第二个序偶也会重复一次判断。
反对称模块也类似,会进行繁琐的重复

import re
import operatori = 0
s = ' '
s1 = {}
variable = []while (s != ''):i = i+1s = input()i = str(i)str1 = 'f' + istr2 = 'b' + ii = eval(i)if s == '':breaks1[str1] = re.search('([0-99]*),([0-99]*)',s).group(1)s1[str2] = re.search('([0-99]*),([0-99]*)',s).group(2)if s1[str1] == '' or s1[str2] == '':print("您的输入有误,结果不具有参考性")break
#print(s1)
num = idef creater(i):global x1,x2i = str(i)str1 = 'f' + istr2 = 'b' + ix1 = s1[str1]x2 = s1[str2]def get_element():global num,x1,x2for i in range(1,num):creater(i)if x1 not in variable:variable.append(x1)if x2 not in variable:variable.append(x2)#print(variable)def check_reflexivity():ref = variablefor i in range(1,num):creater(i)if x1 == x2 :ref.remove(x1)else:continueif ref == []:print("具有自反性")return 1else:print("不具有自反性")return 0def check_irreflexivity():flag = 0for i in range(1,num):creater(i)if x1 is x2:print("没有反自反性")flag = 1return 0breakif flag != 1:print("具有反自反性")return 1def check_symmetry():flag = 1for i in range(1,num):creater(i)y1 = x1y2 = x2for k in range(1,num):creater(k)if y1 == x2 and y2 == x1:breakif k == num - 1:print("没有对称性")flag = 0return 0if flag:print("具有对称性")return 1def check_antisymmetry():flag = 1for i in range(1,num):creater(i)y1 = x1y2 = x2for k in range(1,num):creater(k)if y1 == x2 and y2 == x1:if x1 == x2:continueelse:flag = 0print("不具有反对称性")return 0if flag == 0:breakif flag:print("具有反对称性")return 1def check_transitivity():flag = 2falg1 = 0for i in range(1,num):creater(i)y1 = x1y2 = x2if x1:flag1 = 1for k in range(1,num):creater(k)if y2 == x1:z1 = y1z2 = x2else:continuefor t in range(1,num):creater(t)if z1 == x1 and z2 == x2:flag = 1breakelif t == num - 1:flag = 0if flag == 0:breakif flag == 1:continueif flag == 0:print("没有传递性")breakif i == num-1 and k == num - 1 and flag != 1:print("没有传递性")breakif flag == 1 or falg1 == 0:print("有传递性")def main():get_element()if check_irreflexivity():print("没有自反性")else:check_reflexivity()check_symmetry()check_antisymmetry()check_transitivity()if __name__ ==  '__main__':main()

集合上二元关系性质判定的实现(python实现)相关推荐

  1. 南邮 | 离散数学实验二:集合上二元关系性质判定的实现

    题目:根据某一集合元素以及关系矩阵,判断其满足什么特性,输出满足的特性,再求此集合的闭包. 举例:以集合{1,2,3,4}为例.关系矩阵为:[[1,0,1,0],[0,1,0,0],[1,0,1,1] ...

  2. 离散数学实验二 实现任意集合上二元关系的性质判定

    实验原理 首先输入集合元素个数,再输入集合元素循环放入数组中,接着输入关系将其转换为关系矩阵,最后调用judge函数输出性质. #include<iostream> #define MAX ...

  3. 给定一集合A和集合A上的一个二元关系,判断其性质,然后根据性质判定是否为等价、相容、偏序关系。

    目录 离散数学知识点回顾 关系及其表示 关系的性质 关系的类型 数据结构 集合 关系 算法 与 源代码 集合的读取 关系的读取 自反的与反自反的 对称的与反对称的 传递的 关系的类型 完整源代码 心得 ...

  4. python 等腰三角形的性质,相似三角形性质判定().ppt

    相似三角形性质判定() 例4.在下面的图形中,有两个相似三角形, △ABC∽△DEF,试确定 y.m.n的值. 判断题1.相似三角形一定全等,全等三角形一定相似.2.相似比为1的两个三角形全等. 3. ...

  5. (小甲鱼python)集合笔记合集一 集合(上)总结 集合的简单用法 集合的各种方法合集:子、交、并、补、差、对称差集、超集

    一.基础复习 集合与字典区别 集合中所有元素都是独一无二的,并且也是无序的. 集合具有唯一性.无序性.有限性 >>> type({}) #字典 <class 'dict'> ...

  6. 《Python Cookbook 3rd》笔记(4.12):不同集合上元素的迭代

    不同集合上元素的迭代 问题 你想在多个对象执行相同的操作,但是这些对象在不同的容器中,你希望代码在不失可读性的情况下避免写重复的循环. 解法 itertools.chain() 方法可以用来简化这个任 ...

  7. 【集合论】二元关系 ( A 上二元关系 | A 上二元关系示例 )

    文章目录 一. A 上二元关系 二. A 上二元关系个数 三. A 上二元关系 示例 ( 集合中有两个元素 ) 四. A 上二元关系 示例 ( 集合中有两个元素 ) 一. A 上二元关系 AAA 上二 ...

  8. Github上点赞最多的10个Python项目(2020年3月)

    1.awesome-python-webapp Star 1.9k Watch 223 Fork 1.7k 中文 廖老师的 Python 入门教程中的实践项目的代码,教程在线阅读 2.Minos St ...

  9. python创建一个集合类型的方法是_【Python基础】一文理解Python集合,17个方法全解,看完就够了...

    一.集合的定义 01 定义与特性 Python中的集合类似于数学中的集合概念,它是一组无序.不可重复元素序列,集合用{value1,value2}创建,某种程度上可以把集合看作是没有值的字典.字典是d ...

最新文章

  1. python获取docx文档的内容(文本)
  2. html 文件路径 d files,tmpfiles.d
  3. why some product does not have Note assignment block
  4. win10格式化linux分区,直接删除linux分区再重装linux可以恢復启动么,我是直接在win10里把linux mint...
  5. 大开眼界!终于等到这部每一帧都是壁纸的纪录片!
  6. EJB 3.0注入和查找简介
  7. bzoj1699[Usaco2007 Jan]Balanced Lineup排队
  8. flex 点击空格键会有以前点击过的事件的保留
  9. 手撸一款精美的水波气泡
  10. Spring整合Activiti工作流
  11. 20155307 刘浩 信息安全技术(李冬冬) 实验三 数字证书应用 实验报告
  12. 小爱音箱 电脑 麦克风_外观全面升级,小米小爱音箱Art体验
  13. 【数学建模】看了都说好,高温作业专用服装设计拟合函数模型,强烈建议收藏
  14. java生成离散型随机数_几种随机数生成方式
  15. Photoshop插件--创建暗调通道--脚本开发--PS插件
  16. mysql 间隙锁 的范围_mysql间隙锁
  17. Java三大主流框架
  18. Ultra Fractal(分形艺术软件)官方正式版V6.04 | 含ultra fractal教程 | 最新ultra fractal下载
  19. 使用Manjaro作为OpenStreetMap瓦片服务器
  20. python项目实战:免费下载kugou任意付费音乐

热门文章

  1. 花之吻自己查错误订单的一个小脚本
  2. Ubuntu安装VMware Tools的方法
  3. 爱数之介质服务器及介质同步技术
  4. 9道最佳解酒方法[转]
  5. Sublime Text 3 注册激活码
  6. 【ECCV 2018】Facebook开发姿态转换模型,只需一张照片就能让它跳舞(视频)
  7. 关于c++ template的branching和Recursion的一段很好的描述
  8. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-10底层驱动之I2C
  9. 南阳18--The Triangle
  10. Know more about RAC GES STATISTICS