효율적인 반복 삽입을위한 데이터 구조 설정


11

wordize 요소 집합 (반복 없음)을 보유하고 빠른 삽입 (amortized O (1))을 지원하는 공간 효율적인 데이터 구조를 찾고 있습니다. "공간 효율적"이란 이상적으로 요소 를 저장하는 단어를 의미 합니다.n+o(n)n

집합이되는 것은 질문의 중요한 부분입니다. 각 요소를 번 추가 하면 사용 된 공간은 일 수 없습니다 .lognnlogn

구조는 또한 요소를 효율적으로 나열하는 것을 지원해야합니다. 제정신 구조는 아무 문제가 없습니다. (빠른 멤버쉽 쿼리는 플러스입니다.)


2
해시 테이블이 트릭을 수행하지 않는 이유가 있습니까?
Dave

@ 데이브 : 공간 요구 사항을 충족시키는 것으로 생각하지 않지만 충분히 엄격한 동적 크기 조정 일정이 작동한다고 가정합니다. 그러나 일반적으로 실제로 코드를 작성하기 전에 무엇이 있는지 확인하고 싶습니다.
찰스

1
동적 크기 조정으로 상각 된 을 얻으려면 크기를 일정한 비율로 늘려야합니다 을 엄격하게 충족하려면 공간 요구 사항을 충족시키지 못한다고 생각합니다 . n + o ( n )O(1)n+o(n)
Dave

자, 이것은 약간 어리석은 일이지만 우주가 일정한 크기 (단어 크기 요소) 인 경우 전체 비트 벡터의 크기는 .O(1)
Magnus Lie Hetland

@ Magnus : 질문에서 O 및 O 표기의 실제 기능이 단어 크기에 의존하지 않는다는 것을 의미한다고 생각합니다.
이토 쓰요시

답변:


10

Raman과 Rao의 "간결한 동적 사전 및 트리" 가 지정한 범위를 충족 한다고 생각 합니다. 초록에서 :

먼저 세트 에서 지원 멤버십 쿼리하는 최악의 경우의 시간과 발 / 삭제에 삽입 에서 상각 시간을 예상. 이 표현은 비트를 사용합니다. 여기서 은 를 나타내는 정보 이론적 최소 공간 입니다.O ( 1 ) S O ( 1 ) B + o ( B )SU={0,,m1},|S|=nO(1)SO(1)B+o(B)B=lg(mn)S


환상적입니다. (그렇지만 수락하기 전에 논문을 읽으면 이해할 수 있습니까?)
Charles

1

응용 프로그램에서 일부 오 탐지를 허용 할 수있는 경우 Bloom 필터 사용을 조사해야합니다 .

위키 백과의 역설 : 블룸 필터는 공간 효율적인 확률 적 데이터 구조로, 요소가 세트의 멤버인지 테스트하는 데 사용됩니다. 거짓 긍정은 가능하지만 거짓 긍정은 불가능합니다. 요소는 세트에 추가 할 수 있지만 제거 할 수는 없습니다. 세트에 추가 된 요소가 많을수록 오 탐지 확률이 높아집니다.


광산은 할 수 없지만 훌륭한 데이터 구조를 위해서는 +1입니다.
찰스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.