敵対的な引数を使用してk番目に小さい要素を見つけるための下限


10

多くのテキストでは、中央値を使用する引数を使用して、番目に小さい要素を見つけるための下限が導出されます。敵対的な議論を使用してどのように見つけることができますか?k

ウィキペディアによると、トーナメントアルゴリズムはで実行され、は下限として与えられます。N - K + Σ N J = N + 2 - K ⌈ LGO(n+klog⁡n)n−k+∑j=n+2−kn⌈lgj⌉

回答:


8

敵対的な議論の概略を簡単に概説します。

我々は敵のadversary.Theの目的を呼ぶことを相手に対するあなたの選択アルゴリズムの再生を考えると、入力提供するものであるXお使いのアルゴリズムによって行われた比較操作の数を最大化し、あなたのアルゴリズムに。実際、アルゴリズムは、パスが半順序に対応する比較ツリーと見なすことができます。アルゴリズムが要素のペア(x,y)について敵対者に尋ねると、敵対者はx<yまたはy<xいずれかを返します。敵対的な回答が以前の結果と矛盾することは決してありません。

kx∗x∗(y,z) ∀y≠x∗y<z≤x∗x∗≤z<yy。明らかに、攻撃者はアルゴリズムによって行われる重要でない比較の数を最大化したいと考えています。

Lk−1LX∖Lx∗X∖Lk−1L⌈lg⁡nk−1⌉ために重要であるいずれも比較、X∖L。X∖Lの残りのn−k重要な比較を追加すると、下限が得られます。詳細については、次の優れたJeff Eriksonのメモをお読みください。X∖L


crucial comparison for $y$y:zy<z≤x∗x∗≤z<yx∗zx∗
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.