ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [n531] 해쉬 테이블
    AI 부트캠프 2022. 2. 4. 10:43

    해시 테이블이란 무엇인가

    • 해시 테이블 : 키를 이용하여 데이터 값에 접근이 가능한 구조를 의미한다. 
    • 해시 함수 : 키에 따라 특정 해시값이 나올 수 있도록 매칭하는 함수이다.
    • 해시 : 이 해시 함수에 키를 넣었을 때 나오는 값이다.
    • 해싱 : 검색을 하기 위해 어떤 자료 구조를 해시화 한다. 
    • 해싱을 하면 키를 통해 값을 검색하기 때문에 데이터 양이 많아도 성능이 빠르다. 
    • 예를 들어, 파이썬의 딕셔너리는 해시테이블 개념을 바탕으로 구현되어 있다. 
    • 해시 테이블은 시간 복잡도가 O(1)로, 하나의 키를 통해 하나의 값이 한번에 나오기 때문에 검색/삽입/삭제가 유용하다.

    중간에 해시 함수를 통해 키와 값이 서로 매칭되는 것을 확인할 수 있다. 즉, 동일한 입력값에 동일한 출력값을 매번 출력해야 한다. 

    for key in dict.keys():
      print(dict[key])
    
    for key, value in dict.items():
      print('(키',key,':','값',value,')')

     

     

    해시 충돌

    해시가 들어가는 공간이 작은 경우 충돌이 일어날 수 있다. 

     

    충돌 방지 방법 (1). Chaining

    아래의 경우, John Smith와 Sandra Dee를 넣었을 때 충돌이 일어난다. 이 충돌을 방지하기 위해, 연결 리스트를 활용하여 John Smith의 엔트리와 Sandra Dee의 엔트리를 연결한다. 즉, 키와 해시값을 계산을 했을 때 같은 해시값이 존재한다면 충돌이 일어나므로 리스트로 연결한다. 

     

    충돌 방지 방법 (2). Open Addressing

    비어 있는 공간을 발견할 때까지 계속해서 배열 위치를 검색함으로서 충돌을 미리 방지한다. 

     

    참고할 내용

     

    [자료구조] 해시 테이블 (Hash Table)

    1. 해시 구조 Key에 Value 값을 저장하는 데이터 구조이다. key만 알면 바로 해당 데이터를 가져올 수 있으므로 속도가 굉장히 빠르다. 파이썬에서는 굳이 해쉬 테이블을 구현하지 않고 딕셔너리 타

    da-journal.com

     

    본 컨텐츠는 코드 스테이츠 AI 부트캠프 렉쳐 노트를 참고 하였습니다.

    'AI 부트캠프' 카테고리의 다른 글

    [n533] DFS & BFS  (0) 2022.02.08
    [n532] Graph  (0) 2022.02.07
    [n524] 알고리즘 (2)  (0) 2022.01.28
    [n523] 알고리즘  (0) 2022.01.27
    [n522] Data Structure (2)  (0) 2022.01.26

    댓글