【Dilworth定理】最长链覆盖与最小链覆盖

参考博客,作者:xuzengqiang,来源:CSDN 


首先了解一个东西:偏序关系。

偏序关系具体定义和分类

非严格偏序,自反偏序

【这个表示的是偏序关系,不是小于等于】

给定非空集合S,“≤”是S上的二元关系,若“≤”满足:

  1. 自反性:∀a∈S,有a≤a;

  2. 反对称性:∀a,b∈S,a≤b且b≤a,则a=b;

  3. 传递性:∀a,b,c∈S,a≤b且b≤c,则a≤c;

则称“≤”是S上的非严格偏序自反偏序

严格偏序,反自反偏序

给定集合S,“<”是S上的二元关系,若“<”满足:

  1. 反自反性:∀a∈S,有a≮a;

  2. 非对称性:∀a,b∈S,a<b ⇒ b≮a;

  3. 传递性:∀a,b,c∈S,a<b且b<c,则a<c;

则称“<”是S上的严格偏序反自反偏序

比方说:(A,≤)是偏序集,A={1,2,3},【偏序≤】表示在A上的【大于等于关系】。则有:≤={<3,3>,<3,2>,<3,1>,<2,2>,<2,1>,<1,1>},则有3≤2,2≤2,2≤1....

严格偏序与有向无环图(dag)有直接的对应关系。一个集合上的严格偏序的关系图就是一个有向无环图。其传递闭包是它自己 。——【来自百度百科】


偏序关系举例说明


举如下例子说明偏序关系:
1、实数集上的小于关系是一个严格偏序。
2、设S是集合,P(S)是S的所有子集构成的集合,定义P(S)中两个元素A≤B当且仅当A是B的子集,即A包含于B,则P(S)在这个关系下成为偏序集。
3、设N是正整数集,定义m≤n当且仅当m能整除n,不难验证这是一个自反偏序——

【在正整数集中,任意的整数a,都满足a|a。】

【若a|b,b|a,则a=b】

【若a|b,b|c,则a|c】

这个整除关系满足这三条性质,它就是一个自反偏序。

例:(A,≤)是偏序集,其中A={1,2,3,4,5},其中≤是整除关系,那么对任意的x∈p都有1≤x,所以1和1,2,3,4,5都是可比的,但是2不能整除3,且3不能整除2,所以2和3是不可比的


极小元

偏序集中没有与它可比较的更小的元素。设<A,R>是偏序集,  ,若不存在  ,使得 xRb 且 x≠b【R是偏序关系】,则b称为<B,R>的极小元。对给定的<B,R>可以有一个或多个极小元,也可以没有极小元。


链与反链

一个反链A是X的一个子集,它的任意两个元素都不能进行比较。

一个链C是X的一个子集,它的任意两个元素都可比。

举个李子吧。

比如说一个上升序列,它的偏序关系就是:对于两个数a[i],a[j],满足i<j且a[i]<a[j]。

比如这个序列:10,2,5,7,6,3,8,它有很多的子集。【下标从1到7】

随便取一个它的子集,比如{2,5,7,6},对于其中两个元素7和6,因为7对应a[4],6对应a[5],它们的下标4<5,但是对应的值7>6,所以不能比较。而2和5又可以比较,因为满足a[2]≤a[3]。那么{2,5,7,6}这个集合既不是链也不是反链。

再随便取一个子集,比如{2,7,8},这个集合中任意两个元素都可比,那么这个集合就是一个链。

再看这个子集,{10,7,3},这个集合中任意两个元素都不可比,那么它就是一个反链。


定理

最小链覆盖数 = 最长反链长度

最长链长度 = 最小反链覆盖数

下面是两个重要定理: 
定理1 令(X,≤)是一个有限偏序集,并令r是其最大链的大小。则X至少被划分成r个反链。 
其对偶定理称为Dilworth定理:
定理2 令(X,≤)是一个有限偏序集,并令m是反链的最大的大小。则X至少被划分成m个链。


证明

定理1证明:设p为最少反链个数


      (1)先证明X不能划分成小于r个反链。 由于r是最大链C的大小,C中任两个元素都可比,因此C中任两个元素都不能属于同一反链。就是C中的元素都在不同的反链中。所以p>=r。


      (2)设X1=X,A1是X1中的极小元的集合。那么A1就是一个反链。【因为如果A1中有两个元素a,b,它们可比较,则必有一个比另一个小,但是A1是极小元集合,矛盾。】从X1中删除A1得到X2。注意到对于X2中任意元素a2,必存在X1中的元素a1,使得a1<=a2。【如果X1中不存在a1使得a1<=a2,那么根据极小元定义,a2就会被算进极小元集合A1里】令A2是X2中极小元的集合,从X2中删除A2得到X3……最终,会有一个Xk非空而X(k+1)为空。于是A1,A2,...,Ak就是X的反链的划分,同时存在链a1<=a2<=...<=ak,其中ai在Ai内。由于r是最长链大小,因此r>=k。由于X被划分成了k个反链,因此r>=k>=p。因此r=p,定理1得证。


序列的划分

如果我们把一个序列的偏序关系定义为:i<j且a[i]>=a[j]那么它的最大链就是它的一个最长不上升序列【令其长度为len】,而它对应的反链就是上升序列。根据Dilworth定理,那么这个序列至少被划分成len个上升序列。

简单总结一下,就是:

一个序列的上升序列的最少个数等于最长不上升子序列的长度。

一个序列的下降序列的最少个数等于最长不下降子序列的长度。


END

很多地方都在口胡,希望有大佬【@G21GLF】指出错误之处。

猜你喜欢

转载自blog.csdn.net/g21wcr/article/details/83217111