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


10

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

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

  • (K)가 고정 된 정수 및 h (x)를 통해 정수 해시 함수이다.H(A)=xA1<<(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의 제안에 따라 별도의 답변으로 옮길 것입니다.)

kh1h2h3m23=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.