6.7 习题解答Solutions to exercises
本页为译文 + 高中讲解合一:黑色正文为原书每道解答的忠实翻译;彩色框(目标 / 例 / 分步推演)与配图为面向高中生的详解,逐步把原书省略的步骤补全、举具体数字例子、画图,不用比喻。本节是第 6 章(极值组合学)全部习题的解答。
习题 1
我们对 \(n\) 用归纳法证明,初始情形 \(n=2\) 容易验证。取图 \(G\) 的一条边,端点为 \(A\) 与 \(B\)。若 \(A\) 与 \(B\) 的度数之和至少为 \(2n+1\),则 \(A\) 与 \(B\) 有一个公共邻居 \(C\),证毕。否则,删去 \(A\)、\(B\) 以及与它们相邻的所有边。剩下的图有 \(2n-2\) 个顶点,且至少有 \[ n^2+1-(2n-1)=(n-1)^2+1 \] 条边,于是由归纳假设,它含有一个三角形。
- 归纳的起点 \(n=2\):此时图有 \(4\) 个顶点、至少 \(n^2+1=5\) 条边。\(4\) 个顶点最多有 \(\binom{4}{2}=6\) 条边,\(5\) 条边只缺一条,很容易看出此时必有三角形。
- 取一条边 \(AB\),分两种情况。设当前图有 \(2n\) 个顶点、至少 \(n^2+1\) 条边。
- 情况一:\(\deg(A)+\deg(B)\ge 2n+1\)。除去 \(A,B\) 自己,其余顶点共 \(2n-2\) 个。\(A\) 的邻居(除 \(B\) 外)和 \(B\) 的邻居(除 \(A\) 外)加起来有 \(\big(\deg(A)-1\big)+\big(\deg(B)-1\big)\ge 2n-1\) 个“邻居名额”,但只能落在 \(2n-2\) 个顶点上。\(2n-1>2n-2\),由抽屉原理必有一个顶点 \(C\) 同时是 \(A\) 和 \(B\) 的邻居。于是 \(A,B,C\) 两两相邻,得到三角形。
- 情况二:\(\deg(A)+\deg(B)\le 2n\)。删去 \(A\) 和 \(B\)。被删掉的边是“与 \(A\) 相连的边”加“与 \(B\) 相连的边”,但边 \(AB\) 在两边各算了一次,所以删掉的边数恰为 \(\deg(A)+\deg(B)-1\le 2n-1\) 条。
- 数剩下的边。剩 \(2n-2=2(n-1)\) 个顶点,边数至少为 \[ (n^2+1)-(2n-1)=n^2-2n+2=(n-1)^2+1. \] 这正好是“\(2(n-1)\) 个顶点、超过 \((n-1)^2\) 条边”的形式,套上归纳假设,剩下的图含三角形,原图当然也含。♦
习题 2
(a)((c) 部分蕴含本部分,但我们也另给一个证明。)用所有可能的方式取出 \(G\) 的全部二部子图(bipartite subgraph),并统计它们的边。换言之,统计所有的对 \((e,B)\),其中 \(e\) 是 \(G\) 的二部子图 \(B\) 的一条边。
设 \(n\) 为 \(G\) 的顶点数。一方面,\(G\) 的每条边都出现在 \(2^{n-2}\) 个二部子图中,所以这种对的总数是 \(e(G)\,2^{n-2}\)。(确实如此:固定一条边后,与该边不相干的 \(n-2\) 个顶点要分成有序的两块,方法数是 \(2^{n-2}\)。)另一方面,\(G\) 的至少含一条边的二部子图 \(B\) 共有 \(2^{n-1}-1\) 个。因此由抽屉原理,必有某个 \(B\),它至少有 \[ \frac{e(G)\,2^{n-2}}{2^{n-1}-1}>\frac{e(G)}{2} \] 条边。
(c)(本部分蕴含 (b)。)把顶点集划分成两块 \(Q\) 与 \(R\),并丢掉每块内部的边。若得到的二部图 \(B\) 满足 (c) 中的判据,证毕。若不满足,则存在一个顶点 \(x\) 违反该判据,这意味着与 \(x\) 相邻的边中,超过一半落在与 \(x\) 同一块内。于是把 \(x\) 移到另一块,\(B\) 的边数会增加。只要还存在违反判据的顶点,就一直这样做。这个过程最终必定停止,因为 \(B\) 的边数不可能无限增长,而每一步它都严格增加。过程停止时,没有任何顶点 \(x\) 违反判据,命题得证。
- (a) 把同一个数 \(\sum_{(e,B)}1\) 横竖各数一遍。一个“二部子图”对应一次把 \(n\) 个顶点分成有序两块 \(Q,R\) 的方式,共 \(2^n\) 种。
- 按边来数(竖着数)。取定 \(G\) 的一条边 \(e=uv\)。\(e\) 出现在子图 \(B\) 里 \(\iff\) \(u,v\) 被分到不同块。固定 \(u,v\) 异块后,剩下 \(n-2\) 个顶点各自任选一块,有 \(2^{n-2}\) 种。所以每条边贡献 \(2^{n-2}\) 个对,总对数 \(=e(G)\cdot 2^{n-2}\)。
- 按子图来数(横着数)。这些对都属于“至少含一条边”的二部子图。把顶点分成两块时,至少有一条边跨块的分法有 \(2^{n-1}-1\) 种(这是按书中计数;总分法去掉那些一条跨边都没有的)。
- 抽屉原理收尾。把总对数平均分到这 \(2^{n-1}-1\) 个子图上,必有一个子图的边数不少于平均值: \[ \frac{e(G)2^{n-2}}{2^{n-1}-1}>\frac{e(G)2^{n-2}}{2^{n-1}}=\frac{e(G)}{2}. \]
- (c) 局部调整法。判据是“每个顶点跨块的边数 \(\ge\) 它同块内的边数”。若某顶点 \(x\) 同块内的边比跨块的多,就把 \(x\) 搬到对面:原来 \(x\) 的“同块边”变跨块、“跨块边”变同块,净增加的跨块边数 \(=\) (同块边 \(-\) 跨块边) \(>0\),所以总跨块边数严格变大。
- 为什么一定停?跨块边数是个不超过 \(e(G)\) 的整数,每步严格增大,不能无限增大,故有限步后必停。停时人人满足判据:每个顶点至少一半的边跨块。把所有顶点的“至少一半”加起来,可知整张图至少一半的边跨块,于是又得到 (b):存在边数 \(\ge e(G)/2\) 的二部子图。♦
习题 3
只需证明:在允许范围内的任一区间 \([a,b]\) 上,函数 \[ g(x)=\binom{x}{r}+\binom{a+b-x}{r} \] 在 \(x=(a+b)/2\) 处有唯一的最小值。为简化记号,令 \(n=a+b\)。我们要证 \(g'(x)\) 的唯一零点在 \(x=n/2\),且在该零点处 \(g'(x)\) 由负变正。
对 \(r\) 作归纳,\(r=1\) 的情形成立。注意由对称性,可设 \(x\le n/2\)。还注意到
\[ g'(x)=\binom{x}{r-1}\cdot\frac{x-r+1}{r}+\binom{n-x}{r-1}\cdot\frac{n-x-r+1}{r}, \]
此式还可重新分组为“两端对称项之差”加“正项”的形式以判断符号。验证 \(x=n/2\) 确为 \(g'(x)\) 的零点是常规计算。注意 \(\binom{x}{r}\) 当 \(x>r-1\) 时关于 \(x\) 递增。结合归纳假设与上式可得:当 \(x>n/2\) 时 \(g'(x)>0\),当 \(x 我们断言:若 \(G\) 至少有一条边,则 \(\chi(G')=\chi(G)\)。(否则 \(\chi(G)=1\) 而 \(\chi(G')=2\)。)事实上,若 \(f\) 是 \(G\) 的一个正常染色(proper coloring,相邻顶点异色),则令 \(x'\) 的颜色为 \(f(x)+1\),其中加法按模 \(\chi(G)\) 进行。也就是说,若 \(f(x)=\chi(G)\) 则 \(f(x')=1\),同时保持 \(x\) 的颜色不变。这就给出了 \(G'\) 的一个用 \(\chi(G)\) 种颜色的正常染色。 (a) 不妨设 \(k=\chi(G)\le\chi(H)\)。取 \(G\) 的任一 \(k\)-染色 \(f\)。令顶点 \((g,h)\) 的颜色都等于 \(f(g)\)。这给出了 \(G\times H\) 的一个正常 \(k\)-染色,因为该图中两顶点相邻当且仅当它们的 \(G\)-坐标在 \(G\) 中相邻。 (b) 是的。\(G\times G\) 中形如 \((g,g)\) 的顶点所导出的子图同构于 \(G\),所以为给该子图染色确实需要 \(\chi(G)\) 种颜色。 用如下贪心方式给顶点染 \([4]=\{1,2,3,4\}\) 中的颜色:按顶点度数不增的顺序逐个处理,对每个顶点使用能保持染色正常的最小颜色。设 \(d_1\ge d_2\ge\cdots\ge d_{10}\) 为各度数,则对第 \(i\) 个顶点,被禁用的颜色数为 \(\min(d_i,\,i-1)\)。确实如此:顶点 \(i\) 有 \(d_i\) 个邻居,其中至多 \(i-1\) 个在它之前被染色。在本题的图中,\(\max_{i=1}^{10}\min(d_i,i-1)=3\),且最大值在第四个顶点处取得。所以禁用颜色从不超过三种,这证明了 \(\chi(G)\le 4\)。 为说明 \(\chi(G)=4\) 可能,取三条顶点不相交的边和一个三角形。这个不连通的图因含三角形而色数为三。再把这 \(9\) 个顶点全部连到第十个顶点,便造出一个具有指定度数序列、色数为四的图 \(G\)。 为说明 \(\chi(G)=3\) 可能,取三份顶点不相交的 \(K_{2,1}\),并把它们的全部 \(9\) 个顶点连到一个新的第十个顶点。 最后,若 \(\chi(G)=2\) 也可能,则会存在具有此度数序列的二部图。这是不可能的,因为度数为九的那个顶点必须与其余所有顶点相连。 图 6.15 表明 \(\binom{n-1}{2}+1\) 条边是可能的。另一方面,更多的边则不可能。事实上,假设 \(G\) 至少有 \(\binom{n-1}{2}+2\) 条边且有一个割点 \(x\)。那么 \(G-x\) 有 \(n-1\) 个顶点、至少 \(\binom{n-2}{2}+1\) 条边,且不连通。这是不可能的,正如补充习题 5 所要求证明的那样。 (a) 我们用颜色 \(1,2,\cdots,k+1\),并按如下贪心方式使用:逐个给 \(G\) 的顶点染色,每一步用能用的最小颜色,即不出现在当前顶点的邻居中的最小颜色。由于 \(G\) 的最大度数为 \(D\),任何一步被禁用的颜色都不超过 \(D\) 种,所以每个顶点总有至少一种颜色可用。 (b) 完全图 \(K_n\) 与奇圈 \(C_{2m+1}\) 具有这一性质。 (a) 我们断言:若 \(G\) 既不是完全图,也不是奇圈,则 \(\chi(G)\le k\),其中 \(k=D(G)\) 为最大度数。 为证此,注意若 \(G\) 有一个度数小于 \(k\) 的顶点 \(v\),则对顶点数作归纳即可:删去 \(v\) 得 \(G-v\),由归纳假设它可用至多 \(k\) 种颜色正常染色;由于 \(v\) 在 \(G\) 中邻居少于 \(k\) 个,总有一种颜色可给 \(v\)。这就给出 \(G\) 的不超过 \(k\) 色的正常染色。 剩下要处理 \(G\) 所有顶点度数都等于 \(k\) 的情形,即 \(G\) 为 \(k\)-正则。可设 \(k\ge 3\),否则命题或平凡成立,或 \(G=K_2\)、\(G=C_{2m+1}\)。 此时取 \(G\) 中距离为二的两个顶点 \(b,c\)。这样的两点必存在,否则 \(G\) 要么是完全图、要么非 \(k\)-正则。设 \(a\) 为 \(b,c\) 的公共邻居。由于 \(G\) 是 3-连通的,\(G-b-c\) 连通;既连通,它就有一个生成树(spanning tree)子图 \(T\)。把 \(T\) 的边都定向指向 \(a\)。现按如下方式用 \([k]\) 的颜色染 \(G\):先染 \(b\),再染 \(c\),然后以任意顺序染其余顶点,只要保证“若 \(x\) 到 \(a\)(沿 \(T\) 的有向边)的距离大于 \(y\) 到 \(a\) 的距离,则 \(x\) 先于 \(y\) 被染”。于是 \(a\) 最后被染。(原书图 6.16 给出一个 \(4\)-正则图的具体例子:先染 \(b,c\),再依次染各类顶点,最后染汇点 \(a\)。)每一步用能保持正常的最小颜色。则 \(b,c\) 都得颜色 \(1\)。除 \(a\) 外的其它顶点被染时,至多有 \(k-1\) 个已染邻居。最后 \(a\) 被染时虽有 \(k\) 个已染邻居,但其中两个 \(b,c\) 同色,故实际占用颜色不超过 \(k-1\) 种,仍有颜色可用。于是全部顶点都能只用 \([k]\) 染色。 (b) 现设 \(G\) 不是 3-连通。若 \(G\) 不是 2-连通,则有割点 \(w\) 使 \(G-w\) 不连通。设 \(A\) 为 \(G-w\) 的一个连通分支,\(B=G-w-A\)。由顶点数归纳,\(A\cup w\) 与 \(B\cup w\) 都有正常 \(k\)-染色。置换颜色使 \(w\) 在两者中同色,便拼成 \(G\) 的正常染色。 剩下 \(G\) 是 2-连通但非 3-连通的情形:存在两个顶点 \(x,y\) 使 \(G-x-y\) 不连通。于是有 \(G\) 的两个导出子图 \(G_1,G_2\),满足 \(G_1\cup G_2=G\) 且 \(G_1\cap G_2=\{x,y\}\)。注意 \(x,y\) 在每个 \(G_i\) 中都至少有一个邻居,否则 \(G\) 非 2-连通。考虑 \(G_1\cup(x,y)\) 与 \(G_2\cup(x,y)\)(若边 \((x,y)\) 不存在就补上)。由上一句可知这两个图中每个顶点度数都至多 \(k\),故它们都有正常 \(k\)-染色。两个染色中 \(x,y\) 因相邻而异色;置换颜色使 \(x\) 在两边同色、\(y\) 也在两边同色,即得 \(G\) 的正常染色。 总之,我们证明了:若 \(G\) 既非完全图也非奇圈,则 \(\chi(G)=k\),\(k\) 为 \(G\) 的最大度数。这是 Brooks 的著名定理 [21]。 设 \(A_i\) 为“技能 \(i\) 只在一个班次可用”的排班集合。则
\[ |A_i|=2\cdot 2^{n-10}=2^{n-9}, \]
其中 \(n\) 是公司的工人数。确实如此:把具有技能 \(i\) 的 \(10\) 名工人安排坏的方式有两种(全排第一班,或全排第二班),其余 \(n-10\) 名工人有 \(2^{n-10}\) 种排法。因此
\[ \Big|\bigcup_i A_i\Big|\le\sum_i|A_i|=500|A_i|=500\cdot 2^{n-9}<2^n, \]
因为 \(2^9=512\)。于是“至少有一项技能在两班次中没有都出现”的排班数,小于全部排班数 \(2^n\)。所以必然存在一个好的排班。 取由 \(F\) 中各边的补集构成的超图 \(F^c\),可见 \(F^c\) 中任意两条边都不互不相交。因此由定理 6.29 与 6.30,\(|F^c|=|F|\le 2^{n-1}\)。 若 \(n=2m+1\),令 \(F\) 由 \([n]\) 的所有至少含 \(m+1\) 个顶点的边组成。其中任意两条边都因太大而不能不相交。若 \(n=2m\),令 \(F\) 由 \([n]\) 的所有至少含 \(m+1\) 个顶点的边,以及所有含 \(m\) 个顶点且包含顶点 \(n\) 的子集组成。注意,两种情形下,我们都从定理 6.29 证明里造出的每一对中恰好取一个顶点(集合)。 不能。假设它能,设 \(X\) 为 \(F\) 中大小最小的边。不妨设 \(X=[k]\)。那么对每个 \(i\in[k]\),\(F\) 中必有一条边 \(Y_i\) 不含 \(i\)(否则 \(F\) 中所有边的交就含 \(i\))。然而这意味着
\[ X\cap Y_1\cap Y_2\cdots\cap Y_k=\varnothing, \]
与假设矛盾。注意此结论有一个几何对应物,称为 Helly 定理:若在 \(k+1\) 维欧氏空间中给定 \(n\ge k+1\) 个凸集,且其中任意 \(k+1\) 个都有公共点,则全部都有公共点。 把整数 \(n\) 染红,若它恰好被 \(7\) 与 \(17\) 之一整除;否则染蓝。我们证明该染色满足要求。 设我们的染色含有一个长度为 \(18\) 的单色等差数列 \(A\)。先设 \(A\) 的公差 \(d\) 被 \(17\) 整除。那么为使 \(A\) 单色,\(A\) 的项要么全被 \(7\) 整除、要么全不被 \(7\) 整除。前者不可能,因为那要求 \(d\) 至少是 \(7\cdot17=119\),从而 \(a_{18}=2142\)。同理 \(d\) 不能被 \(7\) 整除,这意味着 \(A\) 的前七项中恰有一项被 \(7\) 整除。这排除了“\(A\) 没有项被 \(7\) 整除”的可能,所以 \(d\) 不能被 \(17\) 整除。 因此,\(A\) 的前 \(17\) 项中恰有一项被 \(17\) 整除。若 \(d\) 被 \(7\) 整除,则证毕,因为 \(A\) 的项要么全被 \(7\) 整除要么全不,于是总存在两项模 \(17\) 不同余、却模 \(7\) 同余(颜色不同)。若 \(d\) 不被 \(7\) 整除,则数列中既有不被 \(7\) 也不被 \(17\) 整除的项,又有只被其中之一整除的项,与 \(A\) 单色的假设矛盾。 不妨设顶点 \(A\) 邻接至少三条红边。设这些边的另一端点为 \(B,C,D\)。若这三点中任意两点之间有一条红边,则该边的端点与 \(A\) 构成一个红三角形。否则 \(BCD\) 是一个蓝三角形。 我们对 \(k+l\) 作归纳。若 \(k+l=2\),即 \(k=l=1\),则 \(R(k,l)=2\),命题成立。假设命题对 \(k+l-1\) 成立,即 \(R(k,l-1)\) 与 \(R(k-1,l)\) 都存在,来证 \(k+l\) 的情形。 只需证明存在一个满足要求的整数,因为非空的正整数集中总有最小元。我们断言
\[ n=R(k,l-1)+R(k-1,l)-1 \]
就是这样的整数。设 \(v\) 为 \(K_n\) 的任一顶点,把 \(K_n\) 的每条边染红或蓝。那么 \(v\) 邻接的边中,要么有至少 \(R(k,l-1)\) 条蓝边,要么有至少 \(R(k-1,l)\) 条红边。前一种情形中,设 \(v\) 邻接的蓝边的另一端点构成完全图 \(X\)。则 \(X\) 有 \(R(k,l-1)\) 个顶点,于是它要么含红 \(K_k\)(证毕),要么含蓝 \(K_{l-1}\)(把 \(v\) 加进这份 \(K_{l-1}\) 即得蓝 \(K_l\),再次证毕)。第二种情形可类似处理。 不妨设顶点 \(A\) 邻接至少六条红边。看这些边的另一端点。若它们之间有任意一条红边,则证毕(得红三角形)。若没有,则它们构成一份 \(K_6\),其中每条边为蓝色或绿色。此时应用上一题的结论即可。 若编码 \(N\) 是前缀无关的(prefix-free,即没有码字是另一码字的前缀),则解码消息时不会出现这样的时刻:我们可以停下得到码字 \(A\),也可以继续下去得到码字 \(B\)——因为那意味着 \(A\) 是 \(B\) 的前缀。反过来,若 \(N\) 不是前缀无关的,\(F\) 是 \(G\) 的前缀,我们尝试从以 \(F\) 的各位开头的消息解码时,就无法立刻知道应当停下取 \(F\) 还是继续取 \(G\)。因此 \(N\) 不是即时的(instantaneous)。 矩阵的模式回避(pattern avoidance)思想及最早的结果来自 [35]。 (a) 由抽屉原理,若有 \(n+1\) 个元素等于 \(1\),则其中必有两个在同一行(或同一列,统称同一“线”)。因此 \(f(n,B)=n\)。 (b) 我们证一个更一般的命题。定义 \(f(n,m,B)\) 为:一个 \(n\times m\) 的 \(0\text{-}1\) 矩阵在回避 \(B\) 的前提下最多能含的 \(1\) 的个数。我们断言:若 \(B\) 是 \(2\times2\) 单位矩阵,则 \(f(n,m,B)=n+m-1\)。这么多 \(1\) 是可达的,例如把第一行和第一列全填 \(1\)。为证不能更多,对 \(n+m\) 作归纳。\(n+m=2\) 时命题成立。设命题对 \(n+m-1\) 成立,\(A\) 为回避 \(B\) 的 \(n\times m\) 矩阵,假设 \(A\) 有 \(n+m\) 个 \(1\)。若 \(A\) 有一行或一列至多含一个 \(1\),删去这条线,由归纳假设证毕。否则每行每列都至少含两个 \(1\)。由于 \(1\) 的总数为 \(n+m\),这意味着每行每列恰含两个 \(1\)。即 \(1\) 的总数 \(2n=n+m=2m\),迫使 \(n=m\)。这时 \(A\) 是两个不同置换矩阵之和。(请读者直接证明此事,或许可借助二部图;更一般的命题见引理 10.6。)这两个置换矩阵不可能都对应递减置换,故其中之一对应一个含“非逆序”(non-inversion)的置换。该矩阵就会含 \(B\)。 (a) 对 \(n\) 作归纳。由于 \(A_n\) 回避 \(B\),\(A_{n+1}\) 含 \(B\) 的唯一可能就是 \(A_{n+1}\) 中有一份 \(B\) 起始于左上象限而终止于另一象限。容易看出这是不可能的。 (b) 设 \(g(n)\) 为 \(A_n\) 中 \(1\) 的个数。则 \(g(0)=1\),且当 \(n\ge0\) 时 \(g(n+1)=2g(n)+2^{n-2}\)。解此递推得
\[ 2g(n)=2^n+n\,2^{n-2}. \]
由于 \(A_n\) 的大小为 \(2^n\times2^n\),令 \(m=2^n\),便有 \(f(m,B)=\Omega(m\log m)\)。 本题及随后两题的结果出自 Adam Marcus 与 Gábor Tardos 的论文 [56],并被用来证明一个二十五年之久的猜想。 我们断言答案是 \(f(\lceil n/k^2\rceil,B)\)。称 \(A\) 的一个块为零块,若其元素全为零。构造矩阵 \(A'\),把 \(A\) 的所有零块换成一个 \(0\)、所有非零块换成一个 \(1\)。若 \(A'\) 含 \(B\),则 \(A\) 也含 \(B\),结论随之成立。注意这里确实需要 \(B\) 是置换矩阵这一事实——因此它每行每列只有一个 \(1\)。 反设结论不成立。一个块能含有非零元素的行有 \(\binom{k^2}{k}\) 种 \(k\) 元行组,于是由抽屉原理,会存在某一组 \(k\) 行,它在 \(k\) 个不同的块中都含非零元素。然而这意味着 \(A'\) 有一个由非零块构成的 \(k\times k\) 子矩阵 \(M\)。因此 \(A\) 含有所有 \(k\times k\) 矩阵,包括 \(B\)。确实,\(M\) 本质上模拟了一个每个元素都为 \(1\) 的 \(k\times k\) 矩阵,而后者当然包含所有 \(k\times k\) 矩阵。类似地,在任一块列中,至多有 \((k-1)\binom{k^2}{k}\) 个宽块。 首先,若 \(n\) 不被 \(k^2\) 整除,就在 \(A\) 的最后几行与几列填 \(1\),使 \(A\) 中未被 \(1\) 填满的子矩阵 \(A_s\) 大小为 \(k^2\lfloor n/k^2\rfloor\times k^2\lfloor n/k^2\rfloor\)。这至多增加 \(2k^2n=O(n)\) 个 \(1\)。从此可设 \(n\) 被 \(k^2\) 整除,即 \(A_s=A\)。 前两题表明:若 \(A\) 回避 \(B\),\(B\) 是 \(k\times k\) 置换矩阵,则非零块至多 \(f(n/k^2)\) 个,且其中每块行至多 \((k-1)\binom{k^2}{k}\) 个高块,每块列至多 \((k-1)\binom{k^2}{k}\) 个宽块。若一个块既不高也不宽,则其 \(1\) 的个数至多 \((k-1)^2\),因为这种块的 \(1\) 至多落在 \(k-1\) 行、\(k-1\) 列中。我们现可汇总 \(A\) 中 \(1\) 的个数: 这导出递推式
\[ f(n,B)\le 2nk^3\binom{k^2}{k}+(k-1)^2 f(n/k^2,B), \]
由此用归纳法即可常规地证明我们的命题(\(f(n,B)=O(n)\))。 本结果最先由 Martin Klazar [49] 证明,后经 Vincent Vatter 与 Doron Zeilberger 略作简化(未正式发表)。我们给出的是后者的证明。 设 \(q\) 为长度 \(k\) 的模式,\(p\) 为回避 \(q\) 的 \(n\)-置换。则 \(p\) 的置换矩阵回避 \(q\) 的置换矩阵 \(B_q\)。令 \(M_n(q)\) 为回避 \(B_q\) 的 \(n\times n\) 的 \(0\text{-}1\) 矩阵个数。则 \(S_n(q)\le M_n(q)\)。下面给 \(M_n(q)\) 找上界。 由上一题结论,存在常数 \(b\) 使 \(f(n,B_q)\le bn\)。设 \(A\) 为回避 \(B_q\) 的 \(n\times n\) 矩阵,把 \(A\) 切成 \(2\times2\) 的块(若 \(n\) 为奇数,末端会有较小的块)。若一块不含 \(1\) 就换成 \(0\),含至少一个 \(1\) 就换成 \(1\)。这得到一个 \(\lceil n/2\rceil\times\lceil n/2\rceil\) 的矩阵,它同样回避 \(B_q\),故至多有 \(f(\lceil n/2\rceil,B_q)\le b\lceil n/2\rceil\) 个 \(1\)。而且这每个 \(1\) 都来自 \(A\) 的一个非零 \(2\times2\) 块,每块有 \(2^4-1=15\) 种可能。因此 \(M_n(q)\) 满足
\[ M_n(q)\le 15^{b\lceil n/2\rceil}\cdot M_{\lceil n/2\rceil}(q). \]
反复使用此论证直到右端变为 \(M_1(q)=2\),便得 \(M_n(q)\le 15^{2bn}\),从而 \(S_n(q)\le 15^{2bn}\)。 统计对 \((p,q')\),其中 \(p\) 是含模式 \(q\) 的 \(n\)-置换,\(q'\) 是 \(p\) 中 \(q\) 的一份拷贝。\(q'\) 的位置有 \(\binom{n}{k}\) 种选择,\(q'\) 的取值有 \(\binom{n}{k}\) 种选择,\(p\) 的其余部分有 \((n-k)!\) 种选择。所以这种对的数目是 \((n-k)!\cdot\binom{n}{k}^2\)。抽屉原理表明,其中至少 \(1/n!\) 属于同一个置换,即至少
\[ \frac{(n-k)!\cdot\frac{(n!)^2}{(k!(n-k)!)^2}}{n!}=\frac{\binom{n}{k}}{k!} \]
个对属于同一个置换。此外,存在回避 \(q\) 的置换,没有任何 \((p,q)\) 对属于它们。因此,存在某个 \(p\),它含 \(q\) 的出现次数严格大于 \(\dfrac{\binom{n}{k}}{k!}\)。 (a) 用顶点表示职位与候选人,把候选人与他能胜任的职位之间连边,得到一个二部图。若 \(aX\) 是图 \(G\) 的一条边,就在该边上写数 \(t_{aX}\),其中 \(t_{aX}\) 是候选人 \(a\) 愿意接受职位 \(X\) 的最低薪水。回忆第 5 章补充习题 34 定义的图的完美匹配(perfect matching)。经理的任务就是找出 \(G\) 的一个完美匹配,使边上所写数字之和(匹配的成本)最小。 (b) 不会,这种贪心策略不总能得到最好结果。图 6.17 是一个反例:贪心算法给出成本 \(13\) 的匹配,而存在成本 \(12\) 的匹配。 \(A\) 与 \(B\) 都是森林。因为 \(A\) 的边更多,它的连通分支更少。所以 \(A\) 必有一条边,其两端点落在 \(B\) 的不同连通分支中,于是这条边可以加进 \(B\) 而不在其中产生圈。 会,此时贪心算法是有效的。考虑县里所有城镇对,取以城镇为顶点的完全图,把每条道路的修建成本写到对应的边上。用第 5 章注记的术语,我们要在此图中找一棵最小成本生成树(minimum-cost spanning tree),即 \(n\) 个顶点上的一棵树,使其边上所写数字之和最小。 设 \(G_j\) 为贪心算法在 \(j\) 步后构建的图。定义即蕴含 \(G_j\) 是森林,而 \(G_{n-1}\) 是树。我们断言 \(K_n\) 的任何其它生成树都不会比 \(G\) 成本更小。事实上,假设 \(c(T) 然而这是矛盾的。事实上,这将意味着对所有 \(j\le i\) 都有 \(c(g_i)>c(t_j)\)。上一题表明:边 \(t_j\)(\(j\le i\))中至少有一条可以加进 \(G_{i-1}\) 而不产生圈。因此 \(g_i\) 不可能是贪心算法在第 \(i\) 步所选的边——因为那时存在一条更便宜的、可加入而不成圈的边 \(t_j\),贪心本应优先选它。这一矛盾说明 \(c(T) 返回 全书目录
习题 4
习题 5
习题 6
习题 7
习题 8
习题 9
习题 10(Brooks 定理)
习题 11
习题 12
习题 13
习题 14
习题 15
习题 16
习题 17
习题 18
习题 19
习题 20
习题 21
习题 22
习题 23
习题 24
习题 25
习题 26
习题 27
习题 28
习题 29