ν°μ€ν 리 λ·°
ν΄μ ν μ΄λΈ(Hash Table)μ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μ μ₯νκ³ κ²μνκΈ° μν μλ£κ΅¬μ‘°μ λλ€.
μ΄λ₯Ό μν΄ ν΄μ ν¨μ(Hash Function)λ₯Ό μ¬μ©νμ¬ κ° λ°μ΄ν°μ ν€(Key)λ₯Ό ν΄μ κ°(μΈλ±μ€)μΌλ‘ λ³νν©λλ€.
ν΄μ ν¨μλ μμμ κΈΈμ΄λ₯Ό κ°μ§ λ°μ΄ν°λ₯Ό κ³ μ λ κΈΈμ΄μ ν΄μ κ°μΌλ‘ 맀νν©λλ€.
μ΄ κ³Όμ μ ν΅ν΄ λ°μ΄ν°λ ν μ΄λΈ λ΄μ μ£Όμ(μΈλ±μ€)λ‘ λ³νλ©λλ€.
μ΄λ κ² λ³νλ μ£Όμλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό ν μ΄λΈ(Slot, Bucket)μ μ μ₯νκ±°λ κ²μν©λλ€.
μλ₯Ό λ€μ΄, ν€κ° 123817μΈ λ°μ΄ν°λ₯Ό ν΄μ ν¨μμ λ£μΌλ©΄ 3819μ κ°μ ν΄μ κ°μ΄ λμ΅λλ€.
μ΄ ν΄μ κ°μ ν΄λΉ λ°μ΄ν°λ₯Ό μ μ₯ν ν μ΄λΈ λ΄μ μμΉλ₯Ό κ²°μ νλ λ° μ¬μ©λ©λλ€.
λ¬΄μ¨ λ§μΈμ§ μ λͺ¨λ₯΄κ² λ€λ©΄..
μ΄ κΈμ μ λͺ©μ²λΌ ν΄μ ν
μ΄λΈμ λμκ΄.μ μκ°νλ©΄ μ½μ΅λλ€!
λμκ΄μ μ¬λ¬ κ°μ μ± μ 보κ΄νκ³ μ± μ μ°Ύμ μ μλ μ₯μμ λλ€.
κ·Έλ¬λ λμκ΄λ§λ€ μ±
μ 보κ΄νλ λ°©μμ΄ λ€λ¦
λλ€.
μ΄λ€ λμκ΄μ μ±
μ μ₯λ₯΄λ³λ‘ 보κ΄νκ³ , λ λ€λ₯Έ λμκ΄μ μ±
μ μ΄λ¦μ΄λ μ μλ₯Ό κΈ°μ€μΌλ‘ μ±
μ 보κ΄ν©λλ€.
μλ₯Ό λ€μ΄, κ°λλ€ μμΌλ‘ μ± μ 보κ΄νλ λμκ΄μμλ
ν΄λΉ λ°©μμ κ³ λ €νμ¬ μ±
μ μ°ΎμμΌ λ μ½κ³ λΉ λ₯΄κ² μ±
μ μ°Ύμ μ μμ κ²μ
λλ€.
μ΄μ μ΄ λμκ΄μ μμλ₯Ό ν΄μ ν
μ΄λΈμ μ λͺ©μμΌλ³΄κ² μ΅λλ€.
ν΄λΉ λμκ΄μ΄ μ±
μ 보κ΄νλ λ°©μμ ν΄μ ν¨μ(Hash Function)λΌκ³ νκ³ ,
κ° λμκ΄μ μμ λ§μ ν΄μ ν¨μ(μ±
보κ΄λ²)μ κ°κ³ μμ΅λλ€.
ν΄μ ν¨μλ₯Ό ν΅ν΄ μνλ μ±
μ μμΉλ₯Ό μ°Ύμλ΄λ©΄ κ·Έ μμΉκ° ν΄μ κ°μ΄ λκ³ ,
ν΄λΉ μμΉμ μ± μ΄ λ³΄κ΄λμ΄ μλ κ³³μ λ²ν· λλ, μ¬λ‘―μ΄λΌκ³ ν©λλ€.
λ€μ ν λ², λμκ΄μ 머리 μμμ λ μ¬λ¦¬λ©° ν΄μ ν μ΄λΈμ λν΄ μκ°ν΄λ³΄μμ£ .
(μ± μ κ°λλ€ μμΌλ‘ λμ΄νλ λμκ΄μ΄λΌκ³ μκ°ν΄λ΄ μλ€.)
ν΄μ ν μ΄λΈμ Keyμ Valueλ₯Ό 1:1 맀ννμ¬ μ μ₯νλ ꡬ쑰μ΄κ³ , Key(μ± μ΄λ¦)λ₯Ό ν΄μ ν¨μμ λ£μ΄μ λμ¨ ν΄μ κ°(μ± μ μ΄λ¦μΌλ‘ μ ν΄μ§ λ³΄κ΄ μμΉ)μ ν΄λΉ Value(μ± )μ μ μ₯νλ λ°©μμΈ κ²μ λλ€.
λ°λΌμ ν΄μ ν
μ΄λΈμ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ κ²μν μ μλ λμκ΄κ³Ό κ°λ€κ³ μκ°νμλ©΄ μ’μ κ² κ°μ΅λλ€.
μ΄μ μ‘°κΈμ ν΄μ ν μ΄λΈμ΄ 머리 μμμ κ·Έλ €μ§μλμ ?! π€
ν΄μ μΆ©λ (Hash Collision )
ν΄μ ν¨μλ ν΄μ κ°μ κ°μλ³΄λ€ λ λ§μ ν€ κ°μ ν΄μ κ°μΌλ‘ λ³ννκΈ° λλ¬Έμ
μλ‘ λ€λ₯Έ ν€μ λν΄ λμΌν ν΄μ κ°μ λ΄λ ν΄μ μΆ©λ(Collision)μ΄ λ°μνκ² λ©λλ€.
μλ₯Ό λ€μ΄, λμκ΄μ ν΄μ ν¨μκ° μ μμ μ΄λ¦μ κΈ°μ€μΌλ‘ νλ€λ©΄
ν μ μκ° μ΄ λ€λ₯Έ μ± λ€λ κ°μ ν΄μ κ°μ κ°κ² λ©λλ€. (Collision λ°μ)
ν΄μ ν μ΄λΈμμλ μ΄μ μ μ¬ν λ¬Έμ κ° λ°μν©λλ€.
ν΄μ ν¨μκ° μ ν΄μ§ μνλ‘ ν΄μ ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° λλ¬Έμ μΈμ κ°λ λκ°μ ν΄μ κ°μ λ΄λ ν€κ° λ°μν κ²μ λλ€.
μ΄λ¬ν μν©μ μ°λ¦¬λ ν΄μ μΆ©λ(Collision)μ΄λΌκ³ ν©λλ€.
κ·Έλ κΈ° λλ¬Έμ μ°λ¦¬λ ν΄μ ν¨μλ₯Ό μ νν λ κ³¨κ³ λ£¨ λΆμ°λλλ‘ μ€κ³νλ κ²μ΄ μ’μ΅λλ€.
μ’μ ν΄μ ν¨μμ 쑰건μΌλ‘λ λ κ°μ§λ₯Ό λνλΌ μ μμ΅λλ€.
첫 λ²μ§Έλ μΆ©λμ΄ μ κ² λ°μνλ Less Collisionμ
λλ€.
μλ²½ν ν΄μ ν¨μλ μ‘΄μ¬νμ§ μμ§λ§, μΆ©λμ΄ μ κ² λ°μνλ ν¨μλ₯Ό μ ννλ κ²μ΄ μ€μν©λλ€.
λ λ²μ§Έλ‘λ κ³μ°μ΄ λΉ λ₯Έ Fast Computationμ
λλ€.
ν΄μ ν¨μμ κ³μ°μ΄ λΉ λ₯Όμλ‘ λ μ’μ΅λλ€. ν΄μ ν μ΄λΈμμλ ν΄μ ν¨μ κ°μ μμ£Ό κ³μ°ν΄μΌ νκΈ° λλ¬Έμ λΉ λ₯Έ κ³μ°μ΄ νμμ μ λλ€.
κ·Έλ¬λ μ΄ λμ μμΆ© κ΄κ³(Trade-off)μ μμ΅λλ€.
ν΄μ μΆ©λμ μ€μ΄λ €λ©΄ ν΄μ ν¨μλ₯Ό 볡μ‘νκ² λ§λ€μ΄μΌ νμ§λ§, μ΄λ κ² λλ©΄ κ³μ° μλκ° λλ €μ§λλ€.
λ°λΌμ λ κ°μ§ 쑰건μ λͺ¨λ κ³ λ €νμ¬ νμ¬ μν©μ λ§λ ν΄μ ν¨μλ₯Ό μ ννλ κ²μ΄ νμν©λλ€.
λ§λ¬΄λ¦¬
μ¬λμ΄ λ°μ΄λ ν΄μ ν¨μλ₯Ό λ§λ€μ΄λ μλ²½νκ² μΆ©λμ λ§μ μλ μμ΅λλ€.
κ·Έλμ μ°λ¦¬λ
μΆ©λμ΄ λ°μνμ λλ₯Ό λμ²νκΈ° μν΄ Open addressingκ³Ό Chaining λ κ°μ§ λ°©λ²μ΄ μ£Όλ‘ μ¬μ©ν©λλ€.
ν ν¬μ€ν
μ λͺ¨λ λ΄μ©μ λ€λ£¨κΈ°μλ μκ°μ΄ λΆμ‘±νμ¬
μ΄λ² ν¬μ€ν
μμλ ν΄μ ν
μ΄λΈμ κ°λ
μ λν΄μλ§ λ€λ£¨κ³ λ§μΉκ² μ΅λλ€..!
λ€μ ν¬μ€ν
μμλ μΆ©λ ννΌ λ°©λ²μ λν΄ λ μμΈν λ€λ£¨κ³ ,
μ½λλ‘ κ΅¬νκ³Ό μκ° λ³΅μ‘λμ λν λ΄μ©μ λ€λ£° μμ μ
λλ€.
μλͺ»λ λ΄μ©μ΄λ κΆκΈνμ μ μ΄ μλ€λ©΄ λκΈ λ¨κ²¨μ£ΌμΈμ. π€
μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€.
π μ°Έκ³ μλ£
νκ΅μΈλ μ μ°¬μ κ΅μλμ Data Structures with Python κ°μ
https://ratsgo.github.io/data%20structure&algorithm/2017/10/25/hash/
'Computer > Data Structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] μ°κ²° 리μ€νΈ(Linked List)λ μ§νμ² . (feat. μ€κ΅μ΄μ°¨) (5) | 2024.03.01 |
---|---|
[Swift] ν(Queue)λ μ μ°©μ. (1) | 2024.01.25 |
[Swift] μ€ν(Stack)μ νλ§κΈμ€. (1) | 2024.01.23 |
μλ£ κ΅¬μ‘°(Data Structure), μκ³ λ¦¬μ¦(Algorithms) κ·Έκ² λμΌ... ? (0) | 2024.01.16 |
- BOJ
- κ³΅κ° λ³΅μ‘λ
- μλ£ κ΅¬μ‘°
- 10808
- κ·λλΌλ―Έ μμ΄
- κ°λ°μ
- tipkit
- νκ³
- μ€ν
- μ νμμΉ΄λ°λ―Έ
- λ¨μΌ μ°κ²° 리μ€νΈ
- κ΄νΈμ κ°
- κ·λλΌλ―Έ μμ΄
- μμ΄ κ³΅λΆ
- remainder
- 2024λ λͺ©ν
- ν
- containerView
- Anyobject
- μλ°©ν₯ μ°κ²° 리μ€νΈ
- C++
- root view controller
- λ²μ©κ³ μ μλ³
- 24λ νκ³
- μμ΄ λ΄μ€
- μννΈμ€ν¬
- 2023λ νκ³
- pageViewController
- Swift
- Container View Controller
- Total
- Today
- Yesterday