자료구조
HashTable
Key 값에 해싱된 Value를 저장하는 데이터 구조.
Hash
Hash는 일방향 함수이다. 어떤 동일한 값을 함수에 매개변수로 넘긴다면 정해진 하나의 해쉬 값을 도출한다. 하지만 그 역은 구할 수 없다.
Hash 충돌
만약 해쉬 값을 Boolean 자료형으로 한다면 해쉬 값은 50%의 확률로 겹칠 것이다. 이러한 상황을 해쉬 충돌이라 한다.
완전한 해시 함수
어떤 hash 함수가 충돌없이 1:1대응을 할 수 있다면 이를 완전한 해시 함수라 한다.
충돌 극복 방법
1.Open Address
이 방법은 만일 해쉬 충돌이 생긴다면 그 다음 주소에 해당 값을 저장하는 방식으로 사용된다. 하지만 remove 기능을 효율적으로 구현하기 어려운 문제가 생긴다.
2.Separate Chaining
이 방법은 해쉬 충돌이 생길 상황을 대비해 해당 주소에 Linked List를 통해 여러개의 값을 담을 수 있다. JAVA는 기존에 Linked List를 통해서만 이를 구현했지만 이 List가 길어질 상황에 Tree 자료구조로 변경하여 구현하는 방법을 사용하고 있다.
'Study > CS' 카테고리의 다른 글
[Network] HTTP 통신은 Stateless가 맞을까? (2) | 2022.08.21 |
---|---|
[Linux] 가상화 (0) | 2022.08.09 |
[CS] 객체 지향 (0) | 2022.07.02 |
[문자열] 문자(아스키코드-asciicode, 유니코드-unicode)와 인코딩(utf-8, base64) (0) | 2022.05.25 |
[자료구조] 우선순위큐(Priority Queue)에 사용되는 Heap 자료구조 (0) | 2021.10.25 |