假设我们有一个Black-Box $ F $,我们可以查询并重置。当我们重置$ f $时,状态$ f_s $ of $ f $的设置为从set $$ {0,1,...,...,n -1 } $ n的元素均匀选择的元素。 $是固定的,并以给定的$ f $而闻名。要查询$ f $,提供$ x $(猜测)的元素 {0,1,...,...,n -1 } $$,返回的值为$(f_s -x) mod n $。此外,$ f $的状态$ f_s $ of $ f $设置为一个值$ f_s'= f_s pm k $,其中$ k $从$ {0、1、2,...,... lfloor n/2 rfloor-(((f_s -x) mod n)} $$

通过对每个查询进行统一的随机猜测,人们希望在获得$ f_s = x $之前必须做出$ n $猜测,并带有差异$ n^2 -n $(陈述没有证明)。

可以设计算法做得更好(即,猜测更少,猜测的差异较小)?它可以做得更好(即,最佳算法是什么,其性能是什么)?

解决此问题的有效解决方案可能会对在黑暗房间中的兔子拍摄(仅限于圆形轨道上的跳跃)具有重要的省略成本含义。

有帮助吗?

解决方案

首先,我会假设

此外,$ f $的状态$ f_s $ of $ f $设置为一个值$ f_s'= f_s pm k $,其中$ k $从$ {0、1、2,...,... lfloor n/2 rfloor-(((f_s -x) mod n)} $$

你实际上是说

此外,状态$ f_s $ of $ f $设置为值$ f_s'= f_s + k mod n $,其中$ k $从$ left left { - left |均匀地选择均匀选择。 left lfloor frac {n} {2} right rfloor - (((f_s -x) - x) mod n) right |, ldots,-1,0,1,2, ldots, ldots, left | left | left lfloor frac {n} {2} right rfloor-((f_s -x) mod n) right | right | right } $

否则,尚不完全清楚的是,$ f_s in {0,...,n-1 } $始终保持以及$ f_s pm k $的表现。

使用此问题,问题基本上归结为“尽可能丢失”。观察到,我们射击兔子的距离越近,他制造的啤酒越大。在极端情况下,我们有$ f_s -x = pm 1 mod n $。这导致$ - ( lfloor n/2 rfloor pm 1)$和$( lfloor n/2 rfloor pm 1)$在$ - ( lfloor n/2 rfloor pm 1)$之间产生均匀的跳动,这基本上完全将兔子的位置随机。另一方面,如果我们尽可能地错过了$ f_s -x mod n = lfloor n/2 rfloor $,兔子实际上根本不会移动(!) 黑匣子实际上对我们更新了这一事实。因此,我们可以转身射击兔子。

我们剩下的是找到每次镜头越来越多的过程。我提出了一个简单的“二进制搜索”。 (我将方便地省略圆形。)它大致进行如下:

  1. 重置和拍摄任意位置,直到从黑盒中获得答案$(f_s -x mod n) in { frac {1} {1} {4} {4} n,..., frac {3} {4} {4} {4} n }。$这在预期中采取了恒定的步骤。
  2. 现在,我们知道兔子的过去位置$ f_s $,并且它的移动不超过$ frac {1} {4} {4} n $步骤,沿任一方向。这基本上将我们在下一个迭代中的搜索空间减半,因为兔子必须处于$ f_s' in in {(f_s- frac {1} {4} {4} n) mod n,...,f_s,f_s,,,f_s,... ...,(f_s + frac {1} {4} n) mod n } $
  3. recurse:在位置上拍摄$ f_s -N/2 mod n $。使用概率$ 1/2 $,位置$ f_s'$ The Rabbit在步骤1&2中跳到了范围$ {f_s - frac {1} {1} {8} {8} n,...,f_s,f_s,...,... frac {1} {8} n } $。在这种情况下,我们再次将搜索空间减半。有了概率$ 1/2 $,兔子没有跳入该范围,但是由于我们知道$ f_s' -x mod n = f_s' -f_s + n/2 n/2 mod n in in in { frac {1} {2} n- frac {1} {4} n,..., frac {1} {2} {2} n + frac {1} {4} n } $,我们有与步骤相同的假设(2)因此一无所获。

每个步骤都需要$ 2 = Mathcal {O}(1)预期的时间将成功和减半,从而产生$ Mathcal {O}( log n)$预期步骤数的总体。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top