Hash Function
์์์ ๊ธธ์ด์ ํค๊ฐ์ ๊ณ ์ ๋ ๊ธธ์ด์ ํด์๋ก ๋ณํํด์ฃผ๋ ๋งตํ ํจ์์ ๋๋ค.
Key
- ์์ฐ์๋ก ๊ฐ์ ( ๋ง์ฝ ์์ฐ์๊ฐ ์๋ character๋ string์ ํํ๋ผ๋ฉด ์์ฐ์ ํํ๋ก ๋ณํํ์ฌ ์ฌ์ฉํฉ๋๋ค. )
Hash
- ํด์ ํจ์๋ฅผ ํตํด ์์์ง ๊ฐ์ ํด์(hash), ํด์ ๊ฐ(hash value), ํด์ ์ฝ๋(hash code)๋ผ๊ณ ํฉ๋๋ค.
- ํด์ ํ
์ด๋ธ์ ๋ฒํท์ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ก ์ฌ์ฉ๋ฉ๋๋ค.
Hasing
- ํค ๊ฐ์ ํด์ํจ์๋ฅผ ํตํด ํด์๋ก ๋ณํํด์ฃผ๋ ์์
์ ํด์ฑ(Hasing)์ด๋ผ๊ณ ํฉ๋๋ค.
Hashing ๋ฐฉ๋ฒ
๋๋์
๋ฐฉ์
๋๋์ ๋ฐฉ๋ฒ(Division method)์ ๋๋จธ์ง ์ฐ์ฐ์ ์ด์ฉํ์ฌ ํด์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฒ์ํค k๋ฅผ ํด์ ํ ์ด๋ธ์ ํฌ๊ธฐ m์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ํด์๋ก ์ฌ์ฉํฉ๋๋ค.
h(k) = k mod m (k: key, m: table size)
Target = 2^n ์ ํผํ๋ค
Target = 2^n ๊ฐ ๋๋ฉด ํด์ ํจ์ h(k)๋ ํค k์ ํ์ p๋นํธ๊ฐ ๋ฉ๋๋ค.
ํด์ฌ ํจ์๊ฐ key๊ฐ ์ ์ฒด์ ๋ฐ๋ผ ๋ฐ๋์ง ์๊ณ ํ์ p ๋นํธ์๋ง ์ํฅ์ ๋ฐ์ต๋๋ค. ํ์ n๋นํธ๊ฐ ๊ณ ๋ฅด๊ฒ ๋์จ๋ค๋ฉด ๊ด์ฐฎ๊ฒ ์ง๋ง ๋๋ถ๋ถ ๊ทธ๋ ์ง ์๊ธฐ ๋๋ฌธ์, Target = 2^n ์ธ ๊ฒฝ์ฐ๋ ํผํด์ผ ํฉ๋๋ค.
Target = 2^n ๋๋ฌด ๊ฐ๊น์ง ์์ ์์๋ฅผ ์ ํํฉ๋๋ค.
ํค์ ์๊ฐ 20์ธ ๊ฒฝ์ฐ ํ ์ด๋ธ ํฌ๊ธฐ(m)๋ 17๋ก ํ๋ ๊ฒ ์ข์ต๋๋ค.
์ด๋ ์ ๊ธฐ
ํด์ ํ ์ด๋ธ ํฌ๊ธฐ์ ์๋ฆฟ์๋ก ํค๋ฅผ ๋ถํดํ๋ค. ๋ถํด๋ ํค๋ค์ ๋ํ๋ค. ๋ํ ๊ฐ์ด ํ ์ด๋ธ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ค๋ฉด ์ด๊ณผํ ์๋ฆฟ์๋ ๋ฒ๋ฆฐ๋ค.
๊ฒฝ๊ณ ์ ๊ธฐ
ํด์ํ ์ด๋ธ ํฌ๊ธฐ์ ์๋ฆฟ์๋ก ํค๋ฅผ ๋ถํดํ๋ค. ๋๋์ด์ง ๊ฐ ๋ถ๋ถ์ ๊ฒฝ๊ณ ๋ถ๋ถ ๊ฐ์ ์ญ์ผ๋ก ์ ๋ ฌํ๋ค. ๋ถํด๋ ํค๋ค์ ๋ํ๋ค. ๋ํ ๊ฐ์ด ํ ์ด๋ธ ์๋ฆฟ์๋ฅผ ์ด๊ณผํ๋ค๋ฉด ์ด๊ณผํ ์๋ฆฟ์๋ ๋ฒ๋ฆฐ๋ค.
์ค๊ฐ ์ ๊ณฑ๋ฒ
ํค ๊ฐ์ ์ ๊ณฑํ ํ ๊ฒฐ๊ณผ ๊ฐ์ ์ค๊ฐ ๋ถ๋ถ์ ์๋ ๋ช ๋นํธ๋ง ์ ํํ์ฌ ํด์๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ ์ด๋ธ ํฌ๊ธฐ์ ์๋ฆฟ์๋งํผ ์ค๊ฐ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
Last updated