什么是偏序?

时间:2019-06-07 14:25:46

标签: haskell category-theory

我正在阅读Bartosz Milewski的程序员的类别理论,但我没有想到partial order

我没有得到以下句子的上下文:

  

您还可以建立更牢固的关系,从而满足其他   条件是,如果a <= b并且b <= a,则a必须与b相同。   这就是部分订单。

为什么a必须与b相同?例如a = 4b = 5,所以根本不一样。如果他会提起

  

....如果a = b和b = a ....

那是的,我同意。

第二部分,我也不明白:

  

最后,您可以施加以下条件:任意两个对象都位于   彼此联系,一种或另一种方式;那给你一个   线性订单或总订单。

他是什么意思?

4 个答案:

答案 0 :(得分:9)

  

如果 a <= b ...

所以a = 4b = 5满足第一个不等式

  

b <= a

但它们不满足第二个不等式。因此,您的反例无效。

让我们忘记<=,因为我怀疑它在欺骗您考虑整数或您熟悉的其他数字集。因此,我们将使用一些任意关系来重新编写它,例如¤

  

如果 a¤b为真

     

b¤a是正确的

     

,这始终意味着a与b是相同的实体

     

然后我们将关系¤称为“偏序”(在从a,b得出的任何集合上)

作者只是说,对于某些关系,如果给定规则为真,然后,我们将该关系称为部分订单。这是作者对部分订单的定义。如果您发现规则不成立的情况-这仅表示您发现的一种关系类型不是部分订单。

无论如何,定义 partial 顺序的原因是有时我们有对象的集合,而我们无法将所有对象相互比较。

例如,一组针对不同学科的成绩:也许我可以决定一个学生的英语水平是否比另一个学生更好,并且我可以确定一个学生的音乐水平是否比另一个学生更好,但是这样做并没有意义。讨论一个学生的英语是否比另一个人的音乐更好。

最后一个引号仅表示,如果我们的关系至少为 偏序(满足给定的规则),并且 可以应用于整个集合(例如,我们仅讨论英语成绩),然后可以称其为该集合的总阶。


PS。发生这种情况时,规则确实对于具有整数的通常<=成立:因此,我们可以将关系<=称为partial的偏序。因为还为每对整数定义了 ,所以我们也可以 在ℤ上调用<=的总阶。

PPS。是的,部分订单还需要传递性:我的回答实际上仅针对问题中引用的相当非正式的定义。您可以在Wolfram MathWorldWikipedia或任何地方找到更完整的定义。

答案 1 :(得分:5)

一个正自然数与另一个正自然数的可除性是部分顺序的一个例子,它不是总顺序(如果y / x是自然数,则x将y除)。

1)如果x除以y,而y除以z,则x除以z(传递性)。

2)如果x除以y,y除以x,则x = y(反对称)。

3)x除以x(反射率)。

这是部分订单的三个属性。

但这不是总顺序,因为您可以找到两个自然数x和y,这样x不会除以y并且y不会除以x。

答案 2 :(得分:4)

要了解区别,您需要查看整数以外的集合。考虑复数。当且仅当z1 <= z2时,复数的有效预序可以说real(z1) <= real(z2)。因此,(3, 5) <= (3, 6)(3, 6) <= (3, 5)。但是,这不是 partial 顺序,因为(3, 5) != (3, 6)

添加z1 <= z2也需要imag(z1) <= imag(z2)的条件,这使它成为预购商品,从现在(3, 5) <= (3, 6)开始,但反之则不然。这仍然不是 total 的顺序,因为(2, 3) <= (3, 2)(3, 2) <=(2, 3)都不正确。

相反,只有且仅当 z1 <= z2real(z1) <= real(z2)时,才能说abs(z1) <= abs(z2)。现在(3, 5) <= (3, 6)仍然是正确的,但是(3, 6) <= (3, 5)并不是因为sqrt(3**2 + 6**2) > sqrt(3**2 + 5**2)。但是我们可以说(2, 3) <= (3, 2)是因为2 <= 3sqrt(13) <= sqrt(13) 。这使<=运算符成为总订单。 (更新:检查absarg上的词典编排顺序-将arg限制为(-pi,pi],同时将特殊0-设为< / em>适当的总订单,留给读者练习。)

(通常,我们说复数不是 有序的,因为有几种方法可以定义总顺序,但是没有一个“自然”的顺序。)

答案 3 :(得分:3)

考虑以下Directed Acyclic Graph

Example DAG from Wikipedia

如果我们说图中的箭头代表<=关系,那么我们可以看到a <= cc<=d。但是b<=c也不成立,c<=b也不成立。因此,我们有一个订单,但它只是部分订单,因为它仅在域中的某些商品对中存在。

通常,DAG在其成员上定义部分顺序。即使不包括从ae的箭头,我们仍然可以说a<=cc<=e,所以a<=e

请记住,我们不会将“ x <= y”解释为“通过按照图中的箭头可以从x到y得出”以外的任何含义。现在假设我们有两个字母x和y,我们知道x <= y和y <= x。如果x和y不同,并且您可以从x到y,那么您将无法从y到x。因此x和y不可能是不同的项目,因此它们必须都是同一项目。

另一方面,对所有项目对都存在总订单。例如,整数具有总阶。