Интересный вопрос, давайте рассмотрим некоторые конкретные случаи.
Пусть ключи, п о п биты, п т о т а л биты в полных и м элементов , вставленных. Сначала мы будем пытаться найти функцию P ( K , п О п , п т о т л , м ) , которая является вероятностью состояние , наступающее.КNо пNт о т лмп( к , но п, нт о т л, м )
Если , то Р ( к , п о п , п т о т л , м ) должен быть 0 , то есть , это невозможно.к м < по пп( к , но п, нт о т л, м )0
Если , то мы ищем вероятность того, что k m хэшей попадут в одно и то же ведро, и первое может пометить, куда должны идти другие. Итак, мы хотим найти вероятность того, что k m - 1 хэшей попадет в конкретный сегмент.Nо п= 1к мк м - 1
п( к , 1 , нт о т л, м ) = ( 1 / нт о т л)( К м - 1 )
Это действительно простые случаи закончились. Если то мы хотим найти вероятность того, что k m хэшей попадет в 2 разных сегмента, и по крайней мере 1 попадет в каждое. Есть п т о т л ( н т о т л - 1 ) пара ведер и вероятность того , что хеши земли в каком - либо конкретной 2 является ( 2 / п т о т л ) к мNо п= 2к м21ntotal(ntotal−1)2(2/ntotal)kmтаким образом, вероятность того, что хэши попадут в блока, равна:2
ntotal(ntotal−1)(2/ntotal)km
Мы уже знаем вероятность того, что они упадут в ведро, поэтому давайте вычтем это, чтобы дать вероятность того, что они упадут ровно в 2 .12
P(k,2,ntotal,m)=ntotal(ntotal−1)(2/ntotal)km−(1/ntotal)(km−1)
Я думаю, что мы можем обобщить это сейчас.
P(k,non,ntotal,m)=(ntotalnon)(non/ntotal)km−∑i<noni=1P(k,i,ntotal,m)
Я не совсем уверен, как сделать эту формулу более поддающейся вычислению. Наивно реализованный, он привел бы к экспоненциальному времени выполнения, хотя с помощью запоминания тривиально добиться линейного времени. Тогда это всего лишь случай нахождения наиболее вероятного . Мой инстинкт говорит, что будет один пик, так что может быть возможно найти его очень быстро, но наивно, вы определенно можете найти наиболее вероятный m в O ( n 2 ) .mO(n2)