趣题:完全图K_n最少可以拆成多少个完全二分图?
2008-11-06 23:58
197 查看
![](http://www.matrix67.com/blogimage/200811061.gif)
一个完全图K_n是指一个有n个顶点的图,其中每两个点之间都有一条边相连。一个完全二分图是指这样一种图,图中的顶点分为两个点集L和R,L里的每个顶点都和R里的所有点相连。上图显示了一种把K_5划分为四个完全二分图的方法(分别用红蓝绿灰四种颜色来表示这四个子图)。你觉得,最少可以把完全图K_n划分成多少个完全二分图?给出一种划分方案,并证明这个数目已经不能再少了。
和你想象的一样,这个答案就是n-1。一个完全图K_n永远不可能被拆分为n-2个或更少的完全二分图。拆成n-1个是很好办的:从K_n中随便取出一个点作为L集,其余n-1个点作为R集,把这n-1条边从图中取出来形成一个完全二分图,然后继续递归地处理K_(n-1);当规模降到K_2时,我们已经得到了n-2个二分图,并且图中就只剩下一条边了,合起来正好是n-1个完全二分图。现在的关键是,如何证明n-1个已经是最少的了?
这个证明牛B就牛B在,它根本就不是用组合数学的方法证明的。它居然是用线性代数来证明的!这可以说是我见过的最诡异的证明了。假设我们把K_n划分为了m个完全二分图,第i个二分图的左右两个点集分别记作L_i和R_i。给图中的每个顶点设置一个变量,第i个顶点上的数就记作x_i。于是呢,有
![](http://www.matrix67.com/blogimage/200811062.gif)
现在,让我们假设m<n-1。考虑下面这个线性方程组:
![](http://www.matrix67.com/blogimage/200811063.gif)
这个线性方程组的式子个数比未知量少,因此它一定有一组非零解c_1, c_2, ..., c_n。既然每个L_i里面的变量和都为0了,根据前面的那个恒等式,我们得知
![](http://www.matrix67.com/blogimage/200811064.gif)
考虑所有c_i的和的平方,展开后有
![](http://www.matrix67.com/blogimage/200811065.gif)
但是,一方面,由线性方程组的第一个方程知c_i的总和为0,其平方当然也等于0;另一方面,c_i是非零解,它的平方和是大于0的。矛盾产生。
题目来源:Proofs from THE BOOK, Chapter 9
相关文章推荐
- 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔掉一个然后拿走一份,以此类推直到最后一头熊都是这样(最后一头熊扔掉后可以拿走0个,也算是n份均分)。问最初这堆苹果最少有多少个。
- 三个桶,分别为19升(空)、13升(满)、7升(满),请问最少多少步可以做到两个10升的??
- hdu 3434 给你含有n个数的序列,每次你可以选一个子序列将上面所有的数字加1或者减1,目标是把所有数字变成相同的,问最少步数,和那个相同的数字有多少种可能
- POJ 3267 The Cow Lexicon DP 字符串匹配 一主串n个子串最少在主串删除多少字母,可以匹配到n 个单词序列中的一些完整单词
- 最少用多少只小白鼠可以1个星期内找出1000瓶中的1瓶毒药
- 27个运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶
- 机试算法讲解: 第55题 完全背包之储蓄罐最少放了多少钱
- uva 11584 题目大意: 给一个字符串, 要求把它分割成若干个子串,使得每个子串都是回文串。问最少可以分割成多少个。
- 有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
- tyvj 1199 邮票问题 硬币种类M,数量无限,共取N张,最有多少种可能 完全背包恰好 最少
- HDU 2767--Proving Equivalences【scc缩点构图 && 求向图中最少增加多少条边才可以使新图强连通】
- n从1开始,每一个可以选择对n加1或者对n加倍,若想获得整数2013,最少需要多少个操作
- 一个数n的最少可以由多少个数的平方和组成
- 有N个人顺序排开参加比赛,每个人可以看到自己左右两边比自己得分少的人的分数,最少的人可以得1W的奖金,并且奖金以1w递增,赛委会让大家看到得分比自己少的人得的钱比自己少,编写程序求赛委会至少准备多少钱
- hdu 1232 畅通工程(求最少多少条边可以使所有点联通)
- n从1开始,每个操作可以选择对n加1或者对n加倍,想获取的2016,最少需要多少个操作。
- k个瓶子可以换1瓶酒,要喝n瓶酒,最少需要买多少瓶酒?
- poj 3177 Redundant Paths【求最少添加多少条边可以使图变成双连通图】【缩点后求入度为1的点个数】
- 每瓶汽水1元,两个空瓶可以置换一瓶汽水, 现在有20元,最多能喝多少瓶汽水。(编程实现)。
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?