728x90
반응형
Hash Table (or Hashing)
Hash에 대해선 다음을 참고:
2024.05.21 - [개발환경] - [CE] Hash Algorithm
[CE] Hash Algorithm
Hash란?Hash 는 임의의 크기를 가진 데이터를 고정된 크기의 (고유한) 데이터로 변환하는 방법 임.이 변환 과정은 Hash Algorithm에 의해 명확하게 정의됨.Hash Algorithm을 통해 생성된 해시 값(Hash, Hash Valu
ds31x.tistory.com
Hash 알고리즘을 이용한 Hash Table이란
- 많은 메모리를 사용(indexing으로)하는 댓가로 검색에 필요한 계산 시간을 단축시키는 검색기법 또는 해당 검색기법이 가능하도록 자료구조를 만드는 방법
- 적절한 hash function과 collision 해결방안을 사용할 경우,
- $n$개의 요소로 구성된 hash table에서
- $n$과 무관하게
- $O(1)$이라는 상수 시간에 데이터를 삽입,삭제, 검색 이 가능.
- 이는 hash function, $h(x)$를 사용하여 해당 함수에 검색 key 값을 입력하면 hash table에서 해당 데이터가 있는 address(주소값)을 얻어내어 random access가 가능함을 의미.

Hashing의 조건
일반적 hashing의 경우,
- 계산이 쉽고
- hash table에 자료를 골고루 배치
하는 hash function이 좋은 hashing function임.
Matching에 사용되는 Hashing
matching에서 사용되는 locality sensitive hashing에서는 추가적으로
- 위치가 가까운 vector들은 비슷한 값을 반환하는 hash function이 좋은 hashing function이 됨 (일반적인 hashing과는 정반대)
- → 즉, 가까운 vector들은 collision이 일어나야함.
또한, matching에서 검색키가 위의 예의 scalar 대신 real number vector임.
728x90
'utils' 카테고리의 다른 글
| [Utils] winget 간단 사용법 (0) | 2024.09.08 |
|---|---|
| [Utils] winget: Window Package Manager (2) | 2024.09.08 |
| [vscode] 기본 terminal 변경. (0) | 2024.03.12 |
| [linux] bat (0) | 2024.01.30 |
| [vim] clipboard 와 mouse selection 사용하기 : Neovim (on macOS) (1) | 2024.01.05 |