理想的には、次のプロパティを持つ整数のマルチセットのハッシュを保存する方法があるかどうか興味があります。
- O(1)スペースを使用します
- O(1)時間での挿入または削除を反映するように更新できます
- 2つの同一のコレクション(つまり、同じ多重度を持つ同じ要素を持つコレクション)は常に同じ値にハッシュする必要があり、2つの異なるコレクションは高い値で異なる値にハッシュする必要があります(つまり、関数は独立またはペア独立です)
これの最初の試みは、個々の要素のハッシュのランダムな素数を法として積を格納することです。これは1と2を満たしますが、それまたは密接なバリエーションが3を満足するかどうかは明らかではありません。
最初にこれをStackOverflowに投稿しました。
*プロパティ1と2は、たとえばO(log n)または小さな部分線形多項式に少し緩和することができます。ポイントは、複数のセットを識別し、要素自体を保存せずに同等性を確実にテストできるかどうかを確認することです。