포슀트

πŸŒ“ Hash-Table

πŸ’« @TODO


Hash
Hash Table

해쉬 ν•¨μˆ˜μ™€ ν•¨κ»˜ 데이터 검색을 효율적으둜 ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ꡬ쑰

Key(데이터 μ‹λ³„μž), Value(λ°μ΄ν„°μ˜ λ‚΄μš©)이 ν•œ μŒμ„ μ΄λ£¨λŠ” 데이터λ₯Ό μ €μž₯

νŠΉμ • 데이터가 λͺ‡ λ²ˆμ§Έμ— μ €μž₯돼 μžˆλŠ”μ§€ λͺ¨λ₯΄λ―€λ‘œ μ•žμ—μ„œλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ 확인?
μ„ ν˜• 탐색
데이터양에 λΉ„λ‘€ν•΄μ„œ 계산 μ‹œκ°„μ΄ λŠ˜μ–΄λ‚¨
λ°°μ—΄ 탐색에 μ‹œκ°„μ΄ κ±Έλ¦¬λ―€λ‘œ νƒμƒ‰μ—λŠ” μ ν•©ν•˜μ§€ μ•Šμ€ ꡬ쑰

So,

  1. 데이터λ₯Ό μΆ”κ°€ν•  λ•Œ ν•΄μ‹œν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ, Key에 ν•΄λ‹Ήν•˜λŠ” ν•΄μ‹œκ°’μ„ 계산
    • i.e. Joe -> 4928
  2. κ΅¬ν•œ ν•΄μ‹œκ°’μ„ ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 크기둜 λ‚˜λ¨Έμ§€ μ—°μ‚° (mod μ—°μ‚°)
    • i.e. 4928 % 5 = 3
  3. κ³„μ‚°ν•œ κ°’ μœ„μΉ˜μ— 데이터 μ €μž₯
    • i.e. 3번 μœ„μΉ˜μ— μ €μž₯
  4. 반볡, λ§Œμ•½ μ€‘λ³΅λœ 값이 λ‚˜μ˜€λ©΄ (좩돌이라고 함) μ—°κ²°λ¦¬μŠ€νŠΈκ΅¬μ‘°λ‘œ κΈ°μ‘΄ 데이터와 μ—°κ²° (연쇄법 Chaining이라고 함)
  5. 검색 μ‹œ λ§ˆμ°¬κ°€μ§€λ‘œ mod μ—°μ‚° κ°’μœΌλ‘œ 찾음, 좩돌둜 인해 μ—°κ²°λ¦¬μŠ€νŠΈκ°€ λ§Œλ“€μ–΄μ§„ μœ„μΉ˜μΌ 경우, μ„ ν˜• 탐색 μ‹€μ‹œ

ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 λ°°μ—΄ λ‚΄μ˜ νŠΉμ • 데이터에 λΉ λ₯΄κ²Œ μ ‘κ·Ό κ°€λŠ₯
ν•œνŽΈ, ν•΄μ‹œκ°’μ΄ μΆ©λŒν•  λ•ŒλŠ” 리슀트λ₯Ό μ΄μš©ν•˜κ³  μžˆμ–΄μ„œ μ €μž₯ν•  데이터 μˆ˜κ°€ μ •ν•΄μ Έ μžˆμ§€ μ•Šλ”λΌλ„ μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•  수 있음

ν•΄μ‹œν…Œμ΄λΈ”μ˜ λ°°μ—΄ 크기
λ„ˆλ¬΄ μž‘μœΌλ©΄ 좩돌이 λ§Žμ•„μ§€κ³  -> μ„ ν˜• νƒμƒ‰μ˜ λΉˆλ„κ°€ 높아짐
λ„ˆλ¬΄ 컀지면 데이터가 μ—†λŠ” 곡간이 λ§Žμ•„μ Έμ„œ λ©”λͺ¨λ¦¬λ₯Ό λ‚­λΉ„

μ μ ˆν•œ 크기둜 μ„€μ •ν•˜λŠ” 것이 μ€‘μš”

좩돌 처리 방법은 연쇄법 말고도 μ—¬λŸ¬ 가지가 있음

개방 μ£Όμ†Œλ²• Open addressing
좩돌이 λ°œμƒν•œ 경우 λ‹€μŒ 후보가 될 μ£Όμ†Œ (λ°°μ—΄ μƒμ˜ μœ„μΉ˜)λ₯Ό κ΅¬ν•΄μ„œ 거기에 μ €μž₯ν•˜λŠ” 방식
ν•΄λ‹Ή μ£Όμ†Œμ—λ„ 데이터가 μ‘΄μž¬ν•œλ‹€λ©΄ λ‹€μŒ 후보 μ£Όμ†Œλ₯Ό κ΅¬ν•˜λ©° λΉ„μ–΄μžˆλŠ” 곳을 찾을 λ•ŒκΉŒμ§€ λ‹€μŒλ²ˆ μ£Όμ†Œλ₯Ό ꡬ함

λ‹€μŒ μ£Όμ†Œλ₯Ό μ–΄λ–»κ²Œ κ΅¬ν•˜λŠ” κ°€λŠ”
ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ—¬λŸ¬ 개 μ‚¬μš©ν•œλ‹€λ˜μ§€, β€˜μ„ ν˜• 탐사’ λ“± λͺ‡ 가지 방법이 있음

ν•΄μ‹œ ν•¨μˆ˜μ˜ 경우,
ν•΄μ‹œκ°’μœΌλ‘œλΆ€ν„° μ›λž˜ 값을 μΆ”μΈ‘ν•  수 없도둝 κ΅¬ν˜„ν•˜κΈ°λ„ ν•˜μ§€λ§Œ,
λ³΄μ•ˆμ„ μœ„ν•œ κ²ƒμ΄λ―€λ‘œ ν•„μˆ˜μ μΈ 쑰건은 μ•„λ‹˜

λ°μ΄ν„°μ˜ μœ μ—°ν•œ μ €μž₯κ³Ό λΉ λ₯Έ 접근이 κ°€λŠ₯ν•œ ν•΄μ‹œ ν…Œμ΄λΈ”μ€
ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ μ—°κ΄€ λ°°μ—΄ Associative array등에 μ‚¬μš©λ˜κ³  있음


🫧


이 κΈ°μ‚¬λŠ” μ €μž‘κΆŒμžμ˜ CC BY 4.0 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.