【组合数学】 06 - 组合设计

  计数问题其实只是组合数学中的一小部分,以上也仅仅介绍了比较经典的结论。组合问题复杂多变,它们之间也少有联系,所以把组合数学称作一门学科并不准确。组合难题也会出现在各种益智趣题或竞赛难题中,随随便便就会出现一些未解的难题,所以我们也将止步于此。在结束本课之前,我决定再窥探一下组合问题中的一大类:组合设计。这些问题的关注点在如何布局元素,以满足一些特定要求,它们已然构成了组合学的众多分支。

1. 0-1矩阵

1.1 关联矩阵的秩

  有的问题需要在两个集合A,B间建立联系,如果把A,B的元素分别纵横排列,对应位置上以0,1表示元素是否有关联。这就得到了一个0-1矩阵,当然这里我们并不关注它的代数性质,而仅仅是借用其便捷的形式,来研究满足一定条件的组合问题。0-1矩阵也被称为关联矩阵,它可以是两个集合间的联系(比如集合A的子集与元素的包含关系),也可以是同一集合中元素的关系(比如图论中的图)。

  在讨论关联矩阵时,矩阵的行列的顺序对问题并无影响,为了讨论方便,可以随意交换行或列。好的,现在面对着一个满是0,1的矩阵R,我们需要讨论些什么问题呢?除了看每个0,1项之外,当然还看到了每一行和每一列,我们把它们都称为矩阵中的线。只要选择足够多的线,总可以包含所有的1,这些线称为关联矩阵的覆盖。你自然会想到一个有意义的问题:线数最小的覆盖是多少?我们把它定义为矩阵的线秩,记作λ(R)

  换个角度,称矩阵中的一个1,与之相关的有行、列两条线,把不在同一条线上项称为无关项。无关项足够多时,它们的线也可以覆盖关联矩阵,这就有了另外一个有意义的问题:最多可以有多少个无关项?我们把它定义为矩阵的项秩,记作ρ(R)。因为所有项包含在任意一个线覆盖中,而每条线上最多只能有一个无关项,故首先有ρ(R)λ(R)

  反之对于线数为λ(R)的覆盖,设有pq列,下面证明可以在每行、列上取得一个无关的代表项。考察p行中与q列不相交的部分,如果不能在其中选出p个无关的项,则必然可以用小于p条列线取代这p条行线。另一部分同样论证,这就证明了总可以选出p+q=λ(R)个无关项,从而有ρ(R)λ(R)。这就得到了等式(1),以后可以统称线秩、项秩为,线秩和项秩的问题可以互相转化,这从下面的例子和定理中都能看出。

(1)ρ(R)=λ(R)

  秩等于行列中较小值的矩阵便称为是满秩的,存在一种满秩的n阶方阵,它仅有n1,每行每列有且仅有一个1。换个说法,这种矩阵的每行每列之和都是1,若干这种矩阵Pk凸线性组合(式(2))也必然满足这一条件。每条线上和都为1的非负实矩阵被称为双随机矩阵,这是一种很有用的矩阵。

(2)P=c1P1+c2P2++cmPm,(ck>0,k=1mck=1)

  现在反过来问,是不是所有双随机矩阵都有式(2)的凸线性分解呢?这个其实不难,首先双随机矩阵不能被少于n条线覆盖,故必然是满秩的。选择n个无关项并取最小值c1,作关联矩阵P1使其仅在这n个项为1。作出满足P=c1P1+(1c2)P2P2,它也是双随机矩阵,但非零项比P少一个。对P2继续这个过程,有限步后便可得到式(2),结论得证,它被称为Birkhoff定理

1.2 Hall定理

  关联矩阵的项秩有一个非常重要的等价描述,把关联矩阵看出是点集A,B之间的连接,这在图论中被称为二部图A,B各选出一个关联的元素(a,b)称为一个匹配,然后继续在剩下的元素中选取匹配,项秩正表示二部图中的最大匹配数。这个模型有很广泛的应用,典型的就是任务分配问题:每个人能胜任某些任务,给一个分配方案,使尽量多的人能做自己胜任的任务。

  当然这个问题的第一步先要求矩阵的秩,或者更弱一点,至少我们要找到满秩的判定条件。为了表述方便,下面换一个等价模型,设A是集合,把bB看成是A的一个子集,a,b关联当且仅当abB是集合的集合,一般也称为集系。对于满秩的关联,为每个b都能找到一个互异的ab,它们被称为B相异代表系

  对于集系矩阵满秩有一个很显然的必要条件,就是任意r个子集的并不小于r。令人惊喜的是,它居然还是个充分条件,该结论被称为霍尔(Hall)定理(式(3))。其实条件本身等价于说,矩阵的零子矩阵总不大于r(|A|r),故零子矩阵的行列和总小于|A|,从而线覆盖数至少为|B|。这就证明了满秩,论证中用到了线秩在零子矩阵里的等价条件,这也是线秩最常用的方法。

(3)ρ(R)=|B||b1b2br|r,(biB,r|B|)

  Hall定理有很高的理论价值,但在实际应用中仍不是很方便,但借助这个定理,我们可以有更强但更方便的条件。比如如果存在r>0,使得矩阵每行至少有r1而每列最多有r1,可以证明它满足Hall定理,从而为满秩。其实任选s行,其中包含至少sr1,它们至少要有r列来覆盖,结论得证。当然实际应用中并不总能找到完美匹配,假设至少有d个找不到工作,只需再添加d个虚拟的大家都能做的工作,利用Hall定理也可以得到只有d个人找不到工作的充要条件是:任意r个子集的并不小于rd

  再来看Hall定理的两个有趣的应用。考察集合X的的两个分割A1,,AnB1,,Bn,我们希望找到n个互异的元素xk,使得xkAkxkBk,它们被称为分割的共同代表元组。以Ai,Bj有非空交集作为关联,问题等同于判断满秩,Hall定理说明满秩的充要条件是:任何rAk之并最多包含rBk之并。特别地,当|Ak|,|Bk|全部相等时,充要条件显然满足,也就是说,集合的任意两个分割数相等的平均分割总存在共同代表元组。

  有一种常见的m×n阶矩阵,共有n个不同的元素组成,且每条线上的元素不同。这样的矩阵称为拉丁矩阵,显然有mn,当m=n时称为拉丁方。一个自然的问题是,任何拉丁矩阵是否都能扩展为拉丁方?考察不属于第k列的元素组成的集合Ak,它们和n个元素以包含关系建立关联。显然,每个Ak包含nm个元素,而每个元素已经出现过m次且属于不同的列,故未出现在nm列中。直接利用Hall定理的推论,可选出Ak的相异代表系,以它们组成新的一行,可以继续这个过程,直至构造出拉丁方。

1.3 积和式

  对m×n阶的关联矩阵Rmn),一组相异代表系其实就是在每行k取一个元素ak,满足a1a2am=1。这就启发我们,对每行的任意选取计算其乘积,并将所有可能的乘积相加,结果便是相异代表系的个数。严格来讲,一种选取就是一个从行数k到列数的互异映射σ(k),记所有这种映射的集合为Ω,称式(4)为关联矩阵R积和式(permanent)

(4)Per(R)=σΩa1σ(1)a2σ(2)amσ(m)

  式(4)的定义与矩阵行列式的定义非常类似,故不难证明积和式也有类似行列式计算的拉普拉斯展开式,这里就不展开阐述了。积和式的计算并不容易,它只有理论价值,对于特殊的形式的关联矩阵可以通过拉普拉斯方法简化计算。积和式一般用于一些计数问题中,这里举一个常见的例子。

  考虑将n个元素重新排列,并限制每个元素出现的位置,这种问题被称为限位排列问题。每个元素和可以出现的位置建立起n×n阶关联矩阵,排列的个数显然就是矩阵的积和式。前面多次提到的错位排列问题就是一个特例,它的关联矩阵为JnInJn为全1矩阵),容易得到Dn=(n1)(Dn1+Dn2),你可以尝试计算其母函数和通项公式。

  还有一个经典的限位排列问题,就是著名的“夫妻围坐”问题:n对夫妻围坐在圆桌边,要求男女相间但夫妻不相邻。可以先让女士入座,问题的难点就是男士入座的坐法数Un。记女士k左手边的位置为k,男士k就不能坐kk+1k=n时为1),这是个典型的限位排列问题。我们可以轻松地写出关联矩阵JnInPnPnai(i+1)=an1=1的矩阵),但它的显式表达式比较难解,这里只给出结论(式(5),试试用容斥原理解决)。

(5)Un=k=0n(1)k2n2nk(2nkk)(nk)!

1.4 0-1矩阵类

  对一个m×n阶的关联矩阵R,可以计算每行和每列1的个数pi,qj,向量P=(p1,,pm),Q=(q1,,qn)被称为行和向量列和向量。我们自然想问,任意给定m维向量Pn维向量Q,存在以它们为行(列)和向量的关联矩阵吗?首先当然有式(6)成立,这个条件过于平凡,以下把它当做默认条件,并把以P,Q作为行(列)和向量的所有关联矩阵的集合记作R(P,Q)

(6)p1++pm=q1++qn

  由于行列可以任意交换,我们事先假定pi,qj都是递减排列的。在具体排列时,先将每行的pk1全部靠左放置,得到的矩阵记作R(P,n)。它的列和向量记作P=(p1,,pn)R(P,n)的特点是向左紧凑排列,具体来讲就是任意p1++pk都取到了最大值。为讨论方便,如果两个n维向量满足式(7),则称T优超S。刚才的讨论说明,R(P,Q)非空的必要条件是QP

(7)STi=1ksii=1kti,(k=1,2,,n)

  其实QP也是R(P,Q)非空的充分条件(式(8),当然还要求(6)成立),它由Ryser和Gale分别单独发现,这里仅描述一下思路,严格证明请看教材。以R(P,n)为初始状态,第一步将行和最小的mq1行向右平移一列,这样第一列就只有q11。去除掉第一列后矩阵仍然是相左紧凑排列的,将余下矩阵的行和最小的mq2行向右平移一列,依次类推便可构造出R(P,Q)

(8)R(P,Q)QP

2. 集系的极值

  组合设计问题中还有一类问题,就是在X的所有子集中选出满足条件的子集构成集系B,并且讨论B能取到的最值。这类问题花样繁多,大部分也很难解决,残留了大量尚未解决的问题。以我有限的眼光看,这些智力竞逐的游戏并没有广泛的应用领域,这里暂时就不做介绍了,留作后话吧。子集间最简单的关系就是交集和包含,下面从这两方面讨论两个简单的问题。

2.1 相交集系

  第一个问题很简单,就是要求集系中的元素两两交集非空,问集系最大为多少?构造两两相交的集系并不难,任取xX,所有包含x的子集便满足条件,其个数是所有子集的一半2n1。还能更大吗?对任何子集bBbb¯不能同时选取,故2n1已是最大值。

  甚至对一个阶小于2n1的相交集系B,总可以将其扩展为2n1个。因为总存在b使得b,b¯都不属于B,如果bB的所有元素都相交,则b可添加进B。否则设存在bB使得bb=,则可证B中任意元素b都满足bb,因为这样的话bb=,矛盾。既然恒有bb,则必然有bb¯,可将b¯添加到B中,结论得证。

  如果把条件改成任意三个集合有交集呢?基于开始的构造(总取a),最多仍然能取到2n1个,现在来证明这是唯一的情况。假设p是满足b1bp=bB的最大值,如果p<2n1,则易证bbp+1不属于B,但却与B中所有元素有交集,矛盾。故p=2n1,唯一性便容易证明。

2.2 Sperner系

  第二个问题可以描述为,集系B中的元素互不包含,问集系最大为多少?这样的集系也称为Sperner系。既然讨论到包含关系,我们来考察所有满足时(9)的包含链,Sperner系在每条链上最多只能有一个元素。由于包含链上每一步只多一个元素,故包含链总共有n!条。对任意bB,如果|b|=k,则包含b的链共有k!(nk)!条。若记B中阶为k元素有fk个,由于每条链最多只能包含B的一个元素,则显然有式(10)左成立,整理后便是式(10)右。

(9)=b1b1bn=X,(|bk+1||bk|=1)

(10)k=1n(fkk!(nk)!)n!k=1nfk(nk)1

  以下记m=n2,由(nk)的单调性易知f1++fn(nm),等号成立的充要条件是:只有当k=m,m+1fk0,并且所有链上都有B中的元素。当B取所有m阶子集,或者取所有m+1阶子集时,都满足等式要求。下面证明其实只能取这两种子集之一,证明中一定要牢记:每条链都有且仅有一个B的元素。

  假设m+1阶子集只有部分在B中,则必然可选出m+1阶子集b1B,b2B。将b1b2每次换一个元素地渐变,过程中必有某个时刻有b3B,b4B,且|b=b3b4|=m。由b3BbB,但由b4B又有bB,矛盾!只就证明了,Sperner系取最大值时,要么全是n2阶子集,要么全是n2阶子集,该结论被称为Sperner定理


全篇完

posted on   卞爱华  阅读(1687)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

点击右上角即可分享
微信分享提示