谜题有助于培养直觉——弄清楚如何在网格中导航帮助我理解了组合和排列。
假设你在一个4×6的网格上,想从左下角走到右上角。有多少条不同的路径?避免回溯——你只能向右或向上移动。

花几秒钟思考一下如何计算。
洞察:将图片转换为文字
考虑可能的路径时(用手指描画),你可能会低声说“上,右,上,右……”。
为什么不把这些想法写下来呢?使用“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个右移进行转换?

嗯,第一个要转换的“右移”有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)种方式重新排列我们选中的上移,因此最终得到:
![]()
我们只是挑选要转换的项目(10!/6!),然后除去重复(4!)。
方法2:直接使用组合公式
解释到这里时,你可能已经意识到我们是在重新构建组合公式:
![]()
当你知道顺序不重要时,这就是捷径。然而,有时我不确定一开始需要的是排列还是组合。虽然直接说“用C(10,4)”可能准确,但作为教学工具并不可取。有时自己重新推导一下会更有帮助。
方法3:不同起始
另一种方法:不让每个r和u可互换,而是给“右移”标号为r1到r6,“上移”标号为u1到u4。有多少种方式重新排列这10个项目?

这个问题很简单: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)的情况:
![]()
真巧妙!看到同一组乘法和除法以不同方式重新组合,很酷。
为什么这很有用?
一个目标是学习如何转化问题。还记得那幅老妇与少女的画吗?

你两者都看到了吗?你能在它们之间切换吗?是不是很酷?
网格路径谜题的乐趣之一,就是看看如何用视觉或文字隐喻来看待一个问题。你学到的数学越多,可用的模型就越多,你可以将问题相互转化。
这不一定要“实用”——仅仅用纸上的字母列出路径就很有趣。
在数学术语中,可以相互转化的问题称为“同构”。数学上它们可能相同——但从人的视角看,其中一个可能比另一个更容易(就像先看到老妇还是少女)。
对于网格谜题,我们在各个部分使用了更适合的视角:
- 可视化网格 理解一般问题并看到一条路径。
- 将路径写成文本 看到所有路径的通用格式及一种简单的枚举方法。
这就是关键的教训: 用一个模型理解概念,用另一个模型处理细节,这完全没问题。 当我们认为只有一种方法可以解决数学问题时,数学就变得困难了。
变体与扩展
既然我们已经建立了思维模型,接下来让我们解决一些更难的问题。
想象你的“网格”实际上是三维的。虽然画起来更难,但文本表示仍然有效。假设我们有一个立方体(x、y 和 z 维度),每条边长 5 个单位。从一个角到对角有多少条路径?
嗯。在这种情况下,我可能会尝试第二种方法,即列出所有可能性。假设我们给每一步都标上不同的标签:每种类型有 5 个唯一标记的步骤(x1-x5, y1-y5, z1-z5)。我们可以将它们排列成 15! 种方式(数量巨大:1.3 万亿)。但是,我们需要记得除以每个维度中的冗余。
在每个方向上,有 5! 种方式重新排列 5 个相同的移动,我们将它们除去:
![]()
哇,一个小立方体上的路径数量竟然如此巨大!今天早些时候你可能还搞不定这个问题——我知道我自己也搞不定。但从网格例子入手,将其转换为文本,我们已经增强了模型以处理三维。四维、五维或十维的路径应该不成问题。
重新定义问题
有趣的部分来了:与其改变我们看待解决方案的方式,为什么不改变 问题? “在网格上找路径”还能代表什么?
陷阱平台:假设你正在制作一组 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% 的概率到达那个点!
这里有一个计算器,可以尝试一些变化:
继续向上
谜题是学习新思维模型的有趣方式,也能加深你对熟悉模型的理解。虽然我可能“知道”组合与排列,但直到我在实际问题中识别出它们,我才真正感到自在。想法若只是像博物馆中的文物一样待在脑海中,就不会有任何益处——它们需要被拿出来玩味。数学快乐。