この問題を解決しようとしています (CLRS、第 3 版、演習 11.2-1):
ハッシュ関数 h を使用して、n 個の異なるキーを長さ m の配列にハッシュするとします。単純な一様ハッシュを仮定すると、予想される衝突の数は?
正解は n(n-1)/2m です。これは、CLRS のインストラクターのマニュアルから取得されます。
私の解決策は次のとおりです。
キー 1 の挿入の場合: 先行キーとの予想衝突数 = 0
キー 2 の挿入の場合: 先行キーとの予想衝突数 = 1/m
キー 3 の挿入の場合: 前任者との予想衝突数 = 1/m*(1/m) + (m-1)/m*(2/m) = (2m-1)/m^2
私の推論: 1 つのスロットでキー 1 と 2 が衝突する確率は 1/m です。つまり、キー 3 の衝突の確率は 1/m です。キー 1 とキー 2 が衝突しなかった可能性は (m-1)/m あります。つまり、それらは異なるスロットにあり、キー 3 の衝突の確率は 2/m です。
期待の線形性による 3 つのキーの衝突の期待数 = 0 + 1/m + (2m-1)/m^2 = (3m-1)/m^2
CLRS によると、3 つのキーの予想衝突数は 3/m である必要があります。
インディケータ RV を使用して正しい解を見つける方法を知っています。
私の質問は次のとおりです。ソリューションのどこで間違いを犯しましたか? なぜ違うのですか?