重复关系
熊是否食用当前鲑鱼的最佳决定仅取决于三件事:当前鲑鱼重量、迄今为止捕获的最大鲑鱼重量以及剩余的鲑鱼数量。因此,这个问题非常适合于动态规划。我们将编写一个递归来解决一般情况,然后专门针对两小时或三小时范围的情况。
将$w_k(x,t)$定义为从现在开始食用的所有鲑鱼的预期重量,假设剩下$k$条鲑鱼,到目前为止食用的最重的鲑鱼重$t$kg,而当前的鲑鱼重量$x$kg。如果$x\le t$,熊不能吃鲑鱼,因为它太轻了。如果$x>t$,熊必须决定是否吃鲑鱼。因此,我们对预期未来重量进行了如下递归:
\[
w{k+1}(x,t)=\开始{case}
\mathbb公司{电子}_\xi w_k(\xi,t)&\text{if}x\le t\\
\最大\left\{\mathbb{电子}_\xi w_k(\xi,t),\mathbb{电子}_\xi\左(x+w_k(xi,x)\右)\right\}&\text{if}x>t
\结束{cases}
\]
在$x>t$的情况下,熊会做出最大化预期鲑鱼总重量的决定。第一种和第二种选择分别对应于让鲑鱼离开或吃鲑鱼。现在,让我们定义预期的未来鲑鱼重量$f_k(t)=\mathbb{E} _x(x)wk(x,t)$,它是当前所有可能鲑鱼重量的平均值。展开递归,
\开始{align}
f_{k+1}(t)&=\mathbb{E} _x(x)w{k+1}(x,t)\\
&=\int_0^1 w_{k+1}(x,t)\,dx\\
&=\int_0^t f_k(t)\,dx+\int_t^1\max\left\{f_k\\
&=t f_k(t)+\int_t^1\max\left\{f_k\\
&=f_k(t)+\int_t^1\max\left\{0,\,x+f_k
\结束{对齐}
微不足道的基本情况是$f_0(t)=0$,因为没有更多的鲑鱼,未来的重量必然为零。通过这种递归,我们现在可以解决问题语句中要求的情况,即$f_2(0)$和$f_3(0)$。
贪婪的灰熊案例
让我们从一个简单的例子开始,灰熊总是只要有可能就吃掉每一条鲑鱼。然后递归简化为:
\开始{align}
f_{k+1}(t)&=t f_k(t)+\int_t^1\左(x+f_k,x)\右)\,dx\\
&=t f _k(t)+\tfrac{1}{2}(1-t^2)+int_t^1fk(x)\,dx
\结束{对齐}
对$t$求导并简化,我们得到:
\[
f{k+1}'(t)=t fk'(t
\]
替换$f_{0}'(t)=0$并迭代,我们观察到:
\[
f_{1}'(t)=-t,\qquad f_{2}'(t)=-t-t^2,\qquad f_3}'(d)=-t^2-t^3,\qqquad\ldots
\]
模式很清楚,$f_{k}'(t)=-t-t^2-\dots-t^k$。现在从$1$到$t$进行积分,利用$f_k(1)=0$的事实(如果我们已经有1公斤重的鲑鱼,就不能再吃了),得到
\[
f_k(t)=\压裂{1-t^2}{2}+\压裂{1-t^3}{3}+\点+\压裂}1-t^{k+1}}{k+1}
\]
所以当灰熊贪婪时,我们有:$f_{k}^{prime\prime}(t)=-1-2t-3t^2-\dots-kt^{k-1}\le0$。因此$f_k(t)$是凹面的功能。我们稍后会利用这个事实……从空腹和贪婪的灰熊开始,鲑鱼的预期食用重量由公式给出
\[
f_k(0)=\frac{1}{2}+\frac{1}{3}+\dots+\frac{1}{k+1}
\]
这是一个谐波和,其增长类似于$\log(k)$。因此,给定无限的时间,挑剔(和贪婪)的灰熊可以吃无限量的鲑鱼。
什么时候贪婪最好?
事实证明,灰熊的最佳策略是在剩下1、2或3条鲑鱼时贪婪。但如果有4条或更多的鲑鱼,最优策略就会改变。要了解原因,请回忆一下我们的重复关系:
\[
f_{k+1}(t)=f_k(t)+\int_t^1\max\left\{0,\,x+f_k
\]
如果$x+f_k(x)-f_k(t)\ge 0$代表所有$0\le-t\lex\le1$,那么我们应该总是贪婪地追求$(k+1)^\text{st}$鲑鱼。在这里,我们将利用前面导出的事实,即当灰熊贪婪时,$f_k$是凹的。这意味着$x+f_k(x)-f_k(t)$在$x$中也是凹的,可以通过检查端点$x=t$和$x=1$来验证非负性。$x=t$总是这样,而$x=1$则相当于$1-f_k(t)\ge0$,因为$f.k(1)=0$(如果我们已经有了1公斤重的鲑鱼,就不能再吃了)。
让我们按顺序检查每个$k$,看看$1-f_k(t)\ge 0$是否有效…
对于1条鲑鱼:回忆一下$f_0(t)=0$。因此:
\[
1-f_0(t)=1 \ge 0
\]
因此灰熊贪婪,只剩下一条鲑鱼,因此前面推导的公式成立:$f_1(t)=\frac{1-t^2}{2}$。预期鲑鱼重量为$f_1(0)=\tfrac{1}{2}$。这并不奇怪;这是一条三文鱼的预期重量!
对于2条鲑鱼:替换$f_1(t)=\frac{1-t^2}{2}$并找到:
\[
1-f_1(t)=\tfrac{1}{2}+\tfrac{t^2}{2}\ge 0
\]
因此,灰熊贪婪地留下2条三文鱼,$f2(t)=\frac{1-t^2}{2}+\frac}1-t^3}{3}$。预期鲑鱼重量为$f_2(0)=\tfrac{5}{6}$。
对于3条鲑鱼:替换$f_2(t)=\frac{1-t^2}{2}+\frac{1-t^3}{3}$并找到:
\[
1-f2(t)=\tfrac{1}{6}+\tfrac}{t^2}{2}+\tbrac{t^3}{3}\ge 0
\]
因此,灰熊很贪婪,剩下3条鲑鱼,$f_3(t)=\frac{1-t^2}{2}+\frac}1-t^3}{3}+\tfrac{1-t^4}{4}$。预期鲑鱼重量为$f_3(0)=\tfrac{13}{12}$。
对于4条鲑鱼:替换$f_3(t)=\frac{1-t^2}{2}+\frac}1-t^3}{3}+\tfrac{1-t^4}{4}$并找到:
\[
1-f3(t)=-\tfrac{1}{12}+\tfrac}t^2}{2}+\tfrac{t^3}{3}+\trac{t^4}{4}\ngeq 0
\]
啊哈!对于所有$t$,此函数不再为非负(取$t$接近零)。因此,在这种情况下,如果吃的最重的鲑鱼重$t$kg,而当前的鲑鱼重达$x$kg,那么如果$x+f_3(x)-f_3(t)\ge为0$,熊应该吃当前的鲑鱼,否则不要吃鲑鱼。决策边界如下所示:
绿色区域表示熊应该何时吃掉当前的鱼,假设还有四条鱼,包括这条鱼。图片中底部的红色三角形是被禁止的,因为鱼的重量不够。由于鱼太重,即$x+f_3(x)-f_3(t)<0$,所以禁止在顶部的小红色区域。
一般情况
由于四条鲑鱼的策略不再贪婪,我们必须返回到原始递归,以便为$k\ge 4$找到$f_k$。再也不可能找到解析解,所以我们求助于数值近似。在这样做的时候,我发现了熊的最佳决策规则,它是鲑鱼存留量的函数。以下是单个图中的结果:
和以前一样,我们总是拒绝虚线以下的鱼。每条实线对应不同数量的剩余鱼的决策边界。在线的上方,让鱼走。在线下,吃鱼。最上面的蓝色曲线(剩余$k=4$fish)与前面绘制的曲线相同。正如人们所料,前面的鱼越多,我们首先必须越挑剔,才能使最终重量最大化。
现在你可能会想……贪婪策略到底有多糟糕?如果我们将鲑鱼的预期总重量绘制为鲑鱼剩余量的函数,我们可以得到一个清晰的图像:
请注意,贪婪解只是我们前面推导的调和和。正如预期的那样,当$k=1,2,3$时,最优策略和贪婪策略完全一致。当$k=4$时,它们非常接近,但不完全相同。当$k\ge 5$时,我们开始看到明显的差异。随着$k$变大,曲线之间的距离越来越远。以下是同一图的缩小版:
贪婪曲线的增长类似于$\log(k)$,而最佳曲线的增长则类似于$\sqrt{k}$,这确实要快得多!