【组合数学】幻方、拉丁方、涂色问题
引言 组合数学研究的主要问题:
幻方问题 幻方的定义
文章图片
幻方:一个 n
阶幻方是由整数 1,2,3…,n^2
按下述方式 组成的 n×n
方阵:该方阵每行上的整数的和、每列上的整数的和以及两条对角线中每条对角线上的整数的和都等于同一个数
幻和 S:每一行(或列或对角线)数字的和
\[1+2+3+...+n^2=\frac{n^2\left( n^2+1 \right)}{2} \\ n\cdot S=\frac{n^2\left( n^2+1 \right)}{2} \\ S=\frac{n\left( n^2+1 \right)}{2} \]
幻方的存在性问题
幻方的构造性问题 奇数阶幻方的构造:连续摆放法:
举例:构造五阶幻方1
放在 (n+1)/2
列第 1
行的方格中;
1
,列号加1
)依次 把从小到大的各个数字放入相应的方格中;
0
(第 1
行上面一行),则改成第 n
行相应列对应的方格;
n+1
(第 n
列右面一列),则改成第 1
列相应行对应的方格;
0
行第 n+1
列对应的方格,则退到前一个方格正下方的方格.
文章图片
偶数阶幻方的构造:n=4k 对称法:
举例:构造四阶幻方n×n
的方阵分成上、下、左、右四个 2k×2k
的方 阵;
2k×2k
方阵,每行每列任意取一半(k
个) 的方格做标记,涂成阴影;
n×n
的 方阵的每一行和每一列都有一半(n/2
)的方格被涂成阴影;
1
开始依次填入方格中,第一遍:从第 1
行第 1
列的方格开始往右,不是阴影则填数字,是阴影的方格不填数字,但相应的数字加 1
. 第 1
行填完后填第 2
行依次到第 n
行第 n
列的方格;
n
行第 n
列的方格开始依次往左,规则同前,从 1
开始的数字依次填入,第 n
行结束之后 是第 n-1
行第 n
列的方格,直到第 1
行第 1
列的方格
文章图片
单偶数阶幻方 n=4k+2:
举例:构造六阶幻方n×n
的方阵分成上、下、左、右四个 (2k+1)×(2k+1)
的方阵,编为左上A
、右下B
、右上C
、 左下D
;
1~(2k+1)^2
放在 A
中做成第一个幻方;
(2k+1)^2+1~2(2k+1)^2
放在 B
中成第二个幻方;
2(2k+1)^2+1~3(2k+1)^2
放在 C
中成第三个幻方;
3(2k+1)^2+1~4(2k+1)^2
放在 D
中成第四个幻方;
A
的各行从第 1
列开始向右取 m
个(m=(n-2)/4
)方格, 但中间一行(k+1
行)从第 2
列开始;把这些方格中的数字与 D
中相应位置的数字对换;
C
中各行最后一列右起向左各取 m-1
个方格,把这些方格中的数字与 B
中相应位置的数字对换
文章图片
m = (n-2)/4 = (6-2)/4 = 1
文章图片
拉丁方问题 拉丁方的定义 n 阶拉丁方:由数字 1,2,…,n
构成的 n×n
的方阵,使得在每 1
行、 每 1
列中每个数字都恰好出现一次.
拉丁方的存在性问题
2
阶拉丁方存在
文章图片
拉丁方的构造性问题 n阶拉丁方的构造方法:
文章图片
正交拉丁方 三十六军官问题:有 36
名军官来自 6
个不同的军团,共有 6
种不同的军衔,他们能否排成一个 6*6
的方阵,使得每行每列恰有各种军衔, 并且每行和每列上的不同军衔的 6
名军 官还分别来自不同的军团?
解:从 n
个军团里选 n
个不同的军衔,能 否排成一个 n*n
的方阵,使得每行每列恰有各种军衔,并且每行和每列上的不同军衔的 n
名军官还分别来自不同的军团?
把问题规模缩小到三阶可以得到:
文章图片
正交拉丁方的定义:
\[\text{设}A=\left( a_{ij} \right) _{n\times n}\text{,}B=\left( b_{ij} \right) _{n\times n}\text{是两个}n\times n\text{拉丁方,令}C=\left[ \left( a_{ij},b_{ij} \right) \right] _{n\times n}\text{,若}C\text{的}n^2\text{对数组互不相同,则称}A\text{与}B\text{正交} \\ \]
涂色问题 实际应用中,很多计数问题都可抽象成涂色问题2
阶正交拉丁方36
军官问题即不存在 6
阶正交拉丁方
例:对正三角形的三个顶点涂以红、蓝(r
和b
)两种颜色,求有多少种不同的涂色方案?
解:
rrr
;
bbb
;
3
种 brr
,rbr
,rrb
;
3
种rbb
,brb
,bbr
推荐阅读
- 一篇文章告诉你如何用事件委托实现JavaScript留言板功能
- tshark 抓包 rabbitmq 协议包
- 【有奖调研】来,聊聊TTS音色定制这件事儿
- 【计算机网络】介质访问控制
- 实现JavaScript语言解释器(一)
- Vue|Vue 源码解读(11)—— render helper
- 生活的碎碎念|【妇女节特辑】闪耀的工程师女性们
- 历史上的今天|【历史上的今天】12 月 11 日(Chorme 问世;计算机先驱诞生日)
- 【历史上的今天】3 月 8 日(游戏机之父诞辰;搜索技术之父出生;MIT 公开演示旋风计算机)
- 应用身份服务IDaaS重磅升级