之间有什么区别
答案 0 :(得分:6)
让 X 成为一个集合。关系< ⊆ X × X 是部分排序,如果
对于所有 x ∈ X ,我们永远不会有 x < X ,
每当 x < y ,我们永远不会 y < x 和
每当 x < y 和 y < z ,我们有 x < ž
总排序是具有附加属性的部分排序,对于任何两个 x 和 y ,我们只有一个 X < y 或 y < x 或 x = y 。
X 上的弱排序是(据我所知)部分排序<具有附加属性,即商集 X /〜上的诱导排序是总排序,其中[ x ] = [ y ]∈ X /〜当且仅当 x < y 也 y < x 保留在 X 。
换句话说,在部分排序中,可以比较一些元素,并且如果可以进行比较,则排序是一致的。部分排序的例子:
集合 X 的正确子集,其中 A < B 表示 A ⊊ B 。
a 的自然数< b 表示“ a 划分 b ”。
C ++中的模板专业化。
总排序是一个所有元素,一次排列,形成一个统一的顺序。
如果您愿意将多个元素放在一起并将它们视为等同于订购目的,那么弱排序就是总排序。
术语“严格”是指使用“<”作为一种定义关系,而不是“≤”。您可以看到如何根据≤重写所有定义很容易,例如:在部分排序中,我们总是有 x ≤x等
以下是两个C ++模板特化的示例。当然,两者都是部分订购的,但第一种也是完全有序的。
示例#1:
template <typename T> struct Foo {}; // A1
template <typename U> struct Foo<U*> {}; // A2
template <> struct Foo<int*> {}; // A3
这些专业化完全按照A3&lt; A2&lt; A1,其中“&lt;”意思是“比专业更专业。”
示例#2:
template <typename T1, typename T2> struct Bar {}; // B1
template <typename U> struct Bar<int, U> {}; // B2a
template <typename V> struct Bar<V, int> {}; // B2b
template <> struct Bar<int, int> {}; // B3
这一次,我们有B3&lt; B2b&lt; B1和B3&lt; B2a&lt; B1,但B2a和B2b 不可比较。
在C ++中,这表现在以下方面:如果没有定义专门化B3,那么尝试实例化Bar<int, int>
会导致编译器错误,因为没有明确的“最专业”专门化。
部分有序集合可以包含许多“最少”元素和“最大”元素,因为这些概念只能说出可比较的元素。在B1,B2a和B2b中,B2a和B2b都是“最少元素”,因为没有更小的元素。尽管如此,没有一个独特的最小元素。
答案 1 :(得分:0)
简单地说,严格的弱排序被定义为定义(可计算的)等价关系的排序。等价类按严格的弱排序排序:严格的弱排序是等价类的严格排序。
部分排序(不是严格的弱排序)没有定义等价关系,因此使用“等效元素”概念的任何规范对于严格的弱排序都是没有意义的。所有STL关联容器在某些时候使用这个概念,因此所有这些规范在严格的弱排序中都没有意义。
因为部分排序(不是严格的弱排序)没有定义任何严格排序,所以你不能根据部分排序在公共sens中“排序元素”(你所能做的只是一个“拓扑排序”,它具有较弱的属性)。
鉴于
S
<
S
x
S
您可以定义S
的分区(S
的每个元素都在L(x)
,I(x)
或G(x)
中:
L(x) = { y in S | y<x }
I(x) = { y in S | not(y<x) and not(x<y) }
G(x) = { y in S | x<y }
L(x) : set of elements less than x
I(x) : set of elements incomparable with x
G(x) : set of elements greater than x
对序列中的每个<
按照x
iff 对序列进行排序,L(x)
的元素首先出现在序列中,然后是元素I(x)
,后跟G(x)
的元素。
对于序列中另一个元素y
之后出现的每个元素x
,序列在拓扑上排序 iff ,y
不小于{{1 }}。这是一个比排序更弱的约束。
证明x
的每个元素都小于L(x)
的任何元素都是微不足道的。 G(x)
的元素与L(x)
的元素之间,或I(x)
的元素与I(x)
的元素之间没有一般关系。但是,如果G(x)
是严格弱关系,则<
的每个元素都小于L(x)
的任何元素,并且I(x)
的任何元素都小于任何元素I(x)
。
如果G(x)
是严格弱关系,<
则x<y
的任何元素都小于任何元素L(x) U I(x)
:任何元素不大于I(y) U G(y)
}小于任何不小于x
的元素。 这不适用于部分订购。