腾讯笔试题2020 一个有意思的期望题

前言

  • 今年腾讯笔试出了一个很有意思的期望题,正好覆盖了大学里大部分重要的数学基础知识,非常有意思,作为基础知识的复习,我把这个题的详细解法以及相应的基础知识整理了进来~
  • 如果基础知识比较简短,我会插在正文中,如果一段基础知识很长,我就放在后面的附录中~
  • ps. 作为面试题还挺合适的,准备改编改编,成为我司的面试题2333,所以名字就不起的太清楚了,大家看到算赚到吧~
  • pps. 附录和一些细节晚点更新

题目

  • 一根长为 L L L的木棍, 给定常数 0 < d ≤ L 0 \lt d \leq L 0<dL
  • 重复以下动作: 随机砍木棍,将木棍分成左右两部分, 舍弃左边, 把右边部分作为新的木棍; 直到长度小于 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)=xxp(x),或者连续情况下 E ( x ) = ∫ x ∈ 定 义 域 x p ( x ) d x E(x) = \int_{x \in 定义域} xp(x) dx E(x)=xxp(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)=nN+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) xU(a,b),也就是说 x x x的概率密度函数 p ( x ) = 1 b − a p(x) = \frac{1}{b - a} p(x)=ba1
  • 有了上述知识,我们就设第 i i i次切分后,还剩下棒子长 x i x_i xi
  • 举个简单例子,就是第一次切分还剩 x 1 x_1 x1长,这个 x 1 ∼ U ( 0 , L ) x_1 \sim U(0, L) x1U(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)=xp(x),连续分布的话就是 P ( x ) = ∫ x ∈ 所 选 范 围 p ( x ) d x P(x) = \int_{x\in所选范围} p(x) dx P(x)=xp(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(x2x1)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(x2x1)p(x1)=x1L1
  • 我们进一步把这个形式推广到 n n n次切分,根据题意,我们知道这个联合概率满足马尔科夫原则,也就是说第 k k k次划分只和第 k − 1 k-1 k1次划分有关,也就是说,我们有如下形式:
    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(x2x1)p(x3x2)...p(xnxn1)=p(x1)i=1n1p(xi+1xi)=L1i=1n1xi1
  • 我们先看 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)=0ddLx1L1dx1dx2=L10dlogdLdx2=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)=0dxn11dxndxn2xn21dxn1...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)=0dxn11dxndxn2xn21dxn1...dLL1dx1=L10ddxndxn2xn11dxn1...dx1x21dx2dLx11dx1
  • 假设 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} dx1x21dx2dLx11dx1=dLx11logdx1dx1
  • 这里我们顺便复习一下积分的基础知识,先是简单的积分换元,令 t = x 1 d t = \frac{x_1}{d} t=dx1,则有 x 1 = t ⋅ d x_1 = t \cdot d x1=td
    ∫ 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=1dLtd1logtdtdxdt.
  • 由于 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 1dLtd1logtdtdxdt=1dLtd1log(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=log2tt1logtdt=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 21dLx11log2dx1dx1
  • 这里需要用到一个小的性质
  • (知识点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(n1)!logn1dL

求解期望

  • 根据上面的结果期望为:
    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)=LdnN+n(n1)!logn1dL
  • 求解这个无穷级数,主要是要利用 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=0n!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=1n(n1)!logn1dL=Ldn=0(n+1)n!logndL=Ldn=0(n+1)n!xn=Ldn=0n!xn+Ldn=0nn!xn=Ldex+Ldn=1x(n1)!xn1=Ldex+Ldxn=0n!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^- xd(左极限)是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)=0dLdy+d+LL1(f(y)+1)dy=Ld+L1(F(L)F(d)+Ld)=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=1logd
  • 所以最后有:
    f ( L ) = 1 + log ⁡ L d f(L) = 1+\log\frac{L}{d} f(L)=1+logdL
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值