7,,9
#11~
Progressive overflow==선형 조사법(Linear Probing)
평균 검색 거리는 어케 구핟라, 그곳으로 갔을떄, 있더라도 1이던가 있으면 0이 아니라ㅇㅇㅇ
입력넣을때 바로바로 구하는게 빠르나, ㅇㅇㅇ
"중간에 데이터를 삭제(Delete)하는 과정이 없을 때"
확장 해싱 데이터가 계속 늘어날 수 있는 환경에서 주로 사용하는 동적 해싱
Progressive overflow(선형 조사법)는 '크기가 고정된' 해시 테이블을 사용했습니다
해시 함수가 하필 K % 8인 이유가 있습니다.
어떤 수를 8로 나눈 나머지는 0부터 7입니다. 이것을 **이진수(Binary)**로 바꾸면 어떻게 될까요?
- 0 -> 000
- 1 -> 001
- ...
- 7 -> 111
즉, K % 8은 해시값을 딱 3비트(bit)짜리 이진수로 만들어주는 역할을 합니다.
- 디렉토리가 있는 버전: 확장 해싱 (Extensible Hashing)
- 디렉토리가 없는 버전: 선형 해싱 (Linear Hashing)
- 리니어(Linear): 버킷 하나가 넘쳤다고 바로 쪼개는 게 아니라, 임계치를 보고 결정한다.
- 익스텐시블(Extensible): 버킷 크기가 곧 법이다. 넘치는 순간 바로 그 자리를 쪼갠다.
근데 d=0이어도 2**0==1인데 그래서 처음엔 0한개인가 그러면 버킷 크기 10이면 1로 시작하는거 4개있어도 모두 0번 커킷에 들어가나ㅇㅇㅇ
그러면, 000 001 010 011 모두 깊이 2인가 000은 한명인데도 깊이 2인가, 쪼개졋으면 ? 근데 001은 깊이 2인ㄱ가
선형 해싱은 보통 **뒷자리(Suffix)**를 사용하므로, 새로운 비트는 **기존 비트의 왼쪽(앞)**에 추가됩니다
키(2, 3, 5...)를 그대로 이진수로 바꾸면 안 됩니다/ 해시 함수 결과값을 이진수로 바꾼다
시작은 0(또는 1)부터 하는 것이 맞음
Extensible hashing은 linear hashing보다 bucket array의 크기가 많다. (잘못됨)
- 해설: **Linear Hashing(선형 해싱)**은 오버플로우가 발생할 때마다 순차적으로 버킷을 추가(분할)하므로, 실제로 가득 차지 않은 버킷들도 분할되는 경우가 생겨 전체적인 **버킷 수(bucket array의 크기)**가 **Extensible Hashing(확장 해싱)**보다 더 많아지는 경향이 있습니다. (반면 확장 해싱은 디렉터리 크기가 2배씩 증가하는 단점이 있지만, 버킷 자체는 오버플로우가 발생한 것만 분할하므로 더 효율적으로 관리됩니다.)


'26년1학기 > 알고리즘' 카테고리의 다른 글
| 알고리즘) 패턴매칭 (0) | 2026.06.01 |
|---|---|
| 알고리즘)5장,6장,7 (0) | 2026.05.31 |
| 알고리즘 )2장 문풀 (0) | 2026.05.28 |
| 알고리즘 )1장 문풀 (2) | 2026.05.28 |
| 알고리즘) 4장 (0) | 2026.05.27 |