해시 테이블 자료구조

2023. 3. 27. 19:11·Algorithm
반응형

해시 테이블(Hash Table)


키(Key), 값(Value)을 대응시켜 저장하는 데이터 구조
-키를 통해 해당 데이터에 빠르게 접근 가능


해싱
-키를 특정 계산식에 넣어 나온 결과를 사용하여 값에 접근하는 과정

해시 테이블 구조
키 : 해시 테이블 접근을 위한 입력 값
해시 함수 : 키를 해시 값으로 매핑하는 연산
해시 값 : 해시 테이블의 인덱스
해시 테이블 : 키 - 값을 연관시켜 저장하는 데이터 구조

해시 충돌
해시 테이블의 같은 공간에 서로 다른 값을 저장 하려는 경우
- 서로 다른 키의 해시 함수를 통한 해시 값이 동일한 경우
해시 충돌 해결 방법으로는 크게 개방 주소법과 분리 연결법이 있음

해시 충돌 해결 방법(1)


개방 주소법(Open Address)
-충돌 시, 테이블에서 비어 있는 공간의 hash를 찾아 데이터를 저장
-hash와 value가 1:1 관계 유지
-비어 있는 공간 탐색 방법에 따라 분류
-선형 탐사법, 제곱 탐사법, 이중해싱

개방 주소법 - 선형 탐사법
Linear Probing
빈 공간을 순차적으로 탐사하는 방법
- 충돌 발생 지점부터 이후의 빈 공간을 순서대로 탐사
일차 군집화 문제 발생
-반복된 충돌 발생 시 해당 지점 주변에 데이터가 몰리는 경우 발생 

개방 주소법 - 제곱 탐사법
Quadratic Probing
빈 공간을 n 제곱 만큼의 간격을 두고 탐사하는 방법
충돌 발생 지점부터 이후의 빈 공간을 n 제곱 간격으로 탐사
일차 군집화 문제 일부 보완
이차 군집화 문제 발생 가능성

개방 주소법 - 이중 해싱
Double Hashing
해싱 함수를 이중으로 사용
- 해시 함수 1 :  최초 해시를 구할 때 사용
- 해시 함수 2 : 충돌 발생 시, 탐사 이동 간격을 구할 때 사용
선형 탐사, 제곱 탐사에 비해 데이터가 골고루 분포됨



해시 충돌 해결 방법(2)

분리 연결법(Seperate Chaining)
- 해시 테이블을 연결 리스트로 구성
- 충돌 발생 시, 테이블 내의 다른 위치를 탐새하는 것이 아닌
연결 리스트를 이용하여 해당 테이블에 데이터를 연결

반응형

'Algorithm' 카테고리의 다른 글

이진 탐색 트리 자료구조  (1) 2023.03.28
트리  (0) 2023.03.27
Queue 자료구조  (0) 2023.03.27
List 자료구조  (0) 2023.03.24
자료구조 정리  (0) 2023.03.24
'Algorithm' 카테고리의 다른 글
  • 이진 탐색 트리 자료구조
  • 트리
  • Queue 자료구조
  • List 자료구조
JAVALA
JAVALA
워니‘s Diary
    반응형
  • JAVALA
    정신줄 JAVA라
    JAVALA
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • Codding_Test (11)
        • BaekJoon (7)
        • Programmers (3)
      • Algorithm (11)
      • Daily (4)
        • memoir (4)
      • Error (7)
        • InteliJ (1)
        • eclipse (0)
      • Computer Science (1)
      • JAVA (7)
      • Javascript (0)
      • Spring Boot (7)
      • API (2)
      • Server (0)
      • DB (2)
        • ORACLE (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바 클래스
    자바
    자바 스프링
    springboot
    자바 스프링부트
    코딩테스트
    개발자 비전공자
    제로베이스
    개발자 부트캠프
    자바 메소드
    자바 알고리즘
    spring boot
    스프링부트
    백준
    백엔드 개발자
    개발자
    트리 자료구조
    프로그래머스
    개발자 국비
    프론트엔드 개발자
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
JAVALA
해시 테이블 자료구조
상단으로

티스토리툴바