충돌 해결의 종류 및 특징

14
충충 충충충 충충 충 충충 20024345 충충충

Upload: terrence-quinones

Post on 02-Jan-2016

46 views

Category:

Documents


0 download

DESCRIPTION

충돌 해결의 종류 및 특징. 20024345 최현경. 충돌해결전략 (collision resolution strategy). 완전해시 (perfect hashing) : 한 개의 데이터 영역에 한 개의 키만이 대입 ->( 일반적 ) 구현불가능 버킷 크기 크게 -> 메모리 용량 낭비 Open addressing( 개방주소법 ) : 오버플로우가 일어났을 때 다른 데이터주소로 다시 해시 시키는 방법 ( 반복 수행 ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 충돌 해결의 종류 및 특징

충돌 해결의 종류 및 특징

20024345 최현경

Page 2: 충돌 해결의 종류 및 특징

충돌해결전략 (collision resolution strategy)

완전해시 (perfect hashing) : 한 개의 데이터 영역에 한 개의 키만이 대입 ->( 일반적 ) 구현불가능

버킷 크기 크게 -> 메모리 용량 낭비 Open addressing( 개방주소법 ) : 오버플로우가 일어났을 때

다른 데이터주소로 다시 해시 시키는 방법 ( 반복 수행 ) Closed addressing( 폐쇄주소법 , 체인법 ) : 같은 데이터 주소

내에서 끝까지 해결을 보는 방법

Page 3: 충돌 해결의 종류 및 특징

개방주소법 (Open Addressing) 의 장점

단순 포인터 미사용으로 속도 면에서 큰 이득 (

체인법에서는 사용 ) 별도의 데이터 스트럭쳐 불필요 (ex, linked lis

t)

Page 4: 충돌 해결의 종류 및 특징

Linear probing( 선형 검색법 )(1/2)

충돌 해결하는 가장 간단한 방법 충돌시 새 레코드키의 저장 기억공간을 찾기 위해 충돌이

일어난 곳에서부터 차례대로 검색 -> 첫번째 빈 영역에 키 저장 (1 차원 배열 형태 )

빈공간 존재하지 않으면 처음 번지로 돌아감 (원형탐색 )

환치 발생 ( 단점 ) 해시 테이블 구조가 간단 ( 장점 )

Page 5: 충돌 해결의 종류 및 특징

Linear probing( 선형 검색법 )(2/2)

89,18,49,58,69 를 일의자리의 숫자만을 취하는 해시함수 사용

Page 6: 충돌 해결의 종류 및 특징

Quadratic Probing(2 차 검색법 )(1/2)

제 1 밀집 (primary clustering: 테이블이 상대적으로 비어있어도 한곳에 몰려있는 현상 ) 를 제거하는 방법

원래 주소로부터 다음 주소를 결정하는 거리가 1,4,9,16,... 의 떨어진 거리만큼 차례대로 검색 .

테이블의 크기가 소수여야 함 ( 테이블의 반 정도의 영역만이 탐색가능 ), 아닐 경우 탐색영역 현저히 감소

Ex, if table size = 16, 단지 처음 충돌 일어난 장소에서부터 1,4,9 번째만이 탐색에 사용됨 .

Secondary clustering 발생 ( 단점 ) 같은 위치로 해시된 키들은 그 이후에 탐색하는 위치가

같음을 의미

Page 7: 충돌 해결의 종류 및 특징

Quadratic Probing(2/2)

Using Quadratic Probing

Page 8: 충돌 해결의 종류 및 특징

무작위 검색법 (Random probing)

충돌을 유발한 키의 저장공간을 찾을 때까지 난수 계산 프로그램을 실행 -> 해시테이블의 홈 주소를 다음 후속 주소로 택함 .

Page 9: 충돌 해결의 종류 및 특징

이중해싱 (Double Hashing)

첫번째 해싱함수의 결과에 두번째의 해싱함수를 적용시킴 .

A0=h1( 키 ) A1=A0+h2( 키 ) mod 파일의 크기

재해싱된 주소는 메인 파일의 주소 ( 또는 오버플로우 구역 ) 가 될 수 있다

주의 : 적재인자 (load factor) 가 크다 ( 거의 80%) 이중해싱이 선형조사보다 낫다

Page 10: 충돌 해결의 종류 및 특징

폐쇄 주소법 (closed probing)

체인법이라고도 함 (Chaning) 같은 해시값을 갖는 모든 레코드를 리스트로 만들어

관리 장점

충돌을 비교적 쉽게 다룰수 있음 자신만의 linked list 를 가지고 있어 secondary clustering

이라 불리는 데이터의 치우침 현상방지 데이터 영역의 동적 할당

Page 11: 충돌 해결의 종류 및 특징

해시 체이닝 (Hash Chanining)

해시 함수에 의해 같은 기억공간에 할당되어 충돌이 발생한 레코드를 연결 리스트로 연결하는 방법

테이블 : 포인터 배열로 만듦 각버켓에 할당되는 레코드들 : 체인으로 연결 . 해시테이블에서의 삽입 , 삭제 연산 용이

충돌횟수 감소 시키지 못하나 다른 방법에 의해 해시테이블을 검색 할때 발생소요시간 감소 가능 .

구조가 복잡 , 기억장소 소모량이 많다 ( 단점 )

Page 12: 충돌 해결의 종류 및 특징

Chanining with Coalescing Lists( 동거자 )

대개 버킷과 함께 사용 한 버킷에서 오버플로우가 일어나면 다음의 빈

버킷을 찾아 그곳에 오버플로우된 레코드를 넣음 그쪽과 원래 해시된 버킷을 포인터로 연결 . Load factor 가 증가할수록 검색시간도 증가

Page 13: 충돌 해결의 종류 및 특징

Chanining with Separate Overflow Area(독립 오버플로 구역 )

오버플로우된 레코드들을 별도의 오버플로우 지역에 저장하는 방법

데이터 추가삭제가 빈번한 경우 데이터 처리 간단 , 성능 좋음 .

But 오버플로 지역이 prime data area와 다른 실린더에 존재하는 경우에는 검색시간이 급속히 증가

재배치시 부하 줄일수 있음 체계적이면서 쉽게 파일 확장 가능

Page 14: 충돌 해결의 종류 및 특징

Using buckets

버킷의 크기결정 : 시스템의 특성에 의존 ( 버퍼크기 , 디스크의 섹터와 트랙의 용량 , 하드웨어의 액세스 시간 등 )

( 일반적으로 )디스크로부터 한번에 읽어들일 수 있는 클러스터 단위만큼 .

장점 : 평균 검색횟수 줄임 단점 : 해시함수가 적절하지 못할 경우 데이터가

저장이 되지 않은 경우 발생 ( 메모리 낭비 ) 버킷에 따라 데잍가 가득차는 경우와 비는 경우의 불균형을 초래할 수 있음