키(key), 값(value)의 대응으로 이루어진 테이블 같은 형태의 자료구조
키(Key) 를 이용해 데이터를 저장하고 검색하는 자료구조
버킷(Bucket): 데이터를 저장하는 공간
버킷 배열: 여러 개의 버킷들이 배열 형태로 구성됨
1️⃣ 키를 해시 함수에 적용 → 특정 인덱스(버킷) 반환
2️⃣ 반환된 인덱스를 사용해 해당 버킷에 데이터 저장
3️⃣ 키를 다시 사용하면 동일한 인덱스 반환 → 빠른 검색 가능
로드 팩터(loadfactor)
해시 테이블에 저장된 데이터 수를 버킷의 수로 나눈값
해시 테이블이 현재 얼마나 가득 차 있는지에 대한 지표로, 로드 팩터가 클수록 해시 테이블의 성능이 떨어짐
서로 다른 키(Key) 가 동일한 해시 값(Hash Value)을 가지는 경우 발생
> 예: 다른 이름에 같은 전화번호가 매칭되는 상황
1️⃣ 체이닝(Chaining) 기법
2️⃣ 개방 주소법(Open Addressing)
대표적인 조사 방법:
군집화 현상은 오랜 순차 탐색이 필요해 성능 악화로 이어질 수 있음이차 조사법
이차 조사법(Quadratic Probing)은 선형 조사법의 군집화 문제를 완화하기 위해, 해시 충돌 발생 시 충돌이 발생한 인덱스에서 제곱수 간격으로 떨어진 인덱스를 탐색하는 방법으로, 선형 조사법보다 효과적이지만 제곱수의 규칙성으로 인해 완벽한 해결이 어렵고, 특정 해시 테이블 크기에서는 빈 공간을 찾지 못할 가능성이 있음
3️⃣ 이중 해싱(Double Hashing): 보조 해시 함수를 사용해 새로운 위치 탐색
키를 해시 함수에 적용하여 특정 위치에 데이터를 저장하는 자료구조
빠른 검색, 삽입, 삭제가 가능하고 일반적으로 O(1) 성능을 보장
버킷: 데이터를 저장하는 공간
해시 함수: 키를 특정한 인덱스로 변환하는 함수
로드 팩터: (저장된 요소 개수) / (버킷 개수), 해시 테이블이 얼마나 차 있는지
해시 충돌: 서로 다른 키가 동일한 해시 값을 가질 때 발생
해시 충돌 해결 방법
체이닝: 같은 인덱스에서 충돌이 발생하면 연결 리스트로 데이터를 저장
개방 주소법: 빈 공간을 찾아 데이터를 저장하는 방식
이중 해싱: 보조 해시 함수를 사용하여 충돌 시 새로운 위치를 탐색
참고: 북스터디 - 이것이 취업을 위한 컴퓨터 과학이다 (Chapter 4-4)