次の問題を考えてください。
この問題は簡単です。バイナリ検索を使用して、クエリでargmaxを見つけることができます。つまり、インデックスに対応する葉を持つ完全なバイナリツリーを構築します。次のように、根から始めて葉まで歩きます。各ノードで、右サブツリーと左サブツリーの最大値をクエリしてから、答えが大きい側の子に移動します。葉に到達したら、そのインデックスを出力します。
この問題の次の騒々しいバージョンは私の研究で出てきました。
あり未知の値は。これらは、セットが指定され、からのサンプルが返されるクエリでアクセスできます。目標は、\ mathbb {E} [v_ {i_ *}] \ geq \ max_i v_i-1ができるだけ少ないクエリを使用して、を識別することです。(予想は、アルゴリズムのコインとノイズの多いクエリの回答の両方に依存するi_ *の選択を超えています。)V 1、⋯ 、V N S ⊆ { 1 、⋯ 、N } N(最大I ∈ S V I、1 )I * ∈ { 1 、⋯ 、N } Eは、 [ V I * ] ≥ maxは、iがV Iを - 1 i ∗
以前と同じバイナリ検索戦略を使用してこれを解決しようとしていると仮定します(ただし、ノイズの多い回答を伴います)。これがを達成し、これが最悪の場合はタイトであることを示すのはかなり簡単です。各クエリを回繰り返し、平均を使用することで、誤差を望ましい減らすことができます分散を駆動します)。これは、クエリを使用するアルゴリズムを提供します。1 O (ログ2 N )O (ログ3 Nを)
より良いアルゴリズムはありますか?クエリで十分だと思い。そして、私は下限を証明できると信じてい。また、最大値と2番目に大きい値の間にギャップがあるという約束の下で、問題は簡単になりつまり、バイナリ検索によるクエリ。それが役立つ場合は、すべての値がから間であると想定でき。Ω (ログ2 Nを)〜O(ログN )Ω (1 )0 O (ログN )