Цікаве запитання, давайте розглянемо деякі конкретні випадки.
Нехай будуть клавіші, n o n бітів, n t o t a l бітів усього та m елементів вставлено. Спершу спробуємо знайти функцію P ( k , n o n , n t o t a l , m ), яка є ймовірністю виникнення стану.knonntotalmP(k,non,ntotal,m)
Якщо , то P ( k , n o n , n t o t a l , m ) повинно бути 0 , тобто це неможливість.km<nonP(k,non,ntotal,m)0
Якщо , то ми шукаємо ймовірність того, що до м хеші потрапляють в одне відро, то перший можна відзначити , де інші повинні йти. Отже, ми хочемо знайти ймовірність того, що к m - 1 хешів потрапляє у певне відро.non=1kmkm−1
P(k,1,ntotal,m)=(1/ntotal)(km−1)
Ось справді прості випадки закінчилися. Якщо то ми хочемо знайти ймовірність того, що k m омиває землю у двох різних відрах і щонайменше 1 падіння в кожне. Є n t o t a l ( n t o t a l - 1 ) пари відер і ймовірність того, що земля хешу в будь-якій конкретній 2 дорівнює ( 2 / n t o t a l ) k mnon=2km21ntotal(ntotal−1)2(2/ntotal)kmтому ймовірність того, що хеші потраплять до відрів, така:2
нt o t a l( нt o t a l- 1 ) ( 2 / нt o t a l)к м
Ми вже знаємо ймовірність того, що вони потраплять у відро, тому давайте віднімемо це, щоб дати ймовірність, що вони потраплять рівно за 2 .12
П( k , 2 , nt o t a l, m ) = nt o t a l( нt o t a l- 1 ) ( 2 / нt o t a l)к м- ( 1 / нt o t a l)( k m - 1 )
Я думаю, ми можемо це узагальнити зараз.
П( к , но н,ntotal,m)=(ntotalnon)(non/ntotal)km−∑i<noni=1P(k,i,ntotal,m)
Я не зовсім впевнений, як зробити цю формулу більш прихильною до обчислень. Наївно реалізовано, це призведе до експоненціального часу виконання, хоча тривіально за допомогою запам'ятовування досягти лінійного часу. Тоді це лише випадок знаходження найбільш ймовірного . Мій інстинкт говорить, що буде один пік, тому його можна буде знайти дуже швидко, але наївно, ви можете точно знайти найвірогідніший m в O ( n 2 ) .мО ( н.)2)