블룸 필터 해시 : 더 많거나 더 큽니까?


15

블룸 필터를 구현할 때 기존 방식에서는 여러 개의 독립적 해시 함수가 필요합니다. Kirsch와 Mitzenmacher 는 실제로 두 개만 필요하며 나머지는 선형 조합으로 생성 할 수 있음을 보여주었습니다.

내 질문은 : 실제로 두 해시 함수와 두 배의 엔트로피가있는 차이점은 무엇입니까?

이것은 실제로 해시 함수의 출력으로 수행하는 작업을 살펴 ​​보는 것에서 비롯됩니다. 64 비트 해시 값을 가져 와서 비트 벡터의 크기로 조정하면 2보다 상당히 작습니다. 64 . 이것은 분명히 엔트로피 손실 변환입니다 (드물게 해시 크기와 필터 용량이 정확히 일치하는 경우는 제외). 필터에 2 32 개 미만의 항목 이 있다고 가정하면 64 비트 해시 값을 2 개의 32 비트 해시로 분할하고 선형 조합을 취하지 못하게하는 방법은 무엇입니까? 아니면 PRNG를 뿌리기 위해 그것을 사용합니까?

즉, 표준 오 탐지율을 유지하기 위해 Bloom 필터에 삽입하는 각 요소에 대해 실제로 얼마나 많은 정보를 알아야합니까? 또는 좀 더 일반적으로 요소를 얼마나 잘 구별 할 수 있는지 (요소를 설명하는 데 사용하는 비트 수)와 Bloom 필터의 성능은 어떤 관계입니까?

내가 멀리 얻을 수있는 것처럼 확실히 보인다 비트의 필터 크기 , 또는 동등 비트 저장소 위양성 확률 갖는 요소 ....2lg(미디엄)미디엄2(lg(ln)2lg(ln2))

답변:


16

"랜덤 비트 생성"이라는 관점에서 해시 함수를 생각하는 것이 옳습니다. 따라서 64 비트 해시를 생성하는 해시 함수가있는 경우 4 개의 16 비트 해시 (분할)로 처리 할 수 ​​있습니다.

위에서 설명한 체계 (Dillinger와 Manolios에 기인해야합니다 .Kirsch / Mitzenmacher가 방금 분석 했음)의 경우, 당신이 맞다는 것을 의미합니다. 비트 의 단일 해시 함수 가 있다면 괜찮을 것입니다.2lg(미디엄)


5
cstheory에 오신 것을 환영합니다, Michael :)
Suresh Venkat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.