棋盘覆盖和Hall's marriage theorem
来源:互联网 发布:看异性洗澡知乎 编辑:程序博客网 时间:2024/05/13 09:33
今天整理了一下自己电脑里存了一年的所有PDF,然后发现好像有很多很多很多都没有看,所以今天一整天就翻这些PDF去了。
发现了这么一本杂志不知道什么时候下下来的叫做《Recreational Mathematics》,花了半天时间才找到我是在这里下的,然后看了一篇《The Mutilated Chess Board》,就顺手写下来吧(文中的图均出自这篇文章)。
1.棋盘的多米诺骨牌问题
这个问题很常见了,也就是说
对于一个
m∗n 的国际象棋棋盘,如果用1∗2 的多米诺骨牌覆盖,是否能互不重叠完全覆盖。
那么显然如果
如果我把这个棋盘移掉了两个相对的棋盘角呢?也就是这样:
其实这个问题如果注意到,一个
那么我们继续拓展这个问题
如果我们在完整的棋盘上随机移走一个白格和一个黑格,那么这个棋盘是否还能被完整覆盖呢?(当然前提是这个棋盘还是连通的)
显然是可以的,在《啊哈,灵机一动》中有这么一个解法,就是
解决了这个问题之后,很自然我们会继续发问:
是不是对于一个棋盘,我挖去任意多的相等数量的白格和黑格,那么只要这个棋盘连通,它就可以被骨牌完全覆盖呢?
有一个叫Hall’s marriage theorem可以解决这个问题,当我如果同时挖去三个白格和三个黑格时,我们就可以构造一种情况使得棋盘就有可能不会被完全覆盖。
先来说说”Hall’s marriage theorem”是个什么东西吧。
通俗的说,就是大厅里有一群(
举个简单的例子,有四个汉子{A,B,C,D},四个妹子{1,2,3,4},假设他们的口味是这个样子的:
A => {1, 2, 3}
B => {4}
C => {3, 4}
D => {3}
1 => {A, B, C}
2 => {B, C, D}
3 => {B, C}
4 => {C}
那么我们发现,如果我们抓了三个汉子{B, C, D},发现他们三个人总共也就喜欢两个妹子{3, 4},所以可以说明这
但是如果我们不看这四个汉子,只管这四个妹子的口味(也就是说汉子匹配到的妹子可能是他不喜欢的),那么是存在完全匹配的,因为我变抓一部分妹子出来,都可以发现他们喜欢的汉子个数都不比他们人少,所以,是可以完美匹配的(例如:1 -> A 2 -> D 3 -> B 4 -> C)
那么回过头来看刚才那个骨牌覆盖的问题,我们就可以很轻易的构造出不满足的情况:
根据’Hall’s marriage theorem’, 我们可以把白格想象成妹子,黑格想想成汉子,那么不能完美覆盖的情况就是这个棋盘我随便抓几个黑格出来,发现他们周围的白格数比黑格数还少。
我们可以先画两个黑格(因为只有一个黑格时肯定不可能的),然后为了要连通,所以只能在两个黑格之间填一个白格,也就是这样:
我们想让这两个黑格总共只有一个相邻的白格,所以我没有办法再加一个白格满足这个条件,因此,我们还需要一个黑格,然后再加上两个白格平衡,也就是这样:
这样左下方的两个黑格他们的周围总共只有1个白格,说明这个棋盘是没有办法被完全覆盖的。当然这个棋盘我们可以把它看成是
文中还提到了Hall’s marriage theorem的一个有趣的应用:
我们可以拿一副牌,去掉大小王总共52张,然后把这副牌随机分成
等等,还没完。
我们把这
当然,无论怎么洗牌怎么分牌,这都是成立的哦,可以用Hall’s marriage theorem来证明(提示:不可能有{A, …, K}的某个子集,他们所在的总堆数小于他们的个数)。
- 棋盘覆盖和Hall's marriage theorem
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- ads1230使用时出现的问题
- 资料集合C# .net android
- 菜鸟的Linux学习笔记之命令logout
- tomcat相关知识总结
- codeforces 510D Fox And Jumping
- 棋盘覆盖和Hall's marriage theorem
- 最大二分匹配——匈牙利算法详解
- ubuntu12.04 (32/64 bits) 安装配置 arm-linux-gcc-4.5.1 交叉编译工具链
- SQLite语法详解
- xFreezing
- android 通过eclipse混淆代码 打包 + proguard 总结
- 内核编译图文教程,硬盘篇
- Java匿名内部类
- linux awk命令详解