- 数学杂谈:不经过x轴下方的随机行走问题
- [1. 问题描述](#1. 问题描述)
- [2. 问题解答](#2. 问题解答)
- [3. 问题扩展](#3. 问题扩展)
1. 问题描述
首先,我们给出这个问题的具体描述如下:
已知一个机器人初始点在原点位置,在每个单位时间内,机器人可以随机地向上或者向下行走一个单位距离。
问经过 2 n 2n 2n个单位时间后,机器人可以回到原点,且从未走到过 x x x轴下方的行走方式一共有多少种。
这个问题是从同学那边拿来的一个很有意思的题目,尤其是这个题目的解答思路,简直巧妙的不行,所以在这里记录一下做个小分享。
2. 问题解答
这道题的思路的话非常的巧妙,主要的话就是一个转化的思路。
显然,如果不考虑不能经过 x x x轴下方的限制条件,那么经过 2 n 2n 2n个单位时间之后能够回到原点的走法总数为 C 2 n n C_{2n}^{n} C2nn种。
剩下的,我们只需要求出至少经过了一次 x x x轴下方,且最终回到原点的走法总数,两者相减即可得到题目中要求的走法数目了。
这里,巧妙的地方就来了,简直妙不可言!
显然,如果经过了 x x x轴的想法,那么必有至少一次经过了点 ( x , − 1 ) (x, -1) (x,−1),那么,我们在它第一次经过点 ( x , − 1 ) (x, -1) (x,−1)的时候将之前的走法按照轴 y = − 1 y=-1 y=−1取对称,后续走法不变,那么,对应的路线就变成了一个起点为 ( 0 , − 2 ) (0, -2) (0,−2),终点为 ( 2 n , 0 ) (2n, 0) (2n,0)的路线。且不难分析,对于任意一条从 ( 0 , − 2 ) (0, -2) (0,−2)到 ( 2 n , 0 ) (2n, 0) (2n,0)的路线,我们都可以通过相同的变换使之变成一个从 ( 0 , 0 ) (0, 0) (0,0)到 ( 2 n , 0 ) (2n, 0) (2n,0)的路线。
因此,两者刚好是相同的,故至少经过一次 x x x轴下方的总的走法数目就恰好为 C 2 n n − 1 C_{2n}^{n-1} C2nn−1种。
而两者相减,我们即可得到从未走到过 x x x轴下方,且最终回到原点的走法总数为:
N = C 2 n n − C 2 n n − 1 N = C_{2n}^{n} - C_{2n}^{n-1} N=C2nn−C2nn−1
3. 问题扩展
进一步的,我们可以将问题进行进一步的拓展,考虑不经过 x x x轴下方,但是也不需要回到原点的随机行走的路线数目。
关于这部分的内容,我们倒是没有推导出一个完整的通项公式来,不过简单的迭代关系倒是不难写出来。
我们假设走了 n n n步之后满足条件的走法总数为 a n a_n an,则显然有 a 1 = 1 a_1 = 1 a1=1。
下面,我们考察一下递推关系。
我们不妨设 b n b_{n} bn为走了 n n n步之后不经过 x x x轴下方且刚好回到原点的走法种数,那么根据第二小节的内容,显然有:
{ b 2 n = C 2 n n − C 2 n n − 1 b 2 n + 1 = 0 \left\{ \begin{aligned} & b_{2n} = C_{2n}^{n} - C_{2n}^{n-1} \\ & b_{2n+1} = 0 \end{aligned} \right. {b2n=C2nn−C2nn−1b2n+1=0
而进一步的,对于 a n a_n an,不难写出递推关系如下:
{ a 2 n = 2 a 2 n − 1 a 2 n + 1 = 2 a 2 n − b 2 n \left\{ \begin{aligned} & a_{2n} = 2 a_{2n-1}\\ & a_{2n+1} = 2 a_{2n} - b_{2n} \end{aligned} \right. {a2n=2a2n−1a2n+1=2a2n−b2n
不过可惜就是通项关系没求出来,不过如果要写个递推算法任意推导某一项 a n a_n an倒是也不复杂,但是这里就不展开了,实在是比较简单的编程问题......