1.1 棋盘的完美覆盖
棋盘覆盖问题的探究
给出一个 的棋盘,再给定 的方块,方块可以随意旋转,请你构造出一种覆盖方式。这非常简单。且对于 的情况,若 ,那么一定也至少存在一种构造方式。
构造方式如下:若 ,那么 或 。不妨设 。那么对于 行中的每一行,我们都可以横着放 块方块,因为 。于是我们就构造完毕了。
至于覆盖的方案数我们不在此深究。
那么反过来,若 ,那么我们也可以证明其没有构造方式。我们对棋盘进行黑白间隔染色,再对方块进行染色,上为黑,下为白。于是我们想要构造出一种方案,至少要让棋盘中黑色和白色的个数相同。而因为保证了 ,两种方格的个数天然差 ,也就不可能构造出来了。
对于书中说的挖掉 的左上角和右下角的问题,我们也可以考虑用上面染色的方式证明其没有构造方案。
注意:这种方法只能证明不能构造,而不能证明其存在构造方案。这是其只有必要性而没有充分性导致的。
- 方块覆盖问题
刚才的 方块被称为 - 方块。而如若我们把其改为 ,那么这样的方块就被称为 - 方块。下面我们要研究的就是 - 方块覆盖 棋盘的问题。
根据上面 - 方块覆盖问题的结论,我们进行大胆猜测:棋盘可以进行 - 覆盖当且仅当 或 。
当然因为数论因数余数关系复杂等诸多原因,这个结论可能不太好证明。于是我们考虑弱化结论,猜测若 为质数,那么结论成立。这是显然的,证明与上面的 - 方块的证明并无二异。
下面我们证明真正的结论。我们假设棋盘可以被完美覆盖,并根据猜测设 ,。其中 。我们不妨设 。
接下来我们要证明的问题转化为证明 。我们把棋盘进行 - 染色,并把其分成 (上方),(左下方)和 (右下方)三部分。
注意到只有上方和左下方的棋盘必定都可以被完美覆盖。那么我们只需要讨论 的部分即可。假设我们认为 。
一方面我们考虑颜色 出现了几次,注意到由于棋盘进行了 - 染色,故在 的小棋盘中,每行只会出现一个 ,出现了 个 ,另一方面每种颜色与 的地位等价,故总应占有 个方格。得到 ,得到 ,与 的定义域矛盾。所以 必定为 。
于是我们的结论就证明完毕了。
下面我们根据 - 方块的构造对结论进行更强的改写。在构造中,我们使用了全横 / 全竖的构造,我们称这种构造是平凡的。这基于我们知道 或 。而在上面的结论中我们也证明了 或 。所以我们依然可以这样构造。
于是我们得出结论:一个棋盘有构造的充要条件是其有平凡构造。也就是说,一个棋盘只要有构造,那么我们就可以把这个构造改成平凡的。
棋盘与断层线
设有一个 的棋盘,其有三条竖线和三条横线是有用的,因为沿着这些线的任意一条都可以把棋盘切割成两份。如果现在棋盘已经被一种完美覆盖了,且切割后两个小份也都被完美覆盖了,那么称这条线为这个完美覆盖的一条断层线。问是否存在一种覆盖,使得其没有断层线。
我们设 为三条横线所切割的方块数。要保证其没有断层线,就要保证 。很容易发现 都是偶数,于是 。同理设出 表示三条竖线所切割的方块数。那么 。
于是 ,于是矛盾,于是 棋盘的完美匹配都必然存在断层线。
这个例子本质上是一个完美匹配拼合问题,很具有启发性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】