본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/자료구조

체이닝 (Chaining)

by 미노드 2023. 8. 7.

해시를 공부하다가 접한 문제인데,
해시는 사실상 배열 한 개에 요소가 추가되어서 만들어지는 것입니다.

체이닝은 이 배열의 위치마다 새로운 자료구조를 만들어 수많은 데이터를 수용할 수 있도록 만들어 줍니다.

체이닝

충돌을 피하기 위해 체인을 사용하는 방법이 있습니다
체인을 만들기 위해 우선 배열을 만들고 그 위치마다 리스트를 만들어 줍니다.

[{ob1-1:dd,ob1-2:dd....}, {ob2-1:dd, ob2-2:dd....}, {ob3-1:dd, ob3-2:dd...}...] 이런느낌


위 그림과 같이 배열마다 리스트를 만들어주고, 자리가 찰때마다 add를 해줄 수 있습니다.

이렇게 체이닝을 하면 수용가능한 요소 개수에 제한이 없어지고 크기 조정도 자주 할 필요가 없어집니다.

적재율 λ는 항목의 개수를 가능한 체인 개수로 나눈 값입니다.
체인 1개에 여러 항목을 넣을 수 있어 λ는 1보다 큰 수가 될 수 있습니다.

하지만 주의해야 할 점은 hashCode가 같은 숫자만 반환하여 하나의 체인이 너무 길어지면 결국 연결 리스트와 시간 복잡도가 같아지는 문제가 생길 수 있습니다.

'IT기술 > 자료구조' 카테고리의 다른 글

kafak 역할 공부, 링크공유  (0) 2023.12.08
재해싱  (0) 2023.08.07
MQ (Message queue)란 무엇인가?  (0) 2023.08.03
자료구조론 -- 백석대학교  (0) 2023.05.17
[MQ] IBM MQ 구성  (0) 2023.04.20