TIL -python - hashable

0

TIL

목록 보기
5/29
post-thumbnail

<참고한 사항>

hashable에 관해서 설명된 한글 블로그
비교를 통한 hash의 이해

데이터 타입을 공부하다 set는 unhashable(hash함수에 사용 불가) 하다는 내용을 보게 되어 조금 더 검색을 해보기로 했다.

hashable에 관해서 알기 이전에 우선 hashing이라는 개념에 대해서 이해가 필요하다.

hash란?

많은 양의 데이터를 하나의 integer로 변환해주는 알고리즘이다.
사용하는 이유는 많은 양의 데이터를 특정 정수로 조회가 가능해서 효율적인 알고리즘 구성의 필요한 요소이기 때문이다.

예를 들어 {1, 2, 3, 4, ..., 10000}를 조회를 하기 위해서는 1~10000까지 숫자를 집합(set)으로 만들어주는 알고리즘이 필요하다.

만약 이 일련의 과정을 hashing을 통해 한 정수 123490819201(임의의 정수) 에 할당을 했다면
123490819201를 조회하기만 하면 해당 알고리즘을 조회가능한 것이다.
용량, 프로세스 타임에 이득이 많다.

immutable이란?

만약 저 알고리즘에 해당하는 정수가 수정이 되어버리면 어떻게 될까?? 내가 기억하고 있는 정수를 입력하고 해당 알고리즘을 조회하기를 원했는데 조회가 되지 않을 것이다. 따라서
hasing의 대상은 immutable (수정불가능) 해야 한다. 그 이유는 특정 알고리즘을 찾는 방법으로 한 가지의 정수를 찾는데 만약 그 정수가 변한다면 찾고자 하는 *그* 알고리즘을 찾을 수 없어 길을 잃게 될 것이다.

앞서 예를 든 알고리즘에 해당하는 숫자가 만약 수정이 가능해져 123490819201(임의의 정수)--> 1234567890로 바뀌었다고 할 때,이 바꾼 사실을 모르는 누군가는 기존 처럼 123490819201(임의의 정수)로 조회를 하였는데 찾고자 하는 1~10000까지의 set를 찾는 알고리즘은 찾을 수 없을 것이다.

특정 integer를 통해 향후 동일한 알고리즘을 얻기 위해서는 그 정수가 변하지 말아야 하는 것이다.

profile
기록을 통해 한 걸음씩 성장ing!

0개의 댓글