Hash Table Keywords

less than 1 minute read

Keywords

  • Key-value O(1)
  • Bucket : result of the hash function.
  • Collision
    • Two keys result in the same value
    • Collision handling technique
      • Separate Chaining : same key일 경우 링크드 리스트 혹은 트리 등으로 연결하는 방법.
      • Open Addressing : 같은 테이블 안에서 비어있는 Bucket을 찾는다.
        • Linear Probing : 충돌이 일어날 경우 다음 테이블로 선형적으로 탐색하는 하여 저장하는 방법. 단점으로는 Primary Clustering이 일어난다. 해쉬 충돌이 특정 영역에 집중되기 때문.
        • Quadratic Probing: Linear Probing의 단점을 줄이고자 해쉬 함수를 2차 식으로 만든다. 하지만 Primary Clustering과 마찬가지로 Secondary Clustering 문제가 발생한다.
        • Double Hashing : 위의 단점들을 보완하기 위해서 해쉬 함수를 두개를 사용한다.
      • Separate Chaining vs Open Addressing
        • 구현이 비교적 간단 / search 과정에 계산이 필요함.
        • table이 가득 찰 일이 없음 / 가득 차면 해쉬 테이블을 확장할 필요가 있음.
        • 해쉬 함수에 대해 less sensitive / 해쉬 함수에 따라 clustering에 대한 처리가 필요함
        • 주로 어떤 key들이 어떤 빈도로 들어오는지 잘 모를 때 사용 / 어느 정도 예측 가능한 key일 때 주로 사용
        • Cache performance가 좋지 않음 / 결국 O(1)이기 때문에 Cache performance가 좋음
        • Wastage of Space가 있음. 특정 부분의 해쉬 테이블이 아예 안쓰일 수 있기 때문 / 매핑이 되지 않았던 테이블도 사용되게 됨
        • 연결 리스트로 인한 추가적인 공간이 필요 / 추가적인 공간이 필요 없음.