π― Hash
ν΄μ(Hash)λ λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ²μνκΈ° μν μλ£κ΅¬μ‘° μ€ νλμ λλ€. ν΄μλ λ°μ΄ν°μ κ³ μ ν νΉμ κ°(ν€, Key)μ ν΄μ ν¨μ(Hash Function)λ₯Ό μ¬μ©νμ¬ κ³μ°ν ν, κ·Έ κ²°κ³Όκ°μ λ°°μ΄μ μΈλ±μ€λ‘ μ¬μ©ν΄ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€. μ΄λ κ² μ μ₯λ λ°μ΄ν°λ O(1)μ μκ° λ³΅μ‘λλ‘ κ²μν μ μμΌλ―λ‘ λ§€μ° λΉ λ₯Έ κ²μμ΄ κ°λ₯ν©λλ€.
ν΄μ μΆ©λ(Hash Collision)
ν΄μ μΆ©λμ΄λ ν΄μ ν¨μκ° μλ‘ λ€λ₯Έ λ κ°μ μ λ ₯κ°μ λν΄ λμΌν μΆλ ₯κ°μ λ΄λ μν©μ μλ―Ένλ€. ν΄μ ν¨μκ° λ¬΄νν κ°μ§μμ μ λ ₯κ°μ λ°μ μ νν κ°μ§μμ μΆλ ₯κ°μ μμ±νλ κ²½μ°, λΉλκΈ°μ§ μ리μ μν΄ ν΄μ μΆ©λμ νμ μ‘΄μ¬νλ€.
ν΄μ μΆ©λμ ν΄μ ν¨μλ₯Ό μ΄μ©ν μλ£κ΅¬μ‘°λ μκ³ λ¦¬μ¦μ ν¨μ¨μ±μ λ¨μ΄λ¨λ¦¬λ©°, λ°λΌμ ν΄μ ν¨μλ ν΄μ μΆ©λμ΄ μμ£Ό λ°μνμ§ μλλ‘ κ΅¬μ±λμ΄μΌ νλ€. μνΈνμ ν΄μ ν¨μμ κ²½μ° ν΄μ ν¨μμ μμ μ±μ κΉ¨λ¨λ¦¬λ μΆ©λ κ³΅κ²©μ΄ κ°λ₯ν μ μκΈ° λλ¬Έμ μλμ μΈ ν΄μ μΆ©λμ λ§λλ κ²μ΄ μ΄λ ΅λλ‘ λ§λ€μ΄μΌ νλ€.
- λΉλκΈ°μ§ μ리
- λΉλκΈ°μ§ μ리λ n+1κ°μ 물건μ nκ°μ μμμ λ£μ λ μ μ΄λ μ΄λ ν μμμλ λ κ° μ΄μμ λ¬Όκ±΄μ΄ λ€μ΄ μλ€λ μ리λ₯Ό λ§νλ€. λ³΄ν΅ λΉλκΈ°μ λΉλκΈ°μ§μ ννλ‘ λΉμ λμ΄ μ°μ΄λ©°, 'μλκ³Ό μλ§'λ‘ λΉμ νμ¬ μλ μμΉ λλ λ리ν΄λ μ λ°© λλκΈ° μμΉμ΄λΌκ³ λΆλ₯΄κΈ°λ νλ©° ꡬλ μμμ μ리λΌκ³ λ νλ€.
βοΈ ν΄μ μΆ©λμ μ²λ¦¬νλ λ°©λ²
- λΆλ¦¬ μ°μλ²(Separate Chaining)
- ν΄μ μΆ©λμ΄ λ°μνλ©΄ ν΄λΉ μΈλ±μ€μ μ°κ²° 리μ€νΈ(Linked List)λ₯Ό λ§λ€κ³ , μ°κ²° 리μ€νΈμ λ°μ΄ν°λ₯Ό μΆκ°νλ λ°©μμ λλ€. μ΄ λ°©λ²μ κ° μΈλ±μ€λ§λ€ μ°κ²° 리μ€νΈλ₯Ό λ§λ€μ΄μΌ νλ―λ‘ λ©λͺ¨λ¦¬ 곡κ°μ λ§μ΄ μ¬μ©νμ§λ§, ν΄μ μΆ©λμ΄ λ°μν΄λ λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΄ λ§€μ° μ μ©ν©λλ€.
- κ°λ°© μ£Όμλ²(Open Addressing)
- ν΄μ μΆ©λμ΄ λ°μνλ©΄ λ€λ₯Έ λΉ μΈλ±μ€λ₯Ό μ°Ύμ λ°μ΄ν°λ₯Ό μ μ₯νλ λ°©μμ λλ€. μ΄ λ°©λ²μλ μ ν μ‘°μ¬(Linear Probing), μ΄μ°¨μ μ‘°μ¬(Quadratic Probing), λλΈ ν΄μ±(Double Hashing) λ± λ€μν λ°©λ²μ΄ μμ΅λλ€. κ°λ°© μ£Όμλ²μ ν΄μ ν μ΄λΈμ ν¬κΈ°λ₯Ό μκ² μ μ§ν μ μμ΄ λ©λͺ¨λ¦¬ 곡κ°μ μ κ² μ¬μ©νμ§λ§, ν΄μ μΆ©λμ΄ λ°μν κ²½μ° λ λ§μ κ³μ°μ΄ νμνλ―λ‘ μ²λ¦¬ μλκ° λλ €μ§ μ μμ΅λλ€.
Hash μ₯λ¨μ
βοΈ Hash μ₯μ
- λΉ λ₯Έ κ²μ μλ
- ν΄μ ν¨μλ₯Ό μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ₯νλ―λ‘, κ²μ μκ°μ΄ O(1)μ κ°κΉμ λ§€μ° λΉ λ¦ λλ€. μ΄λ λ°μ΄ν°μ ν¬κΈ°μ κ΄κ³ μμ΄ μΌμ ν μκ° λ΄μ λ°μ΄ν°λ₯Ό κ²μν μ μμΌλ―λ‘, λκ·λͺ¨ λ°μ΄ν°μ κ²μμ μ μ©ν©λλ€.
- κ³ μ ν κ°μΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯
- ν΄μ ν¨μλ₯Ό μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ₯νλ©΄, κ³ μ ν κ°μΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ€λ³΅ λ°μ΄ν°λ₯Ό μ κ±°νκ±°λ, λ°μ΄ν°μ μ μΌμ±μ 보μ₯ν μ μμ΅λλ€.
- μ¬μ΄ ꡬν
- ν΄μ ν¨μλ₯Ό μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ₯νλ©΄, μ½λμ ꡬνμ΄ κ°λ¨ν΄μ§λλ€. μ΄λ λ€λ₯Έ μλ£κ΅¬μ‘°μ λΉκ΅νμ λ ꡬνμ΄ μ½κ³ μ μ§λ³΄μκ° μ©μ΄νλ€λ μ₯μ μ΄ μμ΅λλ€.
ποΈ Hash λ¨μ
- ν΄μ μΆ©λ
- ν΄μ μΆ©λμ΄ λ°μν κ²½μ°, κ²μ μλκ° λλ €μ§ μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μΆ©λ μ²λ¦¬ μκ³ λ¦¬μ¦μ΄ νμνλ©°, μ΄μ λ°λ₯Έ μΆκ°μ μΈ κ³΅κ°μ΄ νμν©λλ€.
- μμκ° λ³΄μ₯λμ§ μμ
- ν΄μ ν¨μλ₯Ό μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ₯νλ©΄, λ°μ΄ν°μ μμκ° λ³΄μ₯λμ§ μμ΅λλ€. λ°λΌμ μ λ ¬λ λ°μ΄ν°μ κ²μμλ μ ν©νμ§ μμ΅λλ€.
'μλ£κ΅¬μ‘°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ£κ΅¬μ‘°] B-Tree & B+Tree (0) | 2023.03.27 |
---|---|
[μλ£κ΅¬μ‘°] μ΄μ§νμνΈλ¦¬(Binary Search Tree) (0) | 2023.03.27 |
[μλ£κ΅¬μ‘°] Heap (0) | 2023.03.27 |
[μλ£κ΅¬μ‘°] LinkedList (0) | 2023.03.26 |
[μλ£κ΅¬μ‘°] Trie (0) | 2023.03.26 |