자료 구조와 알고리즘
해시 테이블에서 충돌(collision)에 대한 설명으로 올바른 것은?
- A해시값에서 원래 키를 구할 수 있게 되는 것
- B서로 다른 키에서 같은 해시값(저장할 위치)이 구해지는 것
- C같은 키에서 실행할 때마다 다른 해시값이 구해지는 것
정답과 해설 보기
정답: B. 서로 다른 키에서 같은 해시값(저장할 위치)이 구해지는 것
해시 테이블은 키로부터 해시 함수로 저장할 위치를 계산하여, 평균 O(1)로 탐색·삽입·삭제를 할 수 있는 자료 구조입니다. 키의 종류는 표의 크기보다 훨씬 많으므로, 서로 다른 키가 같은 위치가 되는 것(충돌)은 피할 수 없습니다. 그래서 같은 위치의 원소를 리스트로 잇는 체이닝이나, 비어 있는 다른 위치를 찾는 개방 주소법 등으로 충돌을 처리합니다. 같은 키에서는 반드시 같은 해시값이 구해지지 않으면 탐색을 할 수 없으며, 해시값에서 원래 키를 알 수 있는지는 암호에 사용할 때의 성질로, 충돌과는 별개의 이야기입니다.