使用组合(Combination)与排列(Permutation)在网格中导航

谜题有助于培养直觉——弄清楚如何在网格中导航帮助我理解了组合和排列。

假设你在一个4×6的网格上,想从左下角走到右上角。有多少条不同的路径?避免回溯——你只能向右或向上移动。

number of paths in grid

花几秒钟思考一下如何计算。

洞察:将图片转换为文字

考虑可能的路径时(用手指描画),你可能会低声说“上,右,上,右……”。

为什么不把这些想法写下来呢?使用“u”和“r”,我们可以写出一条路径:

r r r r r r r u u u u

即,一直向右(6个r),然后一直向上(4个u)。图中的路径如下:

r r r r u u u u r r

使用文本解释,问题变成“有多少种方式可以重新排列字母 rrrrrruuuu?"

啊,无处不在的 组合/排列问题 ——从没想过它会有用吧?

理解组合(Combinations)和排列(Permutations)

有多种方式看待组合和排列问题。一旦第一个解释被理解了,我们可以回过头来用不同的方式看待。当试图 建立数学直觉 对于一个难题,我会想象几个围绕核心思想的思维模型。从一个洞察出发,然后逐步展开到其他方面。

方法1:相同起始

与其说有6个右移和4个上移,不如想象我们一开始有10个右移(r r r r r r r r r r).

显然这样不行:我们需要将其中4个右移改为上移。有多少种方式可以选择4个右移进行转换?

convert grid paths to letters

嗯,第一个要转换的“右移”有10种选择(见 组合文章)。第二个有9种,第三个有8种,最后一个右移转上移有7种选择。所以总共有10 * 9 * 8 * 7 = 10!/6! = 5040种可能性。

但是,等等!我们需要去除重复:毕竟,按顺序转换移动#1 #2 #3 #4与转换#4 #3 #2 #1是相同的。我们有4!(4 * 3 * 2 * 1 = 24)种方式重新排列我们选中的上移,因此最终得到:

\displaystyle{\frac{(10!/6!)}{4!} =  \frac{5040}{24} = 210 }

我们只是挑选要转换的项目(10!/6!),然后除去重复(4!)。

方法2:直接使用组合公式

解释到这里时,你可能已经意识到我们是在重新构建组合公式:

\displaystyle{C(10,4) = 210}

当你知道顺序不重要时,这就是捷径。然而,有时我不确定一开始需要的是排列还是组合。虽然直接说“用C(10,4)”可能准确,但作为教学工具并不可取。有时自己重新推导一下会更有帮助。

方法3:不同起始

另一种方法:不让每个r和u可互换,而是给“右移”标号为r1到r6,“上移”标号为u1到u4。有多少种方式重新排列这10个项目?

remove duplicate orderings

这个问题很简单:10! = 3,628,800(哇,好大的数字)。第一步有10种选择,第二步有9种,依此类推,直到第9步有2种选择,最后一步只有1种选择。酷。

当然,我们知道“r1 r2 u1 u2”和“r2 r1 u2 u1”是同一条路径。我们可以在各自的子组内打乱r和u的顺序,路径保持不变。

  • 有多少种方式可以打乱全部10个?10! = 3,628,800
  • 有多少种方式可以打乱6个r?6! = 720
  • 有多少种方式可以打乱4个u?4! = 24

所以,我们从总可能性(10! = 3,628,800)开始,然后除以打乱r(6! = 720)和打乱u(4! = 24)的情况:

\displaystyle{10! / 6! / 4! = 10! / (6! \cdot 4!) = 210}

真巧妙!看到同一组乘法和除法以不同方式重新组合,很酷。

为什么这很有用?

一个目标是学习如何转化问题。还记得那幅老妇与少女的画吗?

illusion

你两者都看到了吗?你能在它们之间切换吗?是不是很酷?

网格路径谜题的乐趣之一,就是看看如何用视觉或文字隐喻来看待一个问题。你学到的数学越多,可用的模型就越多,你可以将问题相互转化。

这不一定要“实用”——仅仅用纸上的字母列出路径就很有趣。

在数学术语中,可以相互转化的问题称为“同构”。数学上它们可能相同——但从人的视角看,其中一个可能比另一个更容易(就像先看到老妇还是少女)。

对于网格谜题,我们在各个部分使用了更适合的视角:

  • 可视化网格 理解一般问题并看到一条路径。
  • 将路径写成文本 看到所有路径的通用格式及一种简单的枚举方法。

这就是关键的教训: 用一个模型理解概念,用另一个模型处理细节,这完全没问题。 当我们认为只有一种方法可以解决数学问题时,数学就变得困难了。

变体与扩展

既然我们已经建立了思维模型,接下来让我们解决一些更难的问题。

想象你的“网格”实际上是三维的。虽然画起来更难,但文本表示仍然有效。假设我们有一个立方体(x、y 和 z 维度),每条边长 5 个单位。从一个角到对角有多少条路径?

嗯。在这种情况下,我可能会尝试第二种方法,即列出所有可能性。假设我们给每一步都标上不同的标签:每种类型有 5 个唯一标记的步骤(x1-x5, y1-y5, z1-z5)。我们可以将它们排列成 15! 种方式(数量巨大:1.3 万亿)。但是,我们需要记得除以每个维度中的冗余。

在每个方向上,有 5! 种方式重新排列 5 个相同的移动,我们将它们除去:

\displaystyle{15! / 5! / 5! / 5! = 15!/(5!\cdot 5!\cdot 5!) = 756,756}

哇,一个小立方体上的路径数量竟然如此巨大!今天早些时候你可能还搞不定这个问题——我知道我自己也搞不定。但从网格例子入手,将其转换为文本,我们已经增强了模型以处理三维。四维、五维或十维的路径应该不成问题。

重新定义问题

有趣的部分来了:与其改变我们看待解决方案的方式,为什么不改变 问题? “在网格上找路径”还能代表什么?

  • 陷阱平台:假设你正在制作一组 4 × 6 的活板门,只有 1 条真正的路径通过(其他的会让你掉进火山)。某人随机走过去的概率有多大?对于 4×6 网格,是 210 种路径,和之前一样。对于 12×12 网格,是 24!/12!12! = 270 万条路径,只有 1 条正确的。

  • 运算顺序:假设你有 10 组练习要做:4 组相同的腿部练习,6 组相同的手臂练习。你可以选择多少种不同的训练顺序?这和导航路径相同,只不过坐标轴标签是“腿部”和“手臂”,而不是“右”和“上”。

  • 随机游走:假设我们知道一个物体随机向上或向右移动。经过 10 步后,它到达我们期望的终点的概率是多少?嗯,有 2^10 = 1024 种方式向上或向右移动(选择“u”或“r”共 10 次),有 210 种方式恰好到达我们的目标位置。因此,你可以期望有 210 / 1024 = 20.5% 的概率到达那个点!

这里有一个计算器,可以尝试一些变化:

继续向上

谜题是学习新思维模型的有趣方式,也能加深你对熟悉模型的理解。虽然我可能“知道”组合与排列,但直到我在实际问题中识别出它们,我才真正感到自在。想法若只是像博物馆中的文物一样待在脑海中,就不会有任何益处——它们需要被拿出来玩味。数学快乐。

本系列其他文章

  1. 轻松理解排列与组合
  2. 使用组合(Combination)与排列(Permutation)在网格中导航
  3. 如何通过乘法理解组合(Combination)
  4. 我们为什么要乘以组合(Combination)?

主题参考

加入 45 万月度读者

喜欢这篇文章?还有更多内容能帮你建立持久、直观的数学理解。加入通讯以获取额外内容和最新更新。