Hashing 함수의 종류 및 특징 99135036 컴퓨터 과학과 심형광. I N D E X 1. Hashing 함수 2. Hashing 함수의 종류 3. 참조 자료.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Chapter 04 컴퓨터에서 데이터 표현. 04 컴퓨터에서 데이터 표현 2 인코딩 (encoding) – 현실세계의 정보를 컴퓨터 내부에서 처리할 수 있는 이진수로 변환하는 방법 1. 컴퓨터 속에서 데이터 표현 원리 0 - 아빠 1 - 엄마 00 - 아빠 01 - 엄마.
Ch.08-4 Hashing ( 해싱 ) [CPA340] Algorithms and Practice Youn-Hee Han
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
2.6 탐색(Search) 1. 순차검색 (Sequential Search, Linear Search)
재료수치해석 HW # 박재혁.
Excel 일차 강사 : 박영민.
연결리스트(linked list).
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
Chapter 04 C 연산자의 이해.
8장 직접 화일.
Chapter 02 순환 (Recursion).
9.1 해싱의 정의 및 필요성 9.2 정적 해싱(Static Hashing) 9.3 동적 해싱
5장. 참조 타입.
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
임베디드 실습 # LED, 7’Segment 제어
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
Tail-recursive Function, High-order Function
11장. 1차원 배열.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
인터넷응용프로그래밍 JavaScript(Intro).
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
연산자 (Operator).
CHAP 11 : 해싱.
충돌 해결의 종류 및 특징 최현경.
포인터 1차원 배열과 포인터 2차원 배열과 포인터 문자열 배열과 포인터 포인터 배열
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
해싱 이 현 직
1. 2진 시스템.
Fitting / Matrix / Excel
CHAPTER 02. 정보의 표현 정보 체계_컴퓨터 내부의 정보 표현과 정보 처리
Canary value 스택 가드(Stack Guard).
Excel 일차 강사 : 박영민.
데이터 동적 할당 Collection class.
자료구조론 12장 검색(search).
에어 PHP 입문.
Excel 일차 강사 : 박영민.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 09. 포인터 1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
상관계수.
Numerical Analysis Programming using NRs
제 4 장 Record.
I. 수와 식 1. 유리수와 순환소수.
어서와 C언어는 처음이지 제21장.
 6장. SQL 쿼리.
CHAP 11:해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
7 생성자 함수.
6 객체.
BoardGame 보드게임 따라가기.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Hashing 함수의 종류 및 특징 컴퓨터 과학과 심형광

I N D E X 1. Hashing 함수 2. Hashing 함수의 종류 3. 참조 자료

1. Hashing 함수

Hashing 함수 (1)  Hashing 함수의 정의 - 레코드 키 값을 bucket 의 주소에 대응 시키 는 방법  Hashing 함수의 조건 - 주소 계산이 빨라야 함 - 가급적 결과 값이 중복되어서는 안됨  Hashing 함수의 고려사항 - bucket, hash table, 적재 밀도 등을 고려해 야함

Hashing 함수 (2) Bucket 레코드 키를 저장할 수 있도록 마련된 기억 장소 한 개 또는 여러 레코드 값을 저장할 수 있는 슬롯으로 구성됨 bucket 에 레코드들이 가득차면 overflow 가 발생함

Hashing 함수 (3) Hash Table 레코드의 저장을 위한 자료구조 결과 값을 저장하기 위해서 bucket 들로 구성 된 기억 공간 레코드의 빠른 검색을 위한 수단을 제공 삽입과 삭제가 용이해야함

Hashing 함수 (4) Loading density ( 적재 밀도 ) 저장된 레코드 수 / 공간의 총 용량 레코드 수 / 버킷 수 * 버킷 용량 < 1 높으면 접근 횟수가 증가하고 낮으면 효율이 떨어짐 효율적인 적재밀도는 약 70% 정도임

Hashing 함수 (5) 일반적인 hashing 의 조건 함수의 계산시간이 빨라야 함 모든 주소에 균일한 분포를 가지도록 설정해 야 함

2. Hashing 함수의 종류

Hashing 함수의 종류 Division ( 제산법 ) Mid – Square ( 제곱법 ) Digit Analysis ( 숫자 분석법 ) Shifting ( 이동법 ) Radix Conversion ( 기수 변환법 ) Folding ( 중첩법 ) Pseudo Random ( 난수 생성법 ) Algebraic Coding ( 대수적 코딩 ) 자리수 재배열

2.1 Division (1) 나머지 연산자 (%) 를 사용하여 주소를 계산 어떤 양의 정수 ( 대개는 해시 테이블 크기 ) 로 나눈 나머지를 주소 값으로 이용 특징 가장 간단한 방법 양의 정수 값을 잘못 선택하면 상당한 충돌 을 유발 보통 나누는 값으로 소수를 선택함

2.1 Division (2) Example 레코드 개수 : 4000, 적재 밀도 : 80% 주소 공간 : 5000, Divisor : 5,003 키 값키 값주소 값 이 때 주소 값 중에서 0472 의 값이 중복되 어 충돌이 발생함 ㅡ > 해결이 필요

2.2 Mid – Square (1) 키 값을 제곱한 후에 중간의 몇 자리를 선택 하고 그 중간 값을 주소로 이용 심벌 테이블 응용에 주로 사용됨 키를 구성하는 몇 개의 문자가 동일해도 결 과값은 상이할 수 있음 주소의 범위를 조정할 필요가 있음

2.2 Mid – Square (2) Example 레코드 키 값 k : 해시 테이블 크기 : ( 중간 4 비트 선택 ) 결과 레코드 값 k 의 제곱한 값 k’ : 그 결과값에서 중간 4 자리인 9729 가 주소 값이 됨

2.3 Digit Analysis (1) 각 숫자의 분포를 이용해서 균등한 분포의 숫자를 선택해서 사용 키 값이 알려진 정적 파일에 용이 비교적 간단하지만 삽입과 삭제가 빈번한 경 우는 비효율적임

2.3 Digit Analysis (2) Example 테이블 크기 : 1000 홈 주소 : 0~999(3 자리 ) 결과 : 4, 8, 10 열을 선택 왼쪽 3 자리 숫자는 거의 동일함 ㅡ > 제거 5,6,7,9 열 역시 비슷한 숫자가 많음ㅡ > 무시 비교적 고른 분포인 4,8,10 열 선택ㅡ > 사용

2.4 Shifting (1) 키 값을 중앙을 중심으로 양분 주소길이 만큼 숫자를 이동시켜 해쉬 값을 구한 후 주소 범위에 맞도록 조정함

2.4 Shifting (2) Example 레코드 키 값 k : 주소 공간 : 결과 주소 값으로 6912 를 사용 실제 주소 : 6,912 * 0.5 = 3,456

2.5 Radix Conversion (1) 주어진 키의 값을 다른 진법으로 변환하여 얻은 결과 값을 주소로 사용 초과하는 높은 자리수는 절단함

2.5 Radix Conversion (2) Example (10 진수 ㅡ > 11 진수 ) 키 값 : 주소 공간 : 7000 결과 h(172148) = 여기서 하위 4 자리 6373 을 주소로 사용 실제 주소 : 6373 * 0.7 = 4461

2.6 Folding 마지막 부분을 제외한 모든 부분이 동일하도 록 분할 이들 부분을 모두 더하거나 XOR 을 해서 결 과 값을 주소로 이용 Shifting Folding 방법과 Boundary Folding 방법이 있음

2.6.1 Boundary Folding 키 값을 나눈 후 그 값들의 경계를 중심으로 접어 역으로 정렬한 후 그 값들을 더한 값을 주소로 사용함 자리씩 나누면 P1 : 301, P2 : 230, P3 : 12 가 됨 주소 : P1+P2( 역 )+P3 = = 345 이 값을 주소로 사용함

2.6.2 Shifting Folding 마지막을 제외한 모든 부분을 이동시켜 하위 비트부터 일치 시켜서 계산을 하고 그 결과 값을 주소로 사용함 자리씩 나누면 P1 : 301, P2 : 230, P3 : 12 가 됨 주소 : P1+P2+P3 = = 543 이 값을 주소로 사용함

2.7 Pseudo Random (1) 난수 발생 프로그램을 이용해서 난수를 발생 시켜 그 값을 주소 값으로 이용 보통 난수는 1 보다 작은 값을 사용하고 테이 블 크기 n 과 곱을 하여 0~(n-1) 의 크기로 변 환하여 사용 만일 충돌이 발생하면 다음 난수의 결과 값 을 레코드의 주소로 사용

2.7 Pseudo Random (2) x 는 키의 값을 나타내며 p 는 일반적으로 2 의 n 제곱을 나타냄 y = (ax +c) mod p Example key : 3386, a = 5, c = 1, n = 10 결과 y = ( 5 * ) mod 1024 = 을 주소로 사용함

2.8 Algebraic Coding (1) 키를 이루고 있는 각각의 비트를 다항식의 계수로 하여 이 다항식을 크기로 정한 다항 식으로 나눌 때 얻은 나머지 다항식의 계수 를 주소로 사용함

2.8 Algebraic Coding (2) Example key : 다항식 : x ⁴ + 2x³ + 3x² + 4x + 5 크기 : 100 제수 : x² + 2x + 3 결과 x² x² + 2x + 3 x ⁴ + 2x³ + 3x² + 4x + 5 x ⁴ + 2x³ + 3x² 4x + 5 나머지 4x + 5 의 계수인 45 를 주소로 함

2.9 자리수 재배열 (1) 단순하게 원래의 키 값의 일부분의 자리수 의 값을 추출하여 그 순서를 역으로 한 다 음 그 값을 결과 값으로 사용

2.9 자리수 재배열 (2) Example 키 값 : 주소 공간 : 4 자리 결과 중간의 4567 을 추출하여 역의 값인 7654 를 주소로 사용함

Reference to re/hash/hash1.html