3種類のプロービングを使用して、プロジェクトのハッシュテーブルを実装しています。現在、リニアに取り組んでいます。
線形プロービングについては、プロービングがどのように機能するかを理解しており、私のインストラクターは、ステップサイズを1にしたいとほのめかしました。つまり、重複は許可されていません。ですから、値を挿入する前に、値を「検索」する必要がありますよね?しかし、すべてのセルが「占有」または「削除」されるまでテーブルが使用された場合はどうなるでしょうか。次に、特定のキーを検索してそのキーがテーブルにないことを確認するには、テーブル全体を検索する必要があります。つまり、検索操作(ひいては挿入操作)はO(n)です。
それは正しくないようで、私は何かを誤解したと思います。
テーブルは少なくとも半分空である必要があり、決定された数の要素のみをプローブするため、2次プローブで同じ問題に遭遇する必要はないことを私は知っています。また、ダブルハッシュの場合、挿入するキーが存在しないことを証明するためにテーブルを検索する必要があるため、これがどのように機能するかはわかりません。しかし、どのセルも「占有されていない」場合に検索を停止する方法をどのように知ることができますか?
したがって、過去にテーブル内のすべてのエントリが占有されていたオープンハッシュでは、要素を検索するためにO(n)プローブが必要ですか(重複が許可されていない場合は挿入します)?