【离散】画哈斯图--最好理解绝不会出错

本文详细讲解了离散数学中哈斯图的绘制方法,通过实例演示了如何根据整除关系确定点的层次,并连接有关系的点。同时,介绍了极小元和极大元的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

离散数学哈斯图的画法

两个步骤:
第一步:排点的层数
第二步:把有关系的点连接起来

看一道题:

A={1,2,3,4,6,8,9},偏序集S={A,《 },其中为整除关系,请画出S的哈斯图

首先把他们的所有的关系列出来(后面的数可以整除前面的数,这两个数就有整除的关系)

<1,2> <1,3> <1,4> <1,6> <1,8> <1,9>

<2,4> <2,6> <2,8>

<3,6> <3,9>

<4,8>

然后来排点的层数。

首先看,所有关系里面不在值域的元素有哪几个:最先找到的是1

所以我们把1放到第一层

在这里插入图片描述

然后我们删掉<1,x>的所有元素(之后就不考虑那些元素)

<1,2> <1,3> <1,4> <1,6> <1,8> <1,9>

<2,4> <2,6> <2,8>

<3,6> <3,9>

<4,8>

继续找(没被加入哈斯图的)不出现在值域的元素,我们找到了2,3,那么把2,3放在第二排.
在这里插入图片描述同样删除<2,x>和<3,x>的所有元素

<1,2> <1,3> <1,4> <1,6> <1,8> <1,9>

<2,4> <2,6> <2,8>

< 3,6> < 3,9>

<4,8>

这时不出现在值域且没被加入哈斯图的元素有4,6,9。那么把4,6,9放到第三排。
在这里插入图片描述

最后还剩下8,那么把8放在第四排。
在这里插入图片描述

现在我们点的排序就排好了。

最后把每一层之间有关系的点连起来就好了。

⚠️注意,这里每一层只会和上一层相连,不会跨两层连。
在这里插入图片描述
有帮助的话就给我点个赞吧!
5个赞更新极大极小元。

更新一下极大极小元:
极小元就是 没有元素比它小
如果有的关系只有它自己 那么也是极小的 那也是极小元
极大元同理 :)


楼主最近在准备保研 要复习专业课内容

大家如果有什么想看的科目也可以评论我 (毕竟我都会复习到)

### 哈斯图的概念 哈斯图(Hasse Diagram)是一种用来表示有限偏序集合的图形工具。它通过节点和边来描述偏序关系中的元素及其层次结构,能够直观地展现集合中元素之间的比较关系[^1]。 在一个哈斯图中,如果存在 \(a \leq b\) 的偏序关系,则满足以下条件: - 如果 \(a < b\) 并且不存在其他元素 \(c\) 使得 \(a < c < b\),则在图中用一条从 \(a\) 到 \(b\) 向上的直线连接这两个点。 - 图中省略了传递性的显示,即如果 \(a < b\) 和 \(b < c\) 已经被绘出,则不需要再出 \(a < c\) 的连线。 ### 偏序关系与哈斯图的关系 偏序关系是指定义在某个集合上的一种二元关系,记作 \(\leq\),具有自反性、反对称性和传递性。对于一个给定的偏序集合 \((S, \leq)\),可以通过构建哈斯图将其可视化。具体来说,哈斯图仅保留不可约的关系,从而简化了传统的有向无环图表示法。 ### 哈斯图的绘制方法 以下是绘制哈斯图的具体过程: #### 1. 确定偏序集合 首先明确要可视化的偏序集合以及其内部存在的所有偏序关系。例如,在整除关系下考虑正整数集合 {1, 2, 3, 6} 中的元素间关系。 #### 2. 找到覆盖关系 计算每一对元素之间是否存在直接前驱或后继关系。所谓“覆盖”,指的是当且仅当 \(a < b\) 成立,并且没有任何中间项 \(c\) 满足 \(a < c < b\) 时成立的情况。 #### 3. 构建顶点布局 按照一定的规则排列各个元素作为顶点放置于平面之上;通常采用分层方式布置——越靠下的层数代表较小值或者较低等级的对象。 #### 4. 添加连结线段 依据之前找出的所有覆盖对加入相应方向向上延伸的简单路径链接相邻两定点形成最终图像。 ```python import matplotlib.pyplot as plt from networkx import DiGraph, draw_networkx G = DiGraph() elements = ['1', '2', '3', '6'] edges = [('1','2'),('1','3'),('2','6'),('3','6')] for e in elements: G.add_node(e) for edge in edges: G.add_edge(*edge) pos = {'1': (0,-1), '2': (-1,0), '3':(1,0),'6':(0,1)} draw_networkx(G,pos=pos,node_size=800,alpha=.9) plt.axis('off') plt.show() ``` 上述代码片段展示了如何利用 Python 库 `matplotlib` 和 `networkx` 来创建简单的哈斯图表实例。
评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妮妮学姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值