해쉬함수 충돌해결법과 특징 강원대학교 컴퓨터과학과 이해원.

Slides:



Advertisements
Similar presentations
연천 새둥지마을 체재형 주말농장 준공식 초청장 오시는 길 주제 일시 장소 21C 경기농촌희망심기 2005년 제1기 교육수료마을
Advertisements

출석수업 자료 교과서 범위: 제1장-4장.
10월 충북노회 남선교회 순회 헌신예배 묵 도 기 도 성 경 봉 독 특 송 찬 양 설 교 찬양 / 봉헌 봉 헌 기 도
패널자료 분석
라오디게아 교회의 교훈 본문 계 3: ○라오디게아 교회의 사자에게 편지하라 아멘이시요 충성되고 참된 증인이시요 하나님의 창조의 근본이신 이가 이르시되 15. 내가 네 행위를 아노니 네가 차지도 아니하고 뜨겁지도 아니하도다 네가 차든지 뜨겁든지 하기를 원하노라.
한알Ⅱ「더불어 살기」전국대회 일정표 날짜 시간 7월 26일(목) 7월 27일(금) 7월 28일(토) 7월 29일(일)
2013학년도 전라북도고등학교신입생 입학전형 기본계획
선거관리위원회 위원 공개모집 4차 공고 제4기 선거관리위원회를 구성하는 위원 모집의
2015학년도 1학기 버디 프로그램 오리엔테이션 (목) 16:00.
2009학년도 가톨릭대학교 입학안내.
다문화가정의 가정폭력의 문제점 연세대학교 행정대학원 정치행정리더십 2학기 학번 이름 홍 진옥.
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
◆ 지난주 반별 출석 보기 ◆ 제 56 권 26호 년 6월 26일 반 선생님 친구들 재적 출석 5세 화평 김성희 선생님
第1篇 자치입법 개론.
교직원 성희롱·성폭력·성매매 예방교육 벌교중앙초등학교 박명희
임상시험 규정 (최근 변경 사항 중심으로) -QCRC 보수 교육 과정 전달 교육
서울특별시 특별사법경찰 수사 송치서류 유의사항 서울특별시 특별사법경찰과 북부수사팀장 안   진.
특수학교용 아동학대! 제대로 알고 대처합시다..
학교보건 운영의 실제 한천초등학교 이 채 금.
Digital BibleⅢ 폰속의 성경 디지털 바이블 2008년 12월 ㈜씨엔커뮤니케이션 ㈜씨엔엠브이엔오.
성 김대건 피츠버그 한인 성당 그리스도왕 대축일 공지사항
예배에 대하여.
말씀 듣는 시간입니다..
하나님은 영이시니 예배하는 자가 신령과 진정으로 예배할지니라.
지금 나에게 주신 레마인 말씀 히브리서 13장 8절.
예수의 제자들 담당교수 : 김동욱.
Lecture Part IV: Ecclesiology
KAINOS 날마다 더하여지는 Kainos News 이번 주 찬양 20 / 300 – 20개의 셀, 300명의 영혼
예배의 외부적인 틀II - 예배 음악 조광현.
영성기도회 렉시오 디비나와 묵상기도 2.
성인 1부 성경 공부 지도목사: 신정우 목사 부 장: 오중환 집사 2010년. 5월 9일
남북 탑승객 150명을 태운 디젤기관차가 2007년 5월 17일 오전 경의선 철길을 따라 남측 최북단 역인 도라산역 인근 통문을 통과하고 있다. /문산=사진공동취재단.
성경 암송 대회 한일교회 고등부 (일).
여수시 MICE 산업 활성화 전략 ( 중간보고 )
1. 단위사업 관리, 예산관리 사업설정 (교직원협의/의견수렴) 정책 사업 학교 정책 사업 등록 사업 기본정보 목표 설정
※과정 수료자에 한하여 수강료의 80~100% 차등 환급함
평생학습중심대학 프로그램 수강지원서 접수안내 오시는 길 관악구&구로구민을 위한 서울대학교 -- 접수 일정 및 방법 안내--
서비스산업의 선진화, 무엇이 필요한가? 김 주 훈 한 국 개 발 연 구 원.
기존에 없던 창업을 하고 싶은데, 누구의 도움을 받아야 할지 모르겠어요
Homeplus 일 家 양 득 프로그램 소개 2015년 12월.
Home Network 유동관.
통신이론 제 1 장 : 신호의 표현 2015 (1학기).
I. 기업과 혁신.

화장품 CGMP 한국콜마㈜.
초화류 종자 시장 규모 100억원 이상(추정, 생산액의 10%정도 차지)
COMPUTER ARCHITECTIRE
[ 한옥 실측 ] 1. 약실측 2. 정밀실측 조선건축사사무소.
14. 컴파일러 자동화 도구 스캐너 생성기 파서 생성기 코드 생성의 자동화
A제조용수/B환경관리/C시설관리 ㈜ 에이플러스 코리아
XML 개요 ㅎㅎ 기존 마크업 언어와 XML XML 필요성과 적용 분야 XML 관련 표준 XML 사용 환경 XML 개발 환경
14 장 근거리통신망 : 이더넷(Ethernet)
제14장 스팸 메일 대응 기술.
독성물질의 투여 방법 생체내 시험 시험관내 시험
한 퍼 놀 이 즐 자.
‘2016 원대로 전공체험’ 예산 및 진행 관련 담당조교 OT
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table.
해싱(hashing) Ref. C로 쉽게 풀어쓴 자료구조, 생능출판사, 2005.
CHAP 11: 해싱 순천향대학교 하상호.
CHAP 11: 해싱 순천향대학교 하상호.
CHAP 11 : 해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
해시와 해시 함수.
7장. 해시 테이블Hash Table.
CHAP 11 : 해싱.
CHAP 11 : 해싱.
사회복지사 보수교육 (사회복지행정실무) 경상남도사회복지사협회.
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
제 8 장 계산복잡도 개론 검색 문제 알고리즘 강의 슬라이드 8 검색 문제
인간관계 맥을 짚어라 (휴먼네트워크 노하우 10계명)
Presentation transcript:

해쉬함수 충돌해결법과 특징 강원대학교 컴퓨터과학과 이해원

충돌 전화번호 키 445-3800이라는 전화번호를 키로 하는 레코드 키 자체를 인덱스로 하여 이 레코드를 T[4453800]에 저장 이 경우의 해쉬 함수는 자체 매핑(Identity Mapping) 메모리 크기는 제한적이므로 배열 인덱스의 범위를 줄일 필요가 있음. 같은 동네라면 국을 생략 T[3800]에 저장. 이 경우 해쉬 함수는 4453800에서 3800으로 가는 매핑. 스트리핑(Stripping) 메모리 크기 인덱스 0...999로 매핑. 전화번호의 처음 네 자리를 떼어버리면 T[800]에 445-3800 이나 445-7800이나 모두 동일한 인덱스로 매핑 충돌(Collision) 서로 다른 키에 해쉬 함수를 가한 결과 동일한 인덱스로 매핑 되는 현상 메모리에 여유 공간이 있음에도 불구하고, 해쉬 함수 자체의 특성으로 인해 발생

충돌 해결방법 충돌 어떤 해쉬 함수를 사용하든 피해갈 수 없는 문제 해결책(Collision Resolution)이 필요. 열린 어드레싱(Open Addressing) 충돌이 일어나면 자기 자리가 아닌 곳으로 들어갈 수 있도록 허용 다른 키를 가진 레코드가 해쉬 되어 들어가야 할 자리까지도 오픈 선형탐사, 제곱탐사, 이중해쉬 닫힌 어드레싱(Closed Addressing) 자기자리가 아니면 절대로 못 들어가게 함 버켓, 별도 체인

선형탐사 선형탐사(Linear Probing) 충돌이 일어나면 그 다음 빈 곳 T[h(KEY)]가 점유되어 있을 때,  T[h(KEY) + 1],  T[h(KEY) + 2], ... 의 순서로 빈 곳이 있을 때까지 찾아감. 배열의 끝을 만나면 다시 처음으로 되돌아와서 거기서부터 빈자리를 찾음 h(key) = h % 31

선형탐사의 태그 필요성 65, 34, 127까지 들어간 상태에서 키 34인 레코드를 삭제. 인덱스 4의 위치는 빈칸 이후, 키 127을 가진 레코드를 탐색시, 인덱스 4가 “빈칸이니 찾는 레코드가 없다”라고 결론지을 수는 없음. 인덱스 5에 찾는 레코드가 있기 때문. 배열 아이템을 세 가지 상태로 분류 사용 중(Occupied), 삭제 됨(Deleted), 미 사용(Empty) 탐색도중 미 사용 칸을 만나면 탐색을 중지하고 찾는 레코드가 없다고 결론 탐색도중 삭제됨 칸을 만나면 탐색을 계속함.

클러스터 현상 선형탐사의 최대 단점 클러스터(Cluster, 군집, 群集) 현상 선형탐사의 클러스터는 1차 클러스터(Primary Cluster) 클러스터 = 레코드가 분산되지 않고 떼 지어 몰려다님 키 34인 레코드는 사실상 34 % 31 = 3에 들어가야 할 레코드가 오른쪽에 밀린 것이고, 키 127인 레코드도 사실은 127 % 31 = 3에 들어가야 하는 레코드.

제곱탐사 제곱 탐사(Quadratic Probing) 충돌이 일어날 때 바로 그 뒤에 넣지 않고 조금 간격을 두고 삽입 T[h(KEY)]가 점유되어 있을 때, T[h(KEY) + 1],  T[h(KEY) + 2], T[h(KEY) + 3], ... 의 순서로 제곱 간격을 두고 빈 곳을 찾아감. 정확하게는  T[h(KEY) + 1] % M이 다음 찾을 인덱스 위치 65, 34, 127의 삽입 h(key) = h % 31 65인 레코드가 인덱스 3으로 들어감. 키 34인 레코드가 인덱스 3으로 해쉬 어 충돌. 1의 제곱은 1이므로 이 레코드는 인덱스 4로 키 127인 레코드가 역시 인덱스 3으로 해쉬됨. 이후 4, 7, 2 순으로 탐사

제곱탐사의 빈칸

이중해쉬 이중 해쉬(Double Hash) 제곱탐사의 단점인 2차 클러스터를 방지 선형 탐색과 제곱탐색에서의 탐사 순서가 키 값과는 무관하게 규칙적 키 값에 따라서 탐사순서를 달리함으로써 탐사순서의 규칙성을 제거 두 개의 해쉬 함수 h1, h2를 사용 h1은 주어진 키로부터 인덱스를 계산하는 해쉬 함수 h2는 충돌 시 탐색할 인덱스의 간격(Step Size)을 의미

이중해쉬 h1 = KEY % 13, h2 = 1 + KEY %  11 키 14인 레코드의 삽입 14 % 13 = 1에서 충돌. (1 + (14 % 11)) = 4를 간격으로 탐사 순서는 1, 5, 9, 0으로 진행. 인덱스 0에서 빈 곳을 찾았으므로 거기에 삽입 키 27인 레코드의 삽입 27 % 13 = 1. (1 + (27 % 11)) = 6. 탐사 순서는 1, 7, 0, 6 인덱스 6에 삽입 키 18인 레코드의 검색 18 % 13 = 5. (1 + (18%11)) = 8. 탐사 순서 5, 0, 인덱스 0에서 빈 곳이므로 그런 레코드 없다고 결론. h2 함수의 선택 어떤 키에 대해서도 h2의 결과는 0이 되어서는 안 됨. 0이면 계속 같은 자리에서 찾는 꼴 h1과 동일한 함수여서는 안됨. 모든 키에 대해서 간격이 같아지기 때문. 2차 클러스터를 제거. 그러나 두 개의 해쉬 함수를 계산해 내는데 따른 시간적 손실을 전제로 함.

선형탐사, 이중해쉬 선형탐사, 이중해쉬 부하율 50% 66% 75% 90% 선형탐사 탐색 1.5 2.0 3.0 5.5 삽입   부하율 50% 66% 75% 90% 선형탐사 탐색 1.5 2.0 3.0 5.5 삽입 2.5 5.0 8.5 55.5 이중 해쉬 1.4 1.6 1.8 2.6

닫힌 어드레싱 버켓 별도체인

버켓 버켓(Bucket) 배열 요소가 다시 여러 개의 요소로 이루어짐 이 경우 자료구조는 배열의 배열(Array of Array)로서 2차원 배열 충돌되는 레코드를 하나의 인덱스 안에 둘 수는 있음 해당 인덱스로 가서 다시 키가 일치하는 레코드를 찾아야 하는 시간적 부담 사용되지 않는 배열 공간이 낭비됨.

별도 체인 별도 체인(Separate Chaining) 배열 요소가 연결 리스트를 가리키는 헤드 일명 분산 테이블(Scatter Table) 충돌이 일어날 때마다 해당 레코드를 연결 리스트의 첫 위치에 삽입 동적 구조(Dynamic Structure)

별도 체인 별도 체인의 효율 체인의 길이에 비례 평균적으로 체인 길이는 부하율(N/M)과 동일 부하율 λ일 때 별도 체인에서의 평균 키 비교회수는 (1 + λ/2) 부하율 1 이하의 별도 체인에서는 상수시간 삽입 및 검색이 가능 노드 공간을 할당하는 함수를 불러야 하는 시간, 포인터를 따라가는 시간, 포인터 변수 자체가 차지하는 공간을 요함 버켓과 별도 체인 닫힌 어드레싱 해쉬 된 인덱스 안에서 다시 배열이나 연결 리스트 등의 또 다른 자료구조를 사용함으로써 충돌을 해결

감사 합니다.

유니버설 해쉬 좋은 해쉬 함수 레코드를 메모리 공간에 골고루 분포시킴으로써 충돌을 최소화 입력 데이터 패턴과 무관하게 이러한 특성을 보여야 함. 그러나 실제로 이런 함수를 만들기가 어려움 유니버설 해쉬 다양한 해쉬 함수를 준비해 놓고 선택적으로 사용 해쉬 함수의 선택은 랜덤(Random)하게 이루어 짐. 응용 프로그램이 시작할 때 하나를 골라서 끝날 때까지 사용 유니버설(Universal, 보편적) 테이블 크기 M일 때, 서로 다른 키가 같은 인덱스로 매핑 될 확률이 1/M 이하인 해쉬함수

재 해쉬 재 해쉬(再 해쉬, Rehash) 삽입이 계속되면 부하율이 일정 한계를 넘음 부하율을 낮추는 테이블 크기 M을 키우는 것. 힙 공간에 동적 배열 생성 한꺼번에 기존 테이블의 2 배 크기의 배열을 생성 이전 데이터를 복사 재 해쉬를 가하는 시기 테이블이 반 정도 찰 때 부하율이 미리 정해진 어떤 값을 넘을 때 삽입이 실패할 때