Google의 스파 스 해쉬 오픈 소스 라이브러리에는 밀도가 높은 해시 테이블과 스파 스 (sparse) 테이블의 두 가지 구현이 있습니다.스파 스 해시 테이블의 주요 구현 아이디어는 무엇입니까?
17
A
답변
16
밀도가 높은 해시 테이블은 일반적인 텍스트 북 해시 테이블 구현입니다.
스파 스 해시 테이블은 배열 수에 따라 실제로 설정된 요소 만 저장합니다. 스파 스 테이블의 구현의 comments 인용 위해 각 요소가 오버 헤드가 발생되도록
// To store the sparse array, we store a bitmap B, where B[i] = 1 iff
// bucket i is non-empty. Then to look up bucket i we really look up
// array[# of 1s before i in B]. This is constant time for fixed M.
:
// The idea is that a table with (logically) t buckets is divided
// into t/M *groups* of M buckets each. (M is a constant set in
// GROUP_SIZE for efficiency.) Each group is stored sparsely.
// Thus, inserting into the table causes some array to grow, which is
// slow but still constant time. Lookup involves doing a
// logical-position-to-sparse-position lookup, which is also slow but
// constant time. The larger M is, the slower these operations are
// but the less overhead (slightly).
가 배열 요소를 설정하는 알 스파 스 테이블은 비트 맵을 포함 1 비트 (한도).
3
스파 스 해시는 키를 값 (키당 1-2 비트)에 매핑하는 메모리 효율적인 방법입니다. 블룸 필터는 키 당 더 적은 비트를 줄 수 있지만 외부/아마 내부 이외의 키에 값을 첨부하지는 않으며 약간의 정보보다 약간 적습니다.
관련 문제
- 1. 스파 스 매트릭스 구현 및 Java에서의 작업
- 2. 파이썬에서 스파 스 코딩
- 3. WinXP SP3의 스파 스 파일
- 4. 스파 스 매트릭스 라이브러리가 필요합니다.
- 5. Incanter는 스파 스 매트릭스를 지원합니까?
- 6. C에서 스파 스 매트릭스 변환
- 7. Scipy 스파 스 삼각 행렬?
- 8. 파이썬에서 스파 스 매트릭스를 지원합니까?
- 9. 스파 스 표현을 사용하는 nltk.cluster
- 10. 파일 스파 스 만드는 법?
- 11. 스파 스 매트릭스 svd에서 파이썬
- 12. 스파 스 비트 벡터에 대한 해싱
- 13. GPU 또는 CPU의 스파 스 매트릭스 곱셈?
- 14. R을위한 성숙한 스파 스 매트릭스 패키지는 대부분?
- 15. SQL의 스파 스 (sparse) 내적 제품
- 16. 연산자 오버로딩은 []과 같이 내가 C++에서 "스파 스"벡터 클래스를 만들려고 해요 스파 스 벡터
- 17. 스파 스 체크 아웃 및 svn : externals
- 18. 파이썬에서 스파 스 매트릭스를 효율적으로 추가하는 방법
- 19. python hcluster에서 스파 스 매트릭스를 사용하는 방법?
- 20. 스파 스 매트릭스를 저장하기위한 데이터 구조
- 21. Scipy 스파 스 매트릭스의 주소 지정 범위
- 22. 스파 스 FFT 계산 속도 향상
- 23. 스파 스 매트릭스에 대한 링크 표현
- 24. 저장소 레이아웃과 스파 스 체크 아웃
- 25. Git 1.7.0의 스파 스 체크 아웃?
- 26. 스파 스 매트릭스 생성을 병렬로 수행
- 27. 스파 스 값을 필터링하는 대수적인 방법 ..?
- 28. 스파 스 수치 데이터 (예 : 역 색인) - 모든 규칙은 무엇입니까?
- 29. 다양한 부스트 블록 간 스파 스 벡터의 차이점은 무엇입니까?
- 30. 자바에서 스파 스 벡터를 구현하는 가장 좋은 방법은 무엇입니까?
나는 게시물의 질문을 오해하고 있다고 생각합니다. 해시 테이블 + 고밀도 해시 테이블 == 모든 해시 테이블을 스파 스하지 않습니까? 그렇다면 라이브러리가 "스파 스 해시 (sparsehash)"라고하는 이유는 무엇입니까? – cHao
표 : [Google 코드의 문서] (http://google-sparsehash.googlecode.com/svn/trunk/doc/implementation.html). – cHao