追踪运动目标的算法


20

假设我们有一个黑匣子,我们可以查询和重置它。当我们复位,状态的被设定为在从所述一组随机选择的均匀的元素其中是固定的并且已知的用于给定。为了查询,提供了的元素(猜测),返回的值为(f_S-x)\ mod n。另外,该状态F_S˚F被设定为值F_S” = F_S \ PMķ,其中ķ从均匀地选择随机fffSf

{0,1,...,n1}
nffx
{0,1,...,n1}
˚F 小号 ˚F ˚F ' 小号 = ˚F 小号 ± ķ ķ { 0 1 2 Ñ / 2 - ( ˚F 小号 - X (fSx)modnfSffS=fS±kk
{0,1,2,...,n/2((fSx)modn)}

通过对每个查询做出一致的随机猜测,人们将期望在获得f_S = x之前必须进行n猜测,方差为n ^ 2--n(未经证明)。fS=xn2n

是否可以将算法设计为做得更好(即,做出更少的猜测,可能会有更少的猜测数量变化)?它可以做得更好(例如,什么是最佳算法,其性能如何)?

对这个问题的有效解决方案可能对在黑暗的房间里向兔子射击(仅限于在圆形轨道上跳跃)拍摄有重要的成本节约意义。


我不确定射击兔子是否是计算机科学。
Dave Clarke

6
@DaveClarke但是,如果您可以射击兔子,那么您已经解决了兔子的停顿问题。
Patrick87

@DaveClarke都没有将卫星发射到太空,但是卫星位置的计算是。这个问题并不完全不同于密码分析。
吉尔斯(Gilles)'所以

Answers:


13

首先,我假设

另外,该状态的被设定为值,其中从均匀地选择随机 ˚F ˚F ' 小号 = ˚F 小号 ± ķ ķ { 0 1 2 Ñ / 2 - ( ˚F 小号 - X fSffS=fS±kk

{0,1,2,...,n/2((fSx)modn)}

你的意思是

另外,该状态的被设定为值,其中在从随机选择的均匀 ˚F ˚F ' 小号 = ˚F 小号 + ķfSfk {| ñfS=fS+kmodnk

{|n2((fSx)modn)|,,1,0,1,2,,|n2((fSx)modn)|}

否则,它是不完全清楚的是一贯主张,这也正是的行为。f S ± kfS{0,...,n1}fS±k

使用此方法,问题基本上可以归结为“尽可能地丢失”。观察到我们越靠近射击兔子,他跳出的啤酒花就越大。在极端情况下,我们有。这样会在和之间产生均匀的跳跃,基本上可以完全完全随机化兔子的位置。另一方面,如果我们尽可能地错过-通过偏移,兔子实际上根本不会移动(!)黑盒实际上会更新我们基于这个事实。因此,我们可以转身射击兔子。fSx=±1modn(n/2±1)(n/2±1)fSxmodn=n/2

我们剩下的是寻找一种在每次射击中不断丢失的程序。我提出了一个简单的“二进制搜索”。(我将方便地省略四舍五入。)其大致过程如下:

  1. 重置并在任意位置拍摄,直到您从黑盒中得到答案预期这需要采取恒定的步骤。(fSxmodn){14n,...,34n}.
  2. 现在,我们知道兔子的过去位置,并且它在任一方向上的移动都没有超过步。由于兔子必须位于的位置,因此在下一次迭代中这基本上将我们的搜索空间fS14nfS{(fS14n)modn,...,fS,...,(fS+14n)modn}
  3. 递归:在位置处射击。以概率,位置兔子跳上在步骤1和2个位于范围。在这种情况下,我们再将搜索空间减半。概率为,兔子没有跳到该范围内,但是由于我们知道,我们有与步骤(2)相同的假设因此没有任何损失。fSn/2modn1/2fS{fS18n,...,fS,...,fS+18n}1/2fSxmodn=fSfS+n/2modn{12n14n,...,12n+14n}

每个步骤需要成功时间才能完成,并将搜索空间减半,从而产生预期步骤总数。2=O(1)O(logn)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.