Algorithm 随机提前终止博弈中项目的最优排序

Algorithm 随机提前终止博弈中项目的最优排序,algorithm,optimization,Algorithm,Optimization,我有n个项目。每个项目都有一个值v_i和一个延续概率p_i。我要玩一个游戏,我选择一个项目,得到它的价值,并继续玩它相应的概率。如果我继续,我可以提取任何剩余的项目,将其值添加到我的总和中,并且再次受到其继续概率的影响。如果幸运的话,我可以一直玩到没有东西剩下为止。我想选择一个订单来最大化我的期望值 有没有有效的算法来解决这个问题?你的观察结果是正确的!您应该按v_i/(1-p_i)排序,并按该顺序列出项目 要了解这一点的原因,让我们从两项案例开始。假设您有两个项目(v1,p1)和(v2,p2)

我有n个项目。每个项目都有一个值v_i和一个延续概率p_i。我要玩一个游戏,我选择一个项目,得到它的价值,并继续玩它相应的概率。如果我继续,我可以提取任何剩余的项目,将其值添加到我的总和中,并且再次受到其继续概率的影响。如果幸运的话,我可以一直玩到没有东西剩下为止。我想选择一个订单来最大化我的期望值


有没有有效的算法来解决这个问题?

你的观察结果是正确的!您应该按v_i/(1-p_i)排序,并按该顺序列出项目

要了解这一点的原因,让我们从两项案例开始。假设您有两个项目(v1,p1)和(v2,p2)。我们的目标是定义某种排序关系≥ 使得(v1,p1)≥ (v2,p2)如果首先拾取(v1,p1)的预期奖励优于首先拾取(v2,p2)的预期奖励

如果你先选择(v1,p1),你的预期回报是v1+p1 v2,如果你先选择(v2,p2),你的预期回报是v2+p2 v1。我们想确定未来会发生什么

v1+p1 v2≥ v2+p2 v1

发生。通过一些代数,我们得到,当且仅当

v1-p2 v1≥ v2-p1 v2

v1(1-p2)≥ v2(1-p1)

v1/(1-p1)≥ v2/(1-p2)

这是你之前发现的

现在,假设您以任意顺序选择元素。让我们给它们编号v1,v2,vn基于它们出现的顺序。现在,假设您已经选择了这些项目,以便它们不会根据上面给出的顺序按降序排列。这意味着一定有两个相邻的术语不符合顺序。让我们让v_i成为第一次发生这种情况。那么预期的回报将是

v1+p1(v2+p2(v3+p3(…(v_i+p_i(v_{i+1}+p_{i+1}X))…)

其中X是剩余项的值。假设您交换项目v_{i+1}和v_i,而不处理其他项目。那么您的奖励将是

v1+p1(v2+p2(v3+p3(…(v_{i+1}+p_{i+1})(v_i+p_ix))…)

因为这里的引导项是相等的,并且都是非负的,所以我们现在可以忽略它们,并关注核心项

v_i+p_i(v_{i+1}+p_{i+1}X)

v_{i+1}+p_{i+1}(v_i+p_ix)

我们知道v_i和v_{i+1}是无序的,所以

v_i+p_i v_{i+1}≤ v_{i+1}+p_{i+1}v_i

因此,假设我们执行交换,我们会看到

v_i+p_i(v_{i+1}+p_{i+1}X)

=v_i+p_i v_{i+1}+p_i p_{i+1}X

≤ v_{i+1}+p_{i+1}v_i+p_ip_{i+1}X

=v_{i+1}+p_{i+1}(v_i+p_ix)

这意味着期望值只能随着我们对序列排序的增加而增加,因此按v_i/(1-p_i)降序排序的贪婪解确实是最优解


所以,是的。按v_i/(1-p_i)排序并按顺序列出事情。

有趣的问题!出于好奇,这是从哪里来的?你想为一些社交媒体之类的平台对项目列表进行排序。你开发了一个相似概率模型(用户点击相似)和一个延续概率模型(用户看到项目并不断滚动),这会给你v_i和p_i。你想在这个模型下使用它们来最大化喜欢度。看起来按v_i/(1-p_i)排序很有效。刚刚发布了什么(我想)答案是正确的。我定期教授算法课程,这将成为一个非常棒的问题集。你对我使用这个,有归属感的问题感到满意吗?当然,即使没有归属感,也可以使用它,我相信这将使谷歌搜索答案更加困难;).很好的证据!我在很多随机的例子上进行了实证检验以证实这一点。