[ハッシュテーブルは] O(1) 挿入と検索
これは間違っていると思います。
まず、キースペースを有限に制限すると、要素を配列に格納して O(1) 線形スキャンを実行できます。または、配列をシャッフルソートしてから、O(1) の予想時間で線形スキャンを実行できます。スタッフが有限の場合、スタッフは簡単に O(1) になります。
したがって、ハッシュ テーブルに任意のビット文字列が格納されるとします。それぞれが有限である無限のキーのセットがある限り、それは大した問題ではありません。次に、クエリと挿入入力のすべてのビットを読み取る必要があります。それ以外の場合は、空のハッシュに y0 を挿入し、y1 でクエリを実行します。ここで、y0 と y1 は、見ていない単一のビット位置で異なります。
しかし、キーの長さはパラメーターではないとしましょう。挿入と検索に O(1) かかる場合、特にハッシュには O(1) の時間がかかります。つまり、ハッシュ関数からの有限量の出力のみを確認することになります (そこから有限の出力しか得られない可能性が高く、許可されています)。 )。
これは、バケットの数が有限であるため、すべて同じハッシュ値を持つ文字列のセットが無限に存在する必要があることを意味します。それらのうち、大量、つまり ω(1) を挿入し、クエリを開始するとします。これは、クエリに答えるために、ハッシュ テーブルが他の O(1) 挿入/検索メカニズムにフォールバックする必要があることを意味します。それを直接使用しないのはなぜですか?