해시 테이블
- 키와 값으로 구성된 검색 시스템. 모든 키에 대응하는 값이 있다.
- 요소를 검색할 때 시간 복잡도가 O(I)이다.
- 해시 충돌
- 해시값과 배열 크기 때문에 서로 다른 입력2개가 같은 해시값을 생성할 때 발생
- 발생을 방지하기 위해 '체이닝(chaining)'방식으로 해시테이블을 구현한다.
체이닝(Chaining)
- 요소를 단순한 배열이 아닌 연결 리스트인 배열에 저장하는 방식.
- 즉, 해시 함수가 여러 요소에 대해 똑같은 인덱스를 반환할 경우, 해시값과 해당요소들을 함께 연결하여 해시테이블의 같은 인덱스에 저장한다.
- 연결리스트가 길어졌을 때 테이블 검색의 시간복잡도가 증가할 수 있다.
☞ 해싱은 컴퓨터 보안 영역에서 주로 사용된다.
- 디지털 서명이나 사용자 인증 등에 사용된다.
- 양방향(암호화, 복호화)인 암호화와 달리 해싱은 단방향 과정이다.
- 단방향의 1대1함수이므로 비밀번호를 사용하는 보안에 적합하다.(비밀번호 생성 시 DB에 해시값으로 저장)
참고1 : <코드없는 알고리즘과 데이터구조>
Hash, Hashing, Hash Table(해시, 해싱 해시테이블) 자료구조의 이해
0_HJVxQPQ-eW0Exx7M.jpeg DATA들이 사용하기 쉽게 정리되어 있다. 자료구조는 도대체 무엇일까? 자료구조(Data-Structure)는 데이터들의 모임, 관계, 함수, 명령 등의 집합을 의미한다. 더 쉽게 표현하자면, 1)
velog.io
'Backend > Algorithm & Data structure' 카테고리의 다른 글
선형 및 이진탐색 (0) | 2022.02.17 |
---|---|
그래프 (0) | 2022.02.15 |
트리 구조 (0) | 2022.02.12 |
Stack & Queue (0) | 2022.01.12 |
빅오(big-O) 표기법 (0) | 2022.01.11 |