ν•΄μ‹œ(Hash)

2020. 4. 24. 14:13Β·πŸ“ Computer Science/✏ Data Structure

ν•΄μ‹œ(Hash)

적은 μžμ›μœΌλ‘œ 데이터λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μž„μ˜μ˜ 길이 데이터λ₯Ό κ³ μ •λœ 길이의 λ°μ΄ν„°λ‘œ λ§€ν•‘ν•˜λŠ” 것이닀.

  • ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ €μž₯ν•  데이터와 μ—°κ΄€λœ κ³ μœ ν•œ 숫자λ₯Ό λ§Œλ“  λ’€ 이λ₯Ό 인덱슀둜 μ‚¬μš©ν•œλ‹€.
  • λ‚΄λΆ€μ μœΌλ‘œ 배열을 μ΄μš©ν•˜μ—¬ 데이터λ₯Ό μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— λΉ λ₯Έ 검색 속도(O(1))λ₯Ό κ°–λŠ”λ‹€.

 

1. ν•΄μ‹œ ν•¨μˆ˜(Hash Function)

  • μ €μž₯ν•  데이터와 μ—°κ΄€λœ κ³ μœ ν•œ 숫자(Hash Code)λ₯Ό λ§Œλ“ λ‹€.
  • μ €μž₯λ˜λŠ” κ°’λ“€μ˜ key 값을 ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 μž‘μ€ λ²”μœ„μ˜ κ°’λ“€λ‘œ λ°”κΎΌλ‹€.

 

ν•΄μ‹œ ν•¨μˆ˜

 

2. ν•΄μ‹œ ν…Œμ΄λΈ”

ν•΄μ‹œ ν…Œμ΄λΈ”μ€ μ›μ†Œκ°€ μ €μž₯될 μžλ¦¬κ°€ μ›μ†Œμ˜ 값에 μ˜ν•΄ κ²°μ •λ˜λŠ” 자료ꡬ쑰둜 μž„μ˜μ˜ μ›μ†Œλ₯Ό ν•΄μ‹œ ν…Œμ΄λΈ”μ— μ €μž₯ν•˜λ €λ©΄ ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 ν•΄μ‹œ 값을 κ³„μ‚°ν•˜κ³  ν•΄μ‹œ 값에 따라 μ €μž₯ν•œλ‹€.

 

3. 좩돌(Collision) ν˜„μƒ ν•΄κ²°

μΆ©λŒμ΄λž€ ν•΄μ‹œ ν…Œμ΄λΈ” λ‚΄μ˜ ν•œ μ£Όμ†Œλ₯Ό 놓고 두 개 μ΄μƒμ˜ μ›μ†Œκ°€ 자리λ₯Ό λ‹€νˆ¬λŠ” 것을 λ§ν•œλ‹€.

 

1) 체이닝(Chaining)

μ—°κ²° 리슀트둜 λ…Έλ“œλ₯Ό 계속 μΆ”κ°€ν•΄λ‚˜κ°€λŠ” 방식이닀.

 

체이닝

 

2) 개방 μ£Όμ†Œ(Open Addressing)

ν•΄μ‹œ ν•¨μˆ˜λ‘œ 얻은 μ£Όμ†Œκ°€ μ•„λ‹Œ λ‹€λ₯Έ μ£Όμ†Œμ— 데이터λ₯Ό μ €μž₯ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•œλ‹€.

  • μ„ ν˜• 탐사: 좩돌이 μΌμ–΄λ‚œ λ‹€μŒ 자리λ₯Ό κ³„μ†ν•΄μ„œ 탐색.
  • 이차원 탐사: λ‹€μŒ 자리λ₯Ό λ³΄λŠ” λŒ€μ‹  이차 ν•¨μˆ˜(i^2)에 μ˜ν•΄ 탐색.

 

개방 μ£Όμ†Œ 방식 쀑 μ„ ν˜• 탐사

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Computer Science/✏ Data Structure' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • 자료ꡬ쑰 정리
  • μ•Œκ³ λ¦¬μ¦˜ μ„±λŠ₯ 뢄석
  • κ·Έλž˜ν”„(Graph)
  • 이진 트리(Binary Tree)
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
ν•΄μ‹œ(Hash)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”