μ’μ ν΄μ¬ ν¨μλ?
- νμ€μμλ ν€λ€μ΄ λλ€νμ§ μμ
- λ§μ½ ν€λ€μ ν΅κ³μ λΆν¬μ λν΄ μκ³ μλ€λ©΄ μ΄λ₯Ό μ΄μ©ν΄μ ν΄μ¬ ν¨μλ₯Ό κ³ μνλ κ²μ΄ κ°λ₯νκ² μ§λ§ νμ€μ μΌλ‘ μ΄λ €μ
- ν€λ€μ΄ μ΄λ€ νΉμ ν (κ°μμ μΈ) ν¨ν΄μ κ°μ§λλΌλ ν΄μ¬ν¨μκ°μ΄ λΆκ·μΉμ μ΄ λλλ‘ νλ κ² λ°λμ§
- ν΄μ¬ν¨μ κ°μ΄ ν€μ νΉμ λΆλΆμ μν΄μλ§ κ²°μ λμ§ μμμΌ..
Division κΈ°λ²
- h(k) = k mod m
- μ : m = 20 and k = 91 -> h(k) = 11
- μ₯μ : ν λ²μ mod μ°μ°μΌλ‘ κ³μ°. λ°λΌμ λΉ λ¦.
- λ¨μ : μ΄λ€ mκ°μ λν΄μλ ν΄μ¬ ν¨μκ°μ΄ ν€κ°μ νΉμ λΆλΆμ μν΄μ κ²°μ λλ κ²½μ°κ° μμ.
κ°λ Ή m = 2^pμ΄λ©΄ ν€μ νμ pλΉνΈκ° ν΄μ¬ν¨μ κ°μ΄ λ¨.
Multiplication κΈ°λ²
- 0μμ 1 μ¬μ΄μ μμ Aλ₯Ό μ ν : 0 < A < 1
- kAμ μμλΆλΆλ§μ ννλ€. (μ μλ μ μ)
- μμ λΆλΆμ mμ κ³±ν μ μμμ μλλ₯Ό λ²λ¦°λ€.
Hash code in Java
- Javaμ Object ν΄λμ€λ hashCode() λ©μλλ₯Ό κ°μ§. λ°λΌμ λͺ¨λ ν΄λμ€λ hashCode() λ©μλλ₯Ό μμ λ°λλ€. μ΄ λ©μλλ νλμ 32λΉνΈ μ μλ₯Ό λ°ννλ€.
- λ§μ½ x.equals(y)μ΄λ©΄, x.hashCode() == y.hashCode()μ΄λ€. νμ§λ§ μμ μ±λ¦½νμ§ μλλ€.
- Object ν΄λμ€μ hashCode() λ©μλλ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό λ°ννλ κ²μΌλ‘ μλ €μ Έ μμ (but its implementation-dependent)
- νμμ λ°λΌ κ° ν΄λμ€λ§λ€ μ΄ λ©μλλ₯Ό overrideνμ¬ μ¬μ©νλ€.
- μ) Integer ν΄λμ€λ μ μκ°μ hashCodeλ‘ μ¬μ©...
// ν΄μ¬ ν¨μμ μ : hashCode() for Strings in Java
public final class String
{
private final char[] s;
...
public int hashCode()
{
int hash = 0;
for (int i = 0; i < length(); i++)
hash = s[i] + (31 * hash);
return hash;
}
}
piblic class Record
{
private String name;
private int id;
private double value;
...
// λ΄κ° μνλ hash ν¨μλ₯Ό μμ±νλ€.
public int hashCode()
{
int hash = 17; // nonzero constant
hash = 31 * hash + name.hashCode();
hash = 31 * hash + Integer.valueOf(id).hashCode();
hash = 31 * hash + Double.valueOf(value).hashCode();
return hash;
}
}
hashCodeκ³Ό hashν¨μ
- hashCode : -21^31μμ 2^31 μ¬μ΄μ μ μ
- hash ν¨μ : 0μμ M-1κΉμ§μ μ μ.. (λ°°μ΄ μΈλ±μ€)
// hashCodeλ₯Ό hash ν¨μλ‘ λ§λ€κΈ°
private int hash (Key key) {
return (key.hashCode() & 0x7fffffff) % M;
}
Javaμμλ HashMapκ³Ό HashSetμ΄ μλ€.
C++μμλ #include <unordered_set>μ΄ μλ€. (μλ°μ HashMapμ λμ..)
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
14-3κ°. κ·Έλνμμμ DFS (0) | 2020.12.06 |
---|---|
14-1κ°. κ·Έλν(Graph) κ°λ κ³Ό νν (0) | 2020.12.01 |
13-1κ°. ν΄μ(Hashing) 1 (0) | 2020.11.24 |
12-2κ°. λ λλΈλνΈλ¦¬ (3) (0) | 2020.11.22 |
12-1κ°. λ λλΈλνΈλ¦¬(1) (0) | 2020.11.17 |
λκΈ