前几天 弦中子 老师 在 反相吧 发了一个 帖 《快递员问题可否这样思考?》 https://tieba.baidu.com/p/6763029470 。
1 楼 提出了一个 “快递员问题” :
有一个快递员从家里出发,要经过n个点后回到家里,请问他走的最短路程是哪一条?
我 在 10 楼 这样回复 :
“
弦老师 的 这种 情况, 光 绝对 摸不着 头脑 该走 哪一个路径 是 “最近” 的 ,
那个 光, 估计 会 站在 那里 一直想 , 一直想 …… 于是 光速 为 0 了 。
假设 有 n 个 节点, 求 这些 节点 的 排列数量 = n ! , 每一个 排列 组成一条 路径, 计算 每一条 路径 的 长度, 排个序, 就知道 最短 的 路径 是 哪条 了 。
”
这里 引出 了 一个 排列组合 的 问题 。 排列 和 组合 都是 组合, 排列区分元素顺序, 组合不区分元素顺序, 比如 AB 和 BA 是 不同 的 排列, 是 同一个 组合 。
假设 有 ABCD 4 个 字母, 从中 拿出 2 个 字母 来 排列, 有多少种 排列 ? 排列考虑元素顺序, 不同的顺序算不同的排列 。
会有 4^2 = 4 * 4 = 16 种 排列 。 具体是
AA, AB, AC, AD
BA, BB, BC, BD
CA, CB, CC, CD
DA, DB, DC, DD
如果 是 从 ABCD 中 拿出 3 个 字母 来 排列, 则 会有 4^3 = 4 * 4 * 4 = 64 种 排列 。
这种 排列 允许 同一个 字母 在 一个 排列 中 重复使用, 比如 AA, BB, AAA, BBB, AAB, BBD 。
如果 不允许 同一个 字母 在 一个 排列 里 重复使用, 那么 从 ABCD 中 拿出 2 个 字母 来 排列, 有多少种 排列 ?
有 4 * 3 = 12 种 排列 。 具体是
AB, AC, AD
BA, BC, BD
CA, CB, CD
DA, DB, DC
不允许 同一个 字母 在 一个 排列 里 重复使用, 从 ABCD 中 拿 3 个 字母 来 排列, 有 4 * 3 * 2 = 24 种 排列,
ABC ABD, ACB, ACD, ADB, ADC
BAC, BAD, BCA, BCD, BDA, BDC
CAB, CAD, CBA, CBD, CDA, CDB
DAB, DAC, DBA, DBC, DCA, DCB
不允许 同一个 字母 在 一个 排列 里 重复使用, 从 ABCD 中 拿 4 个 字母 来 排列, 有 4 * 3 * 2 * 1 = 4 ! 种 排列, 这跟 上面 拿 3 个 字母 来 排列 是 一样 的,
ABCD ABDC, ACBD, ACDB, ADBC, ADCB
BACD, BADC, BCAD, BCDA, BDAC, BDCA
CABD, CADB, CBAD, CBDA, CDAB, CDBA
DABC, DACB, DBAC, DBCA, DCAB, DCBA
如果 把 ABCD 看作 4 个 点, 这 4 ! 种 排列 就是 把 4 个 点 连起来 可能 得到 的 路径, 就是 本文开头 的 快递问题 里 的 n 个点 可以 有 多少种 路径 。
再来看看 组合 。 ABCD 4 个 字母 拿 2 个 字母 出来 组合, 有多少种 组合 ?
有 4 - ( 2 - 1 ) + 3 - ( 2 - 1 ) + 2 - ( 2 - 1 ) = 3 + 2 + 1 = 6 种 组合 。
具体是 AB, AC, AD, BC, BD, CD 。
ABCD 中 拿 3 个 字母 出来 组合, 有多少种 组合 ?
有 4 - ( 3 - 1) + 3 - ( 3 - 1 ) + 3 - ( 3 - 1 ) = 2 + 1 + 1 = 4 种
具体是 ABC ABD BCD ACD 。
ABCDE 5 个 字母 拿 2 个 字母 出来 组合, 有多少种 组合 ?
有 5 - ( 2 - 1 ) + 4 - ( 2 - 1 ) + 3 - ( 2 - 1 ) + 2 - ( 2 - 1 )= 4 + 3 + 2 + 1 = 10 种
具体是 AB AC AD AD AE BC BD BE CD DE 。
ABCDE 5 个 字母 拿 3 个 字母 出来 组合, 有多少种 组合 ?
有 5 - ( 3 - 1 ) + 4 - ( 3 - 1 ) + 3 - ( 3 - 1 ) + 4 - ( 3 - 1 ) + 3 - ( 3 - 1 ) + 3 - ( 3 - 1 ) = 3 + 2 + 1 + 2 + 1 + 1 = 10 种
具体是 ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE 。
ABCDE 5 个 字母 拿 4 个 字母 出来 组合, 有多少种 组合 ?
有 5 - ( 4 - 1 ) + 4 - ( 4 - 1 ) + 4 - ( 4 - 1 ) = 2 + 1 + 1 = 4 种
具体是 ABCD ABCE ACDE BCDE 。
排列组合 问题 如果 让 条件 丰富一些, 解起来也会很麻烦的, 甚至有点变态 。 比如 让 组合 里 同一个字母 可以重复出现 。
比如 ABCDE 5 个 字母 里 拿 4 个 字母 出来 组合, 允许同一个 字母 在 一个组合 里 重复出现的话, 就会有 AABC ABBD BACA CCCE DDDD 这样 的,
当然, 因为 组合 不区分 元素顺序, AABC 和 BACA 是 同一个 组合 。
研究 排列组合 还有 把 一些 节点 连起来 形成 一些 路径 等等, 这一类 的 数学 称为 组合数学, 组合数学 研究 离散场景, 所以 也叫 离散数学 。
组合数学 这个 名字 总让人 想起 一些 标有数字 的 小球 排列 堆叠 成 一些 图形, 还有 把 一些 点 连成 路径 什么的, 所以 很自然的, 会 把 研究 这些 问题 的 数学 叫做 组合数学 。
我以前说过 “组合数学 是 人的本能, 根本不用学习” , 其实 也 差不多, 我觉得吧, 组合数学 是 最业余 的 数学, 微积分 是 最专业 的 数学, 代数几何 是 最有范 的 数学 。
数学, 分成 代数 、几何 、微积分 、组合数学 这样 几大类 就可以了, 哪有 那么多 啰里啰唆 。
组合数学 是 一个 有趣 的 数学, 可以 比较 娱乐性 的 来 学习 研究, 而且 也 挺有 实用性 的 。