【问题标题】:What is partial order?什么是偏序?
【发布时间】:2019-06-07 14:25:46
【问题描述】:

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

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

你也可以有一个更强的关系,它满足一个额外的 条件是,如果 a

为什么a 必须与b 相同?比如a = 4b = 5,那么就完全不一样了。如果他会提到

....如果 a = b 且 b = a....

那么是的,我同意。

第二部分,我也看不懂:

最后,你可以强加任何两个对象在一个 以一种或另一种方式与彼此的关系;这给了你一个 线性顺序或总顺序。

他是什么意思?

【问题讨论】:

  • 如果 a=4 和 b=5 那么“b
  • 但他为什么提到le而不是eq
  • @zero_coding:因为我们定义的是(部分)order 关系,而不是equality 关系。
  • 集合 S 上的关系 ~S x S 上的子集,所以我们说 x ~ y 给定 (x,y) 在子集中。见:en.wikipedia.org/wiki/Binary_relation
  • 您可以将关系视为一个函数,例如Int -> Int -> Bool。这定义了Int 之间的关系。

标签: haskell category-theory


【解决方案1】:

如果 a

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

b

但它们不满足第二个不等式。所以,你的反例是无效的。

让我们忘记<=,因为我怀疑它会诱使您考虑整数或其他一些您熟悉的数字。所以,我们会用一些任意关系重写它,比如¤

如果 a ¤ b 为真

b ¤ a 为真

这总是意味着 a 和 b 是同一个实体

那么我们称关系 ¤ 为“部分顺序”(在任何集合 a、b 中抽取)

作者所说的是对于某些关系,如果给定规则为真,那么我们称该关系为偏序。这是作者对偏序的定义。如果您发现规则不成立的某些情况 - 这只是意味着您找到了一种不是偏序的关系。

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

例如,不同科目的一组成绩:也许我可以决定一个学生的英语是否比另一个好,我可以决定一个学生的音乐是否比另一个好,但没有意义讨论一个学生的英语是否比另一个学生的音乐好。

最后一个引号只是意味着如果我们有一个关系 至少是一个部分顺序(它满足给定的规则)并且它可以应用于你的整体set(假设我们只讨论英语成绩),那么我们可以称其为该 set 的总排序。


PS。碰巧,规则确实适用于带有整数的通常<=:因此,我们可以将关系<= 称为ℤ 的偏序。因为它是also为每对整数定义的,我们可以also调用<=在ℤ上的总订单。

PPS。是的,偏序也需要传递性:我的回答实际上只解决了问题中引用的相当非正式的定义。您可以在Wolfram MathWorldWikipedia 或其他任何地方找到更完整的定义。

【讨论】:

  • 如果我没记错的话,偏序也需要传递性。
【解决方案2】:

一个正自然数被另一个正自然数整除是偏序的一个例子,它不是一个全序(如果 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。

【讨论】:

    【解决方案3】:

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

    添加z1 <= z2 也需要imag(z1) <= imag(z2) 的条件使其成为预购,因为现在(3, 5) <= (3, 6) 但反之则不然。它仍然不是一个顺序,因为(2, 3) <= (3, 2)(3, 2) <=(2, 3) 都不是真的。

    相反,当且仅当 real(z1) <= real(z2)abs(z1) <= abs(z2) 时,可以说 z1 <= 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 - 正确的总顺序,留下作为给读者的练习。)

    (通常,我们说复数是排序的,因为有多种方法可以定义全序,但没有单一的“自然”排序。)

    【讨论】:

    • 这仍然只是一个预购,因为它对于共轭(例如 (2,3) 和 (2,-3) )不是反对称的。
    • 呃,对。叹。我懒得想出一个好的总订单;有什么建议吗?
    • absarg 上的字典(arg 仅限于 [0,2pi);特殊大小写为 0)...?最好“把它作为练习留给读者”,呵呵。 :)
    • 我们说复数没有顺序的原因比这更具体:没有总顺序使它们成为ordered ring
    • 顺便说一句,realimag 上的简单字典排序也可以。
    【解决方案4】:

    考虑一下Directed Acyclic Graph

    如果我们说此图上的箭头代表<= 关系,那么我们可以看到a <= cc<=d。但是b<=cc<=b 都不是这样。因此我们有一个顺序,但它只是部分的,因为它只存在于域中的某些项目对。

    一般来说,DAG 定义其成员的偏序。即使从ae 的箭头不包括在内,我们仍然可以说a<=cc<=e,因此a<=e

    请记住,我们不会将“x

    另一方面,所有商品对都存在总订单。例如,整数有一个总顺序。

    【讨论】:

    • ce 看起来非常相似,至少在我的显示器上是这样。也许更高的分辨率会有所帮助?
    • @ThreeFx 同意。完成。
    • 第二段的关系是第一段的传递闭包(即不一样)。你在第 3 段的讨论也结束了。如果你说 yis 可以从 y 到达;但是,如果它们不一样,那就违反了 DAG 的预设。这就是为什么它们必须相同(否则就不是 DAG)。
    猜你喜欢
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2015-10-02
    • 2011-02-21
    相关资源
    最近更新 更多