前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用python找出偏序集中极大元、极小元、最大元和最小元

利用python找出偏序集中极大元、极小元、最大元和最小元

作者头像
算法与编程之美
发布2023-11-08 15:31:42
1800
发布2023-11-08 15:31:42
举报

1 问题

在离散数学“关系”这一章的学习过程中,学到偏序集中极大元、极小元、最大元和最小元的求解方法,于是提出能不能用python语言实现偏序集中极大元、极小元、最大元和最小元的求解?

2 方法

  1. 判断偏序集中的极大元、极小元、最大元和最小元需要先确定集合中整出关系,然后根据整出关系绘制哈斯图,我们利用Python中的networkx库和matplotlib库来绘制集合的哈斯图。
  2. 根据绘制的哈斯图进行极大元、极小元、最大元和最小元的判断。

通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。

代码清单 1

代码语言:javascript
复制
import networkx as nx
import matplotlib.pyplot as plt
elements = [1, 2, 3, 4, 6, 9, 12, 18]
relations = [(a, b) for a in elements for b in elements if a != b and b % a == 0]
G = nx.DiGraph()
G.add_nodes_from(elements)
G.add_edges_from(relations)
maximals = []
for node in G.nodes():
   if len(list(nx.descendants(G, node))) == 0:
       maximals.append(node)
print("极大元为:", maximals)
minimals = []
for node in G.nodes():
   if len(list(nx.ancestors(G, node))) == 0:
       minimals.append(node)
print("极小元为:", minimals)
if len(maximals) != 0:
   print("没有最大元")
else:
   print("最大元为:", max(maximals))
if len(minimals) == 0:
   print("没有最小元")
else:
   print("最小元为:", min(minimals))

3 结语

针对能不能用python语言实现偏序集中极大元、极小元、最大元和最小元的求解的问题,提出用Python中的networkx库和matplotlib库来绘制集合的哈斯图,然后通过哈斯图对极大元、极小元、最大元和最小元进行判断方法。通过实验,证明该方法是有效的。其中对于networkx库和matplotlib库的功能还不够了解,只知道库的少数功能的用法,对于其他的功能用法还不够熟练。但是随着学习的推进,我们一定能熟知并能灵活运用库的更多功能,完成其他更加复杂的工作。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档