smhasher's FillFactor - minseok127/HashSimulator GitHub Wiki
Introduce
smhasher์ Distribution wiki ๋ฐ FillFactor wiki์ ๋์จ ๋ด์ฉ์ ์ ๋ฆฌํ ํ์ด์ง์ ๋๋ค.
Contents
Relative Work
Key๋ค์ด Hash Table์ bins์ ํจ์จ์ ์ผ๋ก ๋ถํฌํ๋ ์ง๋ฅผ ํ์ ํ๊ธฐ ์ํด์ Test Distribution๊ณผ Ideal Distribution์ ๋น๊ตํฉ๋๋ค.
ํน์ ๋ถํฌ์์ ๊ธฐ๋๋๋ work์ ํฌ๊ธฐ๋ฅผ Expected Work(EW)๋ผ๊ณ ํํํ ๋
Test Distribution์ EW / Ideal Distribution์ EW = Relative Work(RW)๋ฅผ ํตํด์ ์ด์์ ์ธ ๋ถํฌ์ ๋น๊ตํ ์ ์์ต๋๋ค.
Flaw
ํ์ง๋ง ์ฌ๊ธฐ์๋ ๋ฌธ์ ๊ฐ ์๋๋ฐ
์ฒซ ๋ฒ์งธ๋ก RW๊ฐ Hash Table์ ํฌ๊ธฐ์ key์ ๊ฐ์์ ๋๋ฌด ์ํฅ์ ๋ง์ด ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ table์์ ๊ตฌํด์ง RW๋ผ๋ฆฌ ๋น๊ตํ๋ ๊ฒ์ด ์ด๋ ต๋ค๋ ๊ฒ์ด๊ณ ,
๋ ๋ฒ์งธ๋ก RW๋ lower bound๋ ์์ง๋ง upper bound๋ table์ ํฌ๊ธฐ์ key์ ๊ฐ์์ ๋ฐ๋ผ ๋งค์ฐ ์ปค์ง ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ธ ๋ฒ์งธ๋ก RW๋ ํต๊ณ์ ์ผ๋ก ๊ฒฐํจ์ด ์๋ ๋ถํฌ์์๋ ๊ด์ฐฎ์ ๊ฐ์ด ๋์ฌ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌํ์ฌ RW์ ๋จ์ ์ ๊ฐ์ง์ง ์๋ ์๋ก์ด ์งํ์ธ FillFactor๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ด ์งํ๋ 0์์ 1์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์ค๊ฐ๊ฐ์ ๋ํ ์๋ฏธ์๋ ํด์์ ํ ์ ์๊ณ , ๋ค๋ฅธ table์ ๊ฐ๊ณผ๋ ๋น๊ตํ ์ ์์ต๋๋ค.
Assume
Hash Table์ N๊ฐ์ bins, K๊ฐ์ key๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๊ฐ bin๋ค์ ๋ค์ด๊ฐ key์ ๊ฐ์๋ฅผ Bi๋ผ๊ณ ๋ถ๋ฅผ ๋ Bi์ ๊ธฐ๋๊ฐ์ K / N์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ Bi๋ค์ ๋ํด์ root-square-mean์ ๊ณ์ฐํ๊ณ ์ด๋ฅผ R๋ก ๋ถ๋ฅด๊ฒ ์ต๋๋ค.
R = { (B1^2 + B2^2 + ... + BN^2) / N }^(1/2)
Ideal Distribution์์ ์ฌ์ฉํ๋ bins์ ๊ฐ์๋ฅผ F๋ผ๊ณ ์ ์ํ๊ฒ ์ต๋๋ค.
์ฆ Ideal Distribution์ด 0๋ฒ๋ถํฐ F๋ฒ๊น์ง๋ง ์ฌ์ฉํ๊ณ F + 1๋ฒ๋ถํฐ N - 1๋ฒ๊น์ง๋ ๋น์ด์๋ bins๋ก ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
์ด ๊ฒฝ์ฐ F๊ฐ 1์ด๋ผ๋ฉด ๊ฐ์ฅ ํจ์จ์ด ์์ข์ ๊ฒ์ด๊ณ , F๊ฐ N์ด๋ผ๋ฉด ๊ฐ์ฅ ํจ์จ์ด ์ข์ ์ํฉ์ ๋๋ค.
FillFactor
root-square-mean์ ๊ตฌํ๋ ํจ์๋ฅผ MR์ด๋ผ๊ณ ํ๋ฉด Ideal Distribution์ root-square-mean์ MR(F,N,K)๋ก ํํํ ์ ์์ต๋๋ค.
์ด ๊ฐ์ Test Distribution์ root-square-mean์ธ R๊ฐ๊ณผ ๋น๊ตํ์ฌ F๋ฅผ ์ญ์ผ๋ก ๊ตฌํฉ๋๋ค.
์ฆ R = MR(F,N,K)๋ผ๋ ์์ ์ธ์ฐ๊ณ ์ด๋ฅผ ๋ณํํ์ฌ F = ~ ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํํํฉ๋๋ค.
FillFactor wiki์ ๋ฐ๋ฅด๋ฉด F๋ผ๋ ๊ฐ์
double f = (k*k - 1) / (n*r*r - k); // k : total key count, n : total bin count, r : root-square-mean of test
์ด์ ๊ฐ์ด ํํํ ์์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด F๊ฐ์ ํตํด์ FillFactor๋ฅผ ํํํฉ๋๋ค.
return 1 - (f / n);
๊ฒฐ๊ตญ FillFactor๊ฐ ์๋ฏธํ๋ ๊ฒ์ ๋ชจ๋ key๋ค์ด F๊ฐ์ bins์ ์ด์์ ์ผ๋ก ๋ถํฌํ์์ ๋, ์ฌ์ฉ๋์ง ์๋ bins์ ๋น์จ์ ๋๋ค.
์ฆ Test Distribution์ด FillFactor๋งํผ์ wasteํ๋ Ideal Distribution๊ณผ ๊ฐ์ ํจ์จ์ ๋ณด์ธ๋ค๋ ์๋ฏธ์ ๋๋ค.