考虑以下问题。
有未知值。任务是仅使用以下形式的查询来找到最大的索引。查询由集合,对应的答案是。目标是使用尽可能少的查询。
这个问题很容易:我们可以使用二进制搜索通过查询来找到argmax 。即用叶子对应索引建立一个完整的二叉树。从根开始,然后按以下步骤走到一片叶子。在每个节点上,查询左右子树中的最大值,然后移到答案较大的一侧的子级。到达叶子后,输出其索引。
我的研究提出了以下该问题的嘈杂版本。
有未知值。这些可以通过查询来访问,其中指定了一个,并从中返回了一个样本。目标是在\ {1,\ cdots,n \}中标识i_ * \,以使使用尽可能少的查询。(期望超过了i_ *的选择,这取决于算法的代币和嘈杂的查询答案。)
假设我们尝试使用与以前相同的二进制搜索策略(但带有嘈杂的答案)解决此问题。可以很容易地证明它达到并且在最坏的情况下这很严格。我们可以通过将每个查询重复O(\ log ^ 2 n)次并使用平均值(从而降低方差),将错误降低到所需的1。这给出了使用O(\ log ^ 3 n)查询的算法。
有更好的算法吗?我猜想查询就足够了。而且我相信我可以证明下限。同样,问题变得很容易-即通过二进制搜索查询-承诺最大值和第二大值之间存在差距。如果有帮助,可以假定所有值都在到。