日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/20 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 集合上二元关系性质判定的实现(python实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

判斷一個二元關系的性質(自反,反自反,對稱,反對稱,傳遞)

例如:編寫程序實現有限二元關系(集合)是否具有自反性、對稱性、傳遞性等。

這大致都是仿照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实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。