使用对抗参数找到第k个最小元素的下界


10

在许多文本中,使用中位数的自变量得出了找到第个最小元素的下限。如何使用敌对参数找到一个?k

维基百科说锦标赛算法运行在,并且被给定为下限。O(n+klogn)nk+j=n+2knlgj

Answers:


8

我将简要概述对手论点的草图。

考虑您的选择算法与我们称为对手的对手对抗,对手的目的是为您的算法提供输入X以使您的算法完成的比较操作数量最大化。确实,您的算法可以看作是比较树,其中的路径对应于部分顺序。当算法向对手询问元素对Xÿ时,对手返回X<ÿÿ<X。对手的答案永远不会与先前的结果相矛盾。

假设第ķ个最大元素为X:考虑到与比较树的任何叶子相关的偏序,则X必须与其他所有元素都具有可比性,以便算法正确,因此该算法必须具有由至少一个比较ÿž ÿX,其结果是要么ÿ<žXXž<ÿ。称这样的比较对于元素y至关重要ÿ。显然,对手想要最大化您算法进行的非关键比较的次数。

大号ķ-1个最大元素的集合;您的算法需要正确识别大号所有元素以及X大号的最大元素,即X。观察到,在每个元素X大号已经失去至少一个关键比较。现在,对手采取的策略是迫使L中的ķ-1个元素至少赢得each lg n大号lgñķ-1个比较,其中没有一个是至关重要的X大号。将XnL的其余ñ-ķ关键比较相加,即可得到下界。Jeff Erikson指出,有关详细信息,请阅读以下优秀文章。X大号


@JeffE我感到困惑的定义crucial comparison for $y$:在比较其中任ÿ < Ž X *X *Ž < ÿX *是目标元件。如果进行这些比较时我们不知道zx 之间的关系该怎么办?我们这里有个神谕吗?还是我们不了解完整的信息(甚至包括未来的信息)?ÿžÿ<žXXž<ÿXžX
恒新
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.