Hash Table의 구조와 원리

 안녕하세요. 알렉스 입니다. 이번에는 Hash Table에 대해서 설명을 드리도록 하겠습니다.





 일단 사과(apple)상자를 어느 구역에 넣을건지를 결정해야 합니다. 물론 표를 만들어 기록하고 넣을수도 있지만 여기서는 Hash Table 방법으로 두기로 하겠습니다.





 중요한 점은 apple와 구역사이에 작업이 있어야 합니다. 즉 apple와 구역이 어떻게든 연관이 되어 있다는 뜻입니다.



 일단 알파벳(소문자)을 숫자로 치환한 표입니다. 이 표는 ASCII코드표중 소문자 부분만 참고했습니다. 따라서 소문자 알파벳 뿐만 아니라 넓게 숫자, 특수문자 등도 표를 확장할수 있습니다. 하지만 여기서는 Hash Tag의 원리를 파악하는 것이므로 소문자 알파벳으로 제한하겠습니다.





 위 사진은 본격적으로 apple을 숫자로 변환하는 방법을 보여주고 있습니다. 각 알파벳에 대응하는 숫자를 더한 총합을 구역의 갯수, 여기서는 4를 나눈 나머지값의 구역에 넣으면 됩니다.

 사실 apple외 숫자로 변환할수 있는 어떠한 문자가 들어와도 4로 나누면 0,1,2,3 요 4개중에 하나로 들어갑니다. 이유는 4로 나눌때 나머지는 4보다 같거나 클수 없기 때문입니다. 4보다 크면 또 나누면 되기 때문입니다.






이제 저는 숫자 2를 갖고 2구역으로 사과 상자를 들고 갑니다.




이제 사과 상자 뿐만 아니라 멜론, 망고, 토마토, 바나나 상자들도 Hash Tag 계산 방법을 이용해서 넣을수 있습니다. 





 그런데 50년이 흐른후 제가 사과상자를 찾으려고 했는데 기억이 나지 않았습니다. 제가 갖고 있는것은 '알파벳 기호 표'입니다. 

 50년전에 사과상자의 Hash Tag를 계산한 방법과 같이 똑같이 계산해서 사과상자가 있는 구역을 파악합니다.



 물론 Hash Tag방법을 이용하여 같은 구역에 다른 과일이 있을수 있습니다. 여기서도 검색을 해야하지만 다른 주제이므로 넘어가도록 하겠습니다.


아래는 JavaScript코드 입니다. 참고 부탁드립니다.








댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)