前言
- 今年腾讯笔试出了一个很有意思的期望题,正好覆盖了大学里大部分重要的数学基础知识,非常有意思,作为基础知识的复习,我把这个题的详细解法以及相应的基础知识整理了进来~
- 如果基础知识比较简短,我会插在正文中,如果一段基础知识很长,我就放在后面的附录中~
- ps. 作为面试题还挺合适的,准备改编改编,成为我司的面试题2333,所以名字就不起的太清楚了,大家看到算赚到吧~
- pps. 附录和一些细节晚点更新
题目
- 一根长为 L L L的木棍, 给定常数 0 < d ≤ L 0 \lt d \leq L 0<d≤L
- 重复以下动作: 随机砍木棍,将木棍分成左右两部分, 舍弃左边, 把右边部分作为新的木棍; 直到长度小于 d d d
- 求砍的次数的期望;
确定期望的求解方式
- 一般来说,面试中的求期望题,无非是两种方案,一种是按照期望的定义进行求解,另一种是通过期望的递推求解(也就是期望dp,其理论基础是全期望公式);后者过去我见到的大多是解决离散问题,连续问题的话递推会形成积分方程,此题我沿着这个思路尝试了一下,发现其实也是可解的,甚至更简单,这会放在下下个section介绍。
解法1. 按期望定义求解
- 第一步就是定义随机变量
- 记随机变量 n n n为,满足条件时,砍的次数, p ( n ) p(n) p(n)就是 n n n次恰好完成任务的概率,n的取值范围很明显就是全体正整数
- (知识点1,期望定义)期望公式: E ( x ) = ∑ x ∈ 定 义 域 x p ( x ) E(x) = \sum_{x \in 定义域} xp(x) E(x)=∑x∈定义域xp(x),或者连续情况下 E ( x ) = ∫ x ∈ 定 义 域 x p ( x ) d x E(x) = \int_{x \in 定义域} xp(x) dx E(x)=∫x∈定义域xp(x)dx,注意下的是离散情况下 p ( x ) p(x) p(x)是PMF(probability mass function,概率质量函数),连续的情况下则是PDF(probability density function,概率密度函数)。
- 好了,这样我们就知道了我们要求的期望是如何定义的了,即:
E ( n ) = ∑ n ∈ N + n p ( n ) E(n) = \sum_{n \in N_+} np(n) E(n)=n∈N+∑np(n) - 很明显这是个无穷级数,它好不好求,我们得先看看 p ( n ) p(n) p(n)
求解 p ( n ) p(n) p(n)
- 这个 p ( n ) p(n) p(n)直接求解是有一定困难的,我们要借助一下题干中告诉我们的其他分布知识了
- 我们知道每次切分是随机的,翻译过来就是切分点的选择满足均匀分布
- (知识点2,均匀分布)随机变量 x x x服从均匀分布记作 x ∼ U ( a , b ) x \sim U(a, b) x∼U(a,b),也就是说 x x x的概率密度函数 p ( x ) = 1 b − a p(x) = \frac{1}{b - a} p(x)=b−a1
- 有了上述知识,我们就设第 i i i次切分后,还剩下棒子长 x i x_i xi
- 举个简单例子,就是第一次切分还剩 x 1 x_1 x1长,这个 x 1 ∼ U ( 0 , L ) x_1 \sim U(0, L) x1∼U(0,L),所以 p ( x 1 ) = 1 L p(x_1) = \frac{1}{L} p(x1)=L1。
- (知识点3,累积概率分布CMF):累计概率表示的是随机变量落在一定范围内的概率,离散分布的话就是 P ( x ) = ∑ x ∈ 所 选 范 围 p ( x ) P(x) = \sum_{x\in所选范围} p(x) P(x)=∑x∈所选范围p(x),连续分布的话就是 P ( x ) = ∫ x ∈ 所 选 范 围 p ( x ) d x P(x) = \int_{x\in所选范围} p(x) dx P(x)=∫x∈所选范围p(x)dx
- 所以对应的第一次就成功的概率就是
p ( n = 1 ) = P ( x 1 < d ) = ∫ 0 d 1 L d x = d L p(n = 1) = P(x_1 < d) = \int_{0}^d \frac{1}{L} dx = \frac{d}{L} p(n=1)=P(x1<d)=∫0dL1dx=Ld - 第一次的相对简单,第二次成功的概率就要稍微复杂一点了,我们需要考虑多次切分的联合概率: p ( x 1 , x 2 , . . . ) p(x_1, x_2, ...) p(x1,x2,...)
- 我们先以两次的为例,后面的自然就能推导出来。
- 直接推导有些难度,我们根据贝叶斯公式展开一下就比较简单了,因为
p
(
x
2
∣
x
1
)
∼
U
(
0
,
x
1
)
p(x_2 | x_1) \sim U(0, x_1)
p(x2∣x1)∼U(0,x1),所以有
p ( x 1 , x 2 ) = p ( x 2 ∣ x 1 ) p ( x 1 ) = 1 x 1 L p(x_1, x_2) = p(x_2 | x_1)p(x_1)\\ = \frac{1}{x_1L} p(x1,x2)=p(x2∣x1)p(x1)=x1L1 - 我们进一步把这个形式推广到
n
n
n次切分,根据题意,我们知道这个联合概率满足马尔科夫原则,也就是说第
k
k
k次划分只和第
k
−
1
k-1
k−1次划分有关,也就是说,我们有如下形式:
p ( x 1 , x 2 , x 3 , . . . , x n ) = p ( x 1 ) p ( x 2 ∣ x 1 ) p ( x 3 ∣ x 2 ) . . . p ( x n ∣ x n − 1 ) = p ( x 1 ) ∏ i = 1 n − 1 p ( x i + 1 ∣ x i ) = 1 L ∏ i = 1 n − 1 1 x i \begin{aligned} p(x_1, x_2, x_3, ..., x_n) &= p(x_1)p(x_2 | x_1) p(x_3 | x_2)...p(x_n|x_{n-1})\\ &= p(x_1) \prod_{i=1}^{n-1} p(x_{i+1} | x_i)\\ &= \frac{1}{L} \prod_{i=1}^{n-1} \frac{1}{x_i} \end{aligned} p(x1,x2,x3,...,xn)=p(x1)p(x2∣x1)p(x3∣x2)...p(xn∣xn−1)=p(x1)i=1∏n−1p(xi+1∣xi)=L1i=1∏n−1xi1 - 我们先看
p
(
n
=
2
)
p(n=2)
p(n=2)的求法,我们要求的是
P
(
x
1
>
d
,
x
2
<
d
)
P(x_1 > d, x_2 < d)
P(x1>d,x2<d),具体求解为:
p ( n = 2 ) = P ( x 1 > d , x 2 < d ) = ∫ 0 d ∫ d L 1 x 1 L d x 1 d x 2 = 1 L ∫ 0 d log L d d x 2 = d L log L d \begin{aligned} p(n=2) &= P(x_1 > d, x_2 < d)\\ &= \int_0^d\int_d^L \frac{1}{x_1L} d x_1 d x_2 \\ &= \frac{1}{L} \int_0^d \log \frac{L}{d} d x_2 \\ &= \frac{d}{L} \log \frac{L}{d} \end{aligned} p(n=2)=P(x1>d,x2<d)=∫0d∫dLx1L1dx1dx2=L1∫0dlogdLdx2=LdlogdL - 接下来就是一个小难点了,我们要把切分n次的联合概率带进来了,以便求出所有的
p
(
n
)
p(n)
p(n)
p ( n ) = P ( d < x 1 < L , d < x 2 < x 1 , d < x 3 < x 2 , . . . . , 0 < x n < d ) = ∫ 0 d 1 x n − 1 d x n ∫ d x n − 2 1 x n − 2 d x n − 1 . . . ∫ d L 1 L d x 1 \begin{aligned} p(n) &= P(d < x_1 < L, d < x_2 < x_1, d < x_3 < x_2, ...., 0 < x_n < d) \\ &= \int_0^d \frac{1}{x_{n-1}} dx_{n}\int_d^{x_{n-2}} \frac{1}{x_{n-2}} dx_{n-1} ... \int_d^L \frac{1}{L} dx_{1} \end{aligned} p(n)=P(d<x1<L,d<x2<x1,d<x3<x2,....,0<xn<d)=∫0dxn−11dxn∫dxn−2xn−21dxn−1...∫dLL1dx1 - 看到这里先别害怕一步一步展开就能发现规律了,首先我们换换函数的顺序,把对应的变量和对应的积分部分联系起来
p ( n ) = ∫ 0 d 1 x n − 1 d x n ∫ d x n − 2 1 x n − 2 d x n − 1 . . . ∫ d L 1 L d x 1 = 1 L ∫ 0 d d x n ∫ d x n − 2 1 x n − 1 d x n − 1 . . . ∫ d x 1 1 x 2 d x 2 ∫ d L 1 x 1 d x 1 \begin{aligned} p(n) &= \int_0^d \frac{1}{x_{n-1}} dx_{n}\int_d^{x_{n-2}} \frac{1}{x_{n-2}} dx_{n-1} ... \int_d^L \frac{1}{L} dx_{1}\\ &= \frac{1}{L} \int_0^d dx_{n}\int_d^{x_{n-2}} \frac{1}{x_{n-1}} dx_{n-1} ... \int_d^{x_1} \frac{1}{x_2}dx_2 \int_d^L \frac{1}{x_1} dx_1\\ \end{aligned} p(n)=∫0dxn−11dxn∫dxn−2xn−21dxn−1...∫dLL1dx1=L1∫0ddxn∫dxn−2xn−11dxn−1...∫dx1x21dx2∫dLx11dx1 - 假设
n
=
3
n=3
n=3,我们先看最后两项(其实和前面
p
(
n
=
2
)
p(n=2)
p(n=2)是类似的)
∫ d x 1 1 x 2 d x 2 ∫ d L 1 x 1 d x 1 = ∫ d L 1 x 1 log x 1 d d x 1 \begin{aligned} \int_d^{x_1} \frac{1}{x_2}dx_2 \int_d^L \frac{1}{x_1} dx_1 &= \int_d^L \frac{1}{x_1} \log \frac{x_1}{d} d x_1 \\ \end{aligned} ∫dx1x21dx2∫dLx11dx1=∫dLx11logdx1dx1 - 这里我们顺便复习一下积分的基础知识,先是简单的积分换元,令
t
=
x
1
d
t = \frac{x_1}{d}
t=dx1,则有
x
1
=
t
⋅
d
x_1 = t \cdot d
x1=t⋅d
∫ d L 1 x 1 log x 1 d d x 1 = ∫ 1 L d 1 t ⋅ d log t d x d t d t . \int_d^L \frac{1}{x_1} \log \frac{x_1}{d} d x_1 = \int_1^{\frac{L}{d}} \frac{1}{t \cdot d} \log t \frac{dx}{dt} dt. ∫dLx11logdx1dx1=∫1dLt⋅d1logtdtdxdt. - 由于
d
x
d
t
=
d
\frac{dx}{dt} = d
dtdx=d,所以有:
∫ 1 L d 1 t ⋅ d log t d x d t d t = ∫ 1 L d 1 t ⋅ d log ( t ) d d t = ∫ 1 L d log t t d t \int_1^{\frac{L}{d}} \frac{1}{t \cdot d} \log t \frac{dx}{dt} dt = \int_1^{\frac{L}{d}} \frac{1}{t \cdot d} \log (t) d \; dt = \int_1^{\frac{L}{d}} \frac{\log t}{t} dt ∫1dLt⋅d1logtdtdxdt=∫1dLt⋅d1log(t)ddt=∫1dLtlogtdt - 这是个经典的积分,通过分步积分可以求解,我把推导写在这里,分步积分的介绍以及证明会放在后面的附录中。
∫ log t 1 t d t = log 2 t − ∫ 1 t log t d t = > ∫ log t 1 t d t = log 2 t 2 \begin{aligned} \int \log t \frac{1}{t} dt &= \log^2 t - \int \frac{1}{t} \log t dt\\ => \int \log t \frac{1}{t} dt &= \frac{\log^2 t }{2} \\ \end{aligned} ∫logtt1dt=>∫logtt1dt=log2t−∫t1logtdt=2log2t - 这样上面的结果就是:
∫ 1 L d log t t d t = log 2 L d 2 \int_1^{\frac{L}{d}} \frac{\log t}{t} dt = \frac{\log^2 \frac{L}{d}}{2} ∫1dLtlogtdt=2log2dL - 所以
p
(
n
=
3
)
p(n=3)
p(n=3)的结果如下:
p ( n = 3 ) = d L log 2 L d 2 p(n=3) = \frac{d}{L} \frac{\log^2 \frac{L}{d}}{2} p(n=3)=Ld2log2dL - 类似的,当计算
p
(
n
=
4
)
p(n=4)
p(n=4)的时候,最后会需要求积分:
1 2 ∫ d L 1 x 1 log 2 x 1 d d x 1 \frac{1}{2} \int_d^L \frac{1}{x_1} \log^2 \frac{x_1}{d} dx_1 21∫dLx11log2dx1dx1 - 这里需要用到一个小的性质
- (知识点4) ∫ log n x d x = log n + 1 x n + 1 \int \frac{\log^n}{x} dx = \frac{\log^{n+1}x}{n+1} ∫xlogndx=n+1logn+1x,证明和上述推导类似,也会放在附录中。
- 最后结合这一结论,我们很容易得到
p
(
n
)
p(n)
p(n)的结果
p ( n ) = d L log n − 1 L d ( n − 1 ) ! p(n) = \frac{d}{L} \frac{\log^{n-1} \frac{L}{d}}{(n-1)!} p(n)=Ld(n−1)!logn−1dL
求解期望
- 根据上面的结果期望为:
E ( n ) = d L ∑ n ∈ N + n ⋅ log n − 1 L d ( n − 1 ) ! E(n) = \frac{d}{L} \sum_{n \in N_+} n \cdot \frac{\log^{n-1} \frac{L}{d}}{(n-1)!} E(n)=Ldn∈N+∑n⋅(n−1)!logn−1dL - 求解这个无穷级数,主要是要利用 e x e^x ex在原点处的泰勒展开式
- (知识点5)
e
x
e^x
ex在原点处的泰勒展开式:
e x = ∑ n = 0 ∞ x n n ! + R n ( x ) e^x = \sum_{n=0}^\infty \frac{x^n}{n!} + Rn(x) ex=n=0∑∞n!xn+Rn(x) - 我们换个元,令
x
=
log
L
d
x = \log \frac{L}{d}
x=logdL,就会发现形式基本上是一样的,最后得到结论:
E ( n ) = 1 + log L d E(n) = 1 + \log \frac{L}{d} E(n)=1+logdL - 附上证明:
E ( n ) = d L ∑ n = 1 ∞ n ⋅ log n − 1 L d ( n − 1 ) ! = d L ∑ n = 0 ∞ ( n + 1 ) log n L d n ! = d L ∑ n = 0 ∞ ( n + 1 ) x n n ! = d L ∑ n = 0 ∞ x n n ! + d L ∑ n = 0 ∞ n ⋅ x n n ! = d L e x + d L ∑ n = 1 ∞ x ⋅ x n − 1 ( n − 1 ) ! = d L e x + d L x ∑ n = 0 ∞ x n n ! = d L e x + d L x e x = d L e x ( 1 + x ) = d L e log L d ( 1 + log L d ) = 1 + log L d \begin{aligned} E(n) &= \frac{d}{L} \sum_{n = 1}^\infty n \cdot \frac{\log^{n-1} \frac{L}{d}}{(n-1)!} \\ & = \frac{d}{L} \sum_{n=0}^\infty (n + 1) \frac{\log^{n} \frac{L}{d}}{n!} \\ & = \frac{d}{L} \sum_{n=0}^\infty (n + 1) \frac{x^n}{n!}\\ &= \frac{d}{L} \sum_{n=0}^\infty \frac{x^n}{n!} + \frac{d}{L} \sum_{n=0}^\infty n \cdot \frac{x^n}{n!} \\ &= \frac{d}{L} e^x + \frac{d}{L} \sum_{n=1}^\infty x \cdot \frac{x^{n-1}}{(n-1) !}\\ &= \frac{d}{L} e^x + \frac{d}{L} x \sum_{n=0}^\infty \frac{x^{n}}{n!} \\ &= \frac{d}{L} e^x + \frac{d}{L} x e^x \\ &= \frac{d}{L} e^x (1 + x) \\ &= \frac{d}{L} e^{\log \frac{L}{d}} (1 + \log \frac{L}{d}) \\ &= 1 + \log \frac{L}{d} \end{aligned} E(n)=Ldn=1∑∞n⋅(n−1)!logn−1dL=Ldn=0∑∞(n+1)n!logndL=Ldn=0∑∞(n+1)n!xn=Ldn=0∑∞n!xn+Ldn=0∑∞n⋅n!xn=Ldex+Ldn=1∑∞x⋅(n−1)!xn−1=Ldex+Ldxn=0∑∞n!xn=Ldex+Ldxex=Ldex(1+x)=LdelogdL(1+logdL)=1+logdL
解法2. 按期望递推求解
- 我们首先定义状态,状态是棒子的长度,因此可以定义 f ( x ) f(x) f(x)表示在棒子还剩长度为 x x x的前提下的要满足条件的期望切分次数
- 递推公式也不难定义,下一次等概率的在
(
0
,
x
)
(0, x)
(0,x)范围内选择切分位置,如果还剩下
y
y
y长,则还剩下的期望次数是
f
(
y
)
+
1
f(y) + 1
f(y)+1:
f ( x ) = ∫ 0 x 1 x ( f ( y ) + 1 ) d y f(x) = \int_0^x \frac{1}{x} (f(y) + 1)dy f(x)=∫0xx1(f(y)+1)dy - 因为我们要求的是
f
(
L
)
f(L)
f(L),我们就直接带进来,结果为:
f ( L ) = ∫ 0 L 1 L ( f ( y ) + 1 ) d y f(L) = \int_0^L \frac{1}{L} (f(y) + 1)dy f(L)=∫0LL1(f(y)+1)dy - 根据题意,我们简单分析下 f ( x ) f(x) f(x), x < d x<d x<d的时候,明显 f ( x ) = 0 f(x) = 0 f(x)=0,而 x > d x>d x>d的时候,很明显 f ( x ) f(x) f(x)至少为1,因为至少会切一次,因此 x = d x=d x=d的位置 f ( x ) f(x) f(x)就是不连续的了(因为 x → d − x \rightarrow d^- x→d−(左极限)是0,而右极限是1)。
- 因此上式我们可以拆分下积分范围,把为0的部分单拿出来,注意下界我们取在
d
d
d的右极限:
f ( L ) = ∫ 0 d − d y L + ∫ d + L 1 L ( f ( y ) + 1 ) d y = d L + 1 L ( F ( L ) − F ( d ) + L − d ) = > L f ( L ) = F ( L ) − F ( d ) + L \begin{aligned} f(L) &= \int_0^{d^-} \frac{dy}{L} + \int_{d^+}^L \frac{1}{L} (f(y) + 1)dy\\ &= \frac{d}{L} + \frac{1}{L} (F(L) - F(d) + L - d)\\ => Lf(L) &= F(L) - F(d) + L \end{aligned} f(L)=>Lf(L)=∫0d−Ldy+∫d+LL1(f(y)+1)dy=Ld+L1(F(L)−F(d)+L−d)=F(L)−F(d)+L - 其中
F
(
⋅
)
F(\cdot)
F(⋅)是
f
(
⋅
)
f(\cdot)
f(⋅)的原函数。我们两边一起对L求导,就有
L f ′ ( L ) + f ( L ) = f ( L ) + 1 = > f ′ ( L ) = 1 L Lf'(L) + f(L) = f(L) + 1\\ => f'(L) = \frac{1}{L} Lf′(L)+f(L)=f(L)+1=>f′(L)=L1 - 求个不定积分就有
f ( L ) = log L + C f(L) = \log L + C f(L)=logL+C - 根据初始条件
f
(
d
+
)
=
1
f(d^+) = 1
f(d+)=1,我们有:
f ( d + ) = log d + C = 1 = > C = 1 − log d f(d^+) = \log d + C = 1\\ => C = 1 - \log d f(d+)=logd+C=1=>C=1−logd - 所以最后有:
f ( L ) = 1 + log L d f(L) = 1+\log\frac{L}{d} f(L)=1+logdL