포함 테스트를위한 해싱 정수 세트


10

A가 B에 포함되면 R (H (A), H (B))와 같은 세트 H (.) 및 관계 R (.,.)에 대한 해시 함수를 찾고 있습니다. 물론, R (.,.)은 검증하기 쉬워야하고 (일정한 시간), H (A)는 선형 시간으로 계산되어야합니다.

H와 R의 한 예는 다음과 같습니다.

  • (K)가 고정 된 정수 및 h (x)를 통해 정수 해시 함수이다.H(A)=⋁x∈A1<<(h(x)modk)
  • R (H (A), H (B)) = ((H (A) & H (B)) == H (A))

다른 좋은 예가 있습니까? (R (H (A), H (B))이면 whp A가 B에 포함되어 있으면 직관적으로 정의하기는 쉽지만 직관적입니다.)

나중에 편집 :

  1. 해시 함수 제품군을 찾고 있습니다. 나는 많은 세트를 가지고있다. 각 세트에 3 ~ 8 개의 요소가 있습니다. 90 %는 3 개 또는 4 개의 요소를 갖습니다. 내가 준 예제 해시 함수는이 경우에 잘 배포되지 않았습니다.
  2. 작아야하는 H (.)의 비트 수 (예 : k) (즉, H (.)는 정수 또는 길이에 맞아야합니다).
  3. R의 좋은 특성 중 하나는 H (.)에 k 비트가 있으면 (3 ^ k-2 ^ k) / 4 ^ k 쌍에 대해 R (.,.)이 참이라는 것입니다. 아주 적은 쌍.
  4. 블룸 필터는 특히 큰 세트에 좋습니다. 이 문제에 대해 BF를 사용해 보았지만 최적의 결과는 단 하나의 기능으로 이루어졌습니다.

( stackoverflow의 크로스 포스트에서 충분한 답변을 얻지 못했습니다)


무엇에 대한 "whp"? 입력 값이 특정 분포에서 나온 것으로 가정합니까?
— Jukka Suomela

그리고 해시 함수 계열이 아닌 단일 고정 해시 함수를 실제로 찾고 있습니까?
— Jukka Suomela

@ Jukka : 나는 그가 R (H (A), H (B))이면 높은 확률로 A가 B의 부분 집합이라는 결론을 내립니다. 확률은 A와 B의 무작위 선택뿐만 아니라 H와 R의 내부 동전 던지기 (있는 경우).
— MS Dousti

해시 함수 제품군을 찾고 있습니다. 내 세트는 작습니다 (각각 3-8 개의 요소; 그들 중 90 %에는 3 또는 4 개의 요소가 있음). 내가주는 해시 함수의 예는 잘 분산되어 있지 않습니다.
— Alexandru

R의 좋은 특성 중 하나는 H (.)에 n 비트가 있으면 (3 ^ n-2 ^ n) / 4 ^ n 쌍에 대해 R (.,.)이 참이라는 것입니다. 아주 적은 쌍.
— Alexandru

답변:


10

(이 답변은 원래 의견에 있었지만 Suresh의 제안에 따라 별도의 답변으로 옮길 것입니다.)

kh1h2h3m2−3=1/8th그들. 각 세트를 구성 요소의 비트 단위 또는 해시로 해시합니다. 세트에는 3-8 개의 요소가 있으므로 결과 해시는 절반 근처에있을 것입니다. 이는 아마도 오 탐지율을 낮추는 것이 가장 좋습니다.

Gn,pdkm/8m/8


이것은 제안한대로 m (32 또는 64)에 특히 좋습니다.
— Alexandru

4

mkm=64k=4


k

h1h2h3m

이 변형의 장점은 대부분의 컴퓨터가 가지고있는 단어 운영에 내재 된 병렬 처리를 더 잘 활용한다는 것입니다.
— 워렌 슈디

워렌, 당신은 이것을 답변으로 게시해야합니다. 일부 투표권이 있습니다
— Suresh Venkat

2
@Warren, @Suresh : 이 두 가지 밀접하게 관련된 답변 을 결합한 다음 주석을 삭제하는 것이 더 합리적이라고 생각합니다 . 답 중 하나가 다른쪽에 정의 된 매개 변수를 참조하기 때문에 특히 따르기가 더 쉽습니다.
— Jukka Suomela
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.