仅使用近似最大查询来找到近似argmax


10

考虑以下问题。

有未知值。任务是仅使用以下形式的查询来找到最大的索引。查询由集合,对应的答案是。目标是使用尽可能少的查询。nv1,,vnRS{1,,n}maxiSvi

这个问题很容易:我们可以使用二进制搜索通过O(logn)查询来找到argmax 。即用n叶子对应索引建立一个完整的二叉树。从根开始,然后按以下步骤走到一片叶子。在每个节点上,查询左右子树中的最大值,然后移到答案较大的一侧的子级。到达叶子后,输出其索引。

我的研究提出了以下该问题的嘈杂版本。

n未知值v1,,vn。这些可以通过查询来访问,其中指定了一个S{1,,n},并从N(maxiSvi,1)中返回了一个样本。目标是在\ {1,\ cdots,n \}中标识i_ * \,以i{1,,n}使E[vi]maxivi1使用尽可能少的查询。(期望超过了i_ *的选择i,这取决于算法的代币和嘈杂的查询答案。)

假设我们尝试使用与以前相同的二进制搜索策略(但带有嘈杂的答案)解决此问题。可以很容易地证明它达到E[vi]maxiviO(logn)并且在最坏的情况下这很严格。我们可以通过将每个查询重复O(\ log ^ 2 n)次并使用平均值(从而降低方差),将错误降低到所需的1。这给出了使用O(\ log ^ 3 n)查询的算法。1O(log2n)O(log3n)

有更好的算法吗?我猜想查询就足够了。而且我相信我可以证明下限。同样,问题变得很容易-即通过二进制搜索查询-承诺最大值和第二大值之间存在差距。如果有帮助,可以假定所有值都在到。O(log2n)Ω(log2n)O~(logn)Ω(1)0O(logn)


那么在每个级别上进行O(log n)个查询对的二进制搜索(一对最多代表左手,一对最多代表右手)并记录获胜者。然后,在O(log n)取整之后,算法在“获胜”次数最多的那一侧递归进行。我脑海中的一个简短计算似乎表明,在一个输入为且所有其他输入为的情况下,此方法与概率一起工作...尽管我可能相距甚远。11/nc20
daniello

@daniello当最大和第二大值之间存在间隙时,该方法起作用。不过,一般情况似乎更加困难。
托马斯

自我注释:在评论前先阅读整个问题
daniello

Answers:


1

一个或两个想法向下限的扩展注释。假设(尽管最佳选择可能有所不同),然后让。考虑通过随机选择这些值的排列来绘制输入。B=Θ(logn){v1,,vn}={1nB,,n1nB,B}

这个想法应该是,如果我们固定除值和之外的所有值的索引,那么我们应该能够证明算法选择一个与另一个的概率的差异是非常小:如果将这些值分配给两个可用索引以及任何查询序列的结果为50-50,则算法查询结果之间的差异很小。Bn1nB

该参数适用于每对相邻的值,因此我们对算法选择最高,第二高,...值的概率有一系列约束。这给出了算法的期望值的上限,因此我们将该上限设置为并查看查询的数量。B1

我尚无法使用上述方法在进行改进,但我认为如果可以利用查询无法一次完成多个步骤的事实,您可能会得到。也就是说,如果在将最高值移到另一个索引时查询发生更改,那么在其中一次将其他值移到另一个索引时查询都不会更改。logn(logn)2

差异隐私可能对以下步骤之一有所帮助,例如,如果仅考虑交换两个最高值的位置的情况,则此查询的“敏感性”只是然后进行高级合成可能会有所帮助。Bn

抱歉,这是半熟的,但希望它会有用!


我实际上没有考虑过下限,因为我希望有一个上限。:)即使在无噪音的情况下也成立。我认为我们应该能够证明下限。Ω(logn)Ω(log2n)
托马斯

好。我有一个下界的草图,但是有点复杂。Ω(log2n)
托马斯
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.