충돌 해결의 종류 및 특징
-
Upload
terrence-quinones -
Category
Documents
-
view
47 -
download
0
description
Transcript of 충돌 해결의 종류 및 특징
![Page 1: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/1.jpg)
충돌 해결의 종류 및 특징
20024345 최현경
![Page 2: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/2.jpg)
충돌해결전략 (collision resolution strategy)
완전해시 (perfect hashing) : 한 개의 데이터 영역에 한 개의 키만이 대입 ->( 일반적 ) 구현불가능
버킷 크기 크게 -> 메모리 용량 낭비 Open addressing( 개방주소법 ) : 오버플로우가 일어났을 때
다른 데이터주소로 다시 해시 시키는 방법 ( 반복 수행 ) Closed addressing( 폐쇄주소법 , 체인법 ) : 같은 데이터 주소
내에서 끝까지 해결을 보는 방법
![Page 3: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/3.jpg)
개방주소법 (Open Addressing) 의 장점
단순 포인터 미사용으로 속도 면에서 큰 이득 (
체인법에서는 사용 ) 별도의 데이터 스트럭쳐 불필요 (ex, linked lis
t)
![Page 4: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/4.jpg)
Linear probing( 선형 검색법 )(1/2)
충돌 해결하는 가장 간단한 방법 충돌시 새 레코드키의 저장 기억공간을 찾기 위해 충돌이
일어난 곳에서부터 차례대로 검색 -> 첫번째 빈 영역에 키 저장 (1 차원 배열 형태 )
빈공간 존재하지 않으면 처음 번지로 돌아감 (원형탐색 )
환치 발생 ( 단점 ) 해시 테이블 구조가 간단 ( 장점 )
![Page 5: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/5.jpg)
Linear probing( 선형 검색법 )(2/2)
89,18,49,58,69 를 일의자리의 숫자만을 취하는 해시함수 사용
![Page 6: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/6.jpg)
Quadratic Probing(2 차 검색법 )(1/2)
제 1 밀집 (primary clustering: 테이블이 상대적으로 비어있어도 한곳에 몰려있는 현상 ) 를 제거하는 방법
원래 주소로부터 다음 주소를 결정하는 거리가 1,4,9,16,... 의 떨어진 거리만큼 차례대로 검색 .
테이블의 크기가 소수여야 함 ( 테이블의 반 정도의 영역만이 탐색가능 ), 아닐 경우 탐색영역 현저히 감소
Ex, if table size = 16, 단지 처음 충돌 일어난 장소에서부터 1,4,9 번째만이 탐색에 사용됨 .
Secondary clustering 발생 ( 단점 ) 같은 위치로 해시된 키들은 그 이후에 탐색하는 위치가
같음을 의미
![Page 7: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/7.jpg)
Quadratic Probing(2/2)
Using Quadratic Probing
![Page 8: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/8.jpg)
무작위 검색법 (Random probing)
충돌을 유발한 키의 저장공간을 찾을 때까지 난수 계산 프로그램을 실행 -> 해시테이블의 홈 주소를 다음 후속 주소로 택함 .
![Page 9: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/9.jpg)
이중해싱 (Double Hashing)
첫번째 해싱함수의 결과에 두번째의 해싱함수를 적용시킴 .
A0=h1( 키 ) A1=A0+h2( 키 ) mod 파일의 크기
재해싱된 주소는 메인 파일의 주소 ( 또는 오버플로우 구역 ) 가 될 수 있다
주의 : 적재인자 (load factor) 가 크다 ( 거의 80%) 이중해싱이 선형조사보다 낫다
![Page 10: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/10.jpg)
폐쇄 주소법 (closed probing)
체인법이라고도 함 (Chaning) 같은 해시값을 갖는 모든 레코드를 리스트로 만들어
관리 장점
충돌을 비교적 쉽게 다룰수 있음 자신만의 linked list 를 가지고 있어 secondary clustering
이라 불리는 데이터의 치우침 현상방지 데이터 영역의 동적 할당
![Page 11: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/11.jpg)
해시 체이닝 (Hash Chanining)
해시 함수에 의해 같은 기억공간에 할당되어 충돌이 발생한 레코드를 연결 리스트로 연결하는 방법
테이블 : 포인터 배열로 만듦 각버켓에 할당되는 레코드들 : 체인으로 연결 . 해시테이블에서의 삽입 , 삭제 연산 용이
충돌횟수 감소 시키지 못하나 다른 방법에 의해 해시테이블을 검색 할때 발생소요시간 감소 가능 .
구조가 복잡 , 기억장소 소모량이 많다 ( 단점 )
![Page 12: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/12.jpg)
Chanining with Coalescing Lists( 동거자 )
대개 버킷과 함께 사용 한 버킷에서 오버플로우가 일어나면 다음의 빈
버킷을 찾아 그곳에 오버플로우된 레코드를 넣음 그쪽과 원래 해시된 버킷을 포인터로 연결 . Load factor 가 증가할수록 검색시간도 증가
![Page 13: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/13.jpg)
Chanining with Separate Overflow Area(독립 오버플로 구역 )
오버플로우된 레코드들을 별도의 오버플로우 지역에 저장하는 방법
데이터 추가삭제가 빈번한 경우 데이터 처리 간단 , 성능 좋음 .
But 오버플로 지역이 prime data area와 다른 실린더에 존재하는 경우에는 검색시간이 급속히 증가
재배치시 부하 줄일수 있음 체계적이면서 쉽게 파일 확장 가능
![Page 14: 충돌 해결의 종류 및 특징](https://reader036.fdocuments.net/reader036/viewer/2022082321/568134c2550346895d9be59e/html5/thumbnails/14.jpg)
Using buckets
버킷의 크기결정 : 시스템의 특성에 의존 ( 버퍼크기 , 디스크의 섹터와 트랙의 용량 , 하드웨어의 액세스 시간 등 )
( 일반적으로 )디스크로부터 한번에 읽어들일 수 있는 클러스터 단위만큼 .
장점 : 평균 검색횟수 줄임 단점 : 해시함수가 적절하지 못할 경우 데이터가
저장이 되지 않은 경우 발생 ( 메모리 낭비 ) 버킷에 따라 데잍가 가득차는 경우와 비는 경우의 불균형을 초래할 수 있음