What is a Division Hashing? - minseok127/HashSimulator GitHub Wiki
Division Hashing
Division Hashing์ด๋ ์ฃผ์ด์ง key๋ฅผ bin์ ๊ฐ์๋ก ๋๋ ์ ์๊ธด ๋๋จธ์ง๋ฅผ bin์ Index๋ก ์ฌ์ฉํ๋ Hashing์ ๋๋ค.
int index = key % M;
bin์ ๊ฐ์๊ฐ M๊ฐ์ผ ๋, key % M์ ํ ๊ฒฐ๊ณผ๋ 0์์ M - 1๊น์ง ์๊ธฐ๊ธฐ ๋๋ฌธ์ bin์ Index๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด๋ฒ ํ์ด์ง์์๋ M์ ๊ฐ์ ๋ฐ๋ผ ์ด๋ค ์ ๋ค์ด ๋ฌ๋ผ์ง๋ ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
Contents
Multiple of 2
M์ 2์ ๋ฐฐ์๋ก ์ค์ ํ ๊ฒฝ์ฐ์ ๋๋ค.
key๊ฐ ํ์๋ผ๋ฉด index๋ ํ์๋ก ์ค์ ๋๊ณ , key๊ฐ ์ง์๋ผ๋ฉด index๋ ์ง์๋ก ์ค์ ๋ฉ๋๋ค.
์ด๊ฒ์ Uniformํ์ง ์์ key์ ๋ถํฌ๊ฐ index์ ๊ทธ๋๋ก ๋ฐ์๋ ์ ์๋ ์ํฉ์ด๊ธฐ ๋๋ฌธ์ ์ ์ ํ ๊ฐ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค.
Power of 2
2์ ๊ฑฐ๋ญ์ ๊ณฑ ๋ํ 2์ ๋ฐฐ์์ ๊ฐ์ด ๊ฒฐ๊ณผ๊ฐ ํ์์ ์ง์๋ก ํธํฅ๋์ด ๋ํ๋ฉ๋๋ค.
ํ์ง๋ง ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์ด %์ฐ์ฐ ๋์ &์ฐ์ฐ์ผ๋ก ๋์ ๋ ์ ์๋ค๋ ํน์ง์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด a๋ผ๋ ๊ฐ์ 2^b๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
a์ bit๋ค์ ์ค๋ฅธ์ชฝ์ผ๋ก b์นธ ์ฎ๊ธด ๊ฒ์ a / 2^b์ ๋ชซ์ ๋๋ค. ์ด ๊ฐ์ q๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋๋จธ์ง๋ a - q * 2^b ์ ๋๋ค.
์ข ๋ ์ฝ๊ฒ ๋ณด๋ฉด
x x x x ... x x | y y y y ... y y
์์ ๊ธฐํธ๋ค์ด ๋ํ๋ด๋ ๊ฐ์ a๋ผ๊ณ ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ | ๋ 2^b๋ก ๋๋ด์ ๋ ๋จ์์๋ bit๋ค์ ๊ตฌ๋ณํ ๊ฒ์ ๋๋ค.
์ฆ ์์ ๊ฐ์ 2^b๋ก ๋๋ด์ ๋ 0 0 0 0 ... 0 0 | x x x x ... x x ์ ๊ฐ์ด x๋ก ํ๊ธฐ๋ bit๋ค๋ง ๋จ๊ฒ ๋๊ณ ์ด ๊ฐ์ด q์ ๋๋ค.
์ด ๋ 2^b๋ฅผ ํํํด๋ณด๋ฉด 0 0 0 0 ... 0 1 | 0 0 0 0 ... 0 0 ์ ๊ฐ์ด ํํ๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด q * 2^b๋ x x x x ... x x | 0 0 0 0 ... 0 0 ์ด๊ณ ,
๊ฒฐ๊ตญ a - q * 2^b์ 0 0 0 0 ... 0 0 | y y y y ... y y ์ด๋ฏ๋ก
a % 2^b์ a์ 0๋ฒ์งธ bit๋ถํฐ b - 1๋ฒ์งธ bit๊น์ง์ bit๋ค์ 2^b - 1๊ณผ AND์ฐ์ฐํ ๊ฒฐ๊ณผ์ธ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฑ์ง์ ์ด์ฉํ์ฌ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ % ์ฐ์ฐ๋ณด๋ค ๋น ๋ฅธ & ์ฐ์ฐ์ ํตํด ๋๋จธ์ง๋ฅผ ๊ตฌํ ์ ์๋ค๋ ํน์ง์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
key์ ๋ถํฌ๊ฐ ์ด๋ฏธ Uniformํ๋ค๋ฉด bin์ ๊ฐ์๋ฅผ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ผ๋ก ํ๋ ๊ฒ์ด ๋ ๋์ ์ ํ์ด๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
Composite Number
Composite Number๋ Prime Number์ ๋ฐ๋๋๋ ์ฉ์ด๋ก ์์ธ์๋ถํด๊ฐ ๊ฐ๋ฅํ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
์ด ๊ฐ์ M์ผ๋ก ์ค์ ํ ๊ฒฝ์ฐ M์ ์์ธ์๋ค์ ๋ํด์ ํธํฅ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด M์ด 15์ธ ๊ฒฝ์ฐ 15์ ์์ธ์์ธ 3, 5์ ๋ฐฐ์๋ค์ ๋ํด์ ํ์ ๋ index๋ค๋ง ๋ํ๋๊ฒ ๋ฉ๋๋ค.
3์ ๋ฐฐ์์ ๊ฒฝ์ฐ 0, 3, 6, 9, 12 index๋ง ์ฌ์ฉํ๊ฒ ๋๊ณ , 5์ ๋ฐฐ์์ ๊ฒฝ์ฐ 0, 5, 15 index๋ง ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
3์ ๋ฐฐ์์ 5์ ๋ฐฐ์๊ฐ ์๋ ๊ฒฝ์ฐ 0 ~ 14๊น์ง์ index ๋ชจ๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
์ฆ key๊ฐ ์์ธ์์ ๋ฐฐ์์ ๋ํด์ ๋ค๋ฅธ ์๋ค๊ณผ ๊ตฌ๋ณ๋๋ ํน์ง์ ๊ฐ์ง๋ค๋ฉด index ๋ํ ํธํฅ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค.
Prime Number
Prime Number๋ ์์ธ์๋ถํดํ ๊ฒฐ๊ณผ๊ฐ 1๊ณผ ์๊ธฐ ์์ ๋ง ๋จ๋ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
์ด ๊ฒฝ์ฐ Composite Number์ฒ๋ผ ํน์ ์์ ์ง๋จ์ ๋ํด์ ํ์ ๋ index๋ง ๋์ถ๋๋ ์ํฉ์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ Division Hashing์ M์ Prime Number๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.