이상적으로 다음과 같은 속성을 갖는 여러 정수 세트의 해시를 저장하는 방법이 있는지 궁금합니다.
- O (1) 공간을 사용합니다
- O (1) 시간에 삽입 또는 삭제를 반영하도록 업데이트 할 수 있습니다.
- 두 개의 동일한 콜렉션 (즉, 동일한 다중성을 갖는 동일한 요소를 갖는 콜렉션)은 항상 동일한 값으로 해시해야하며, 두 개의 고유 한 콜렉션은 확률이 높은 다른 값으로 해시해야합니다 (즉, 함수는 독립적이거나 쌍으로 독립적입니다)
이에 대한 첫 번째 시도는 개별 모듈의 해시 소수를 곱하여 모듈로 제품 모듈로를 저장하는 것입니다. 이것은 1과 2를 만족 시키지만, 또는 가까운 변형이 3을 만족 시킬지는 확실하지 않습니다.
나는 원래 이것을 StackOverflow에 게시했습니다 .
* 속성 1과 2는 O (log n) 또는 작은 하위 선형 다항식으로 약간 완화 될 수 있습니다. 요점은 요소 자체를 저장하지 않고도 다중 집합을 식별하고 동등성을 안정적으로 테스트 할 수 있는지 여부를 확인하는 것입니다.