サイズのバイナリ配列が与えられます。
どのアルゴリズムも次のことを実行できないことを示したいと思います(または驚いて、そのようなアルゴリズムが結局存在していることを知ってください):
1)無制限の時間を使用して、ただしビットのみを使用して、入力配列を前処理します。
2)クエリに一定の時間で応答します。クエリは、配列のインデックスとインデックス間のセットビット数を要求します。x y
クエリごとの一定時間は、設定されたビット数を計算するのに十分な情報をアルゴリズムが読み取れないようにする必要があります。
そのようなアルゴリズムが存在しないことをどのように証明できますか?
より一般的な質問は、
アルゴリズムが空間の使用を許可されている場合、クエリ時間の下限はどのようにして導出できますか?
明らかに、スペースがある場合、すべての部分和を格納してクエリをに格納できが、が小さい場合はどうなりますか?O (1 )f
メモリワードのサイズがあり、インデックスを一定の時間で読み取ることができると想定する場合があり。xは、Y