Hash Collision
Last updated
Last updated
ํ์ง๋ง ์ ๋ ฅ ๊ณต๊ฐ์ด ๋ฌดํํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ค ์์ ์์๋ ์๋ก ๋ค๋ฅธ ์ ๋ ฅ๋ค์ด ๋์ผํ ํด์ ๊ฐ์ผ๋ก ๋งคํ๋ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ํฉ์ด ํด์ ์ถฉ๋์ ๋๋ค
๋ ๊ฐ์ ์ ๋ ฅ์ด ๋์ผํ ํด์ ๊ฐ์ผ๋ก ๋งคํ๋๋ค๋ฉด, ํด์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋์ผ slot์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ
๊ฐ ํด์ ํ ์ด๋ธ slot T[j]๋ ํด์ ๊ฐ์ด j์ธ ๋ชจ๋ ํค๋ฅผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ ์ฅํ์ฌ ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค.
h(k1) = h(k4), h(k2)=h(k5)=h(k6)
์ฒด์ด๋ ๊ธฐ๋ณธ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CHAINED-HASH-INSERT(T,x)
: T[h(x.key)] ๋ฆฌ์คํธ์ x๋ฅผ ์ฝ์
ํฉ๋๋ค.
CHAINED-HASH-SEARCH(T, k)
: T[h(k)] ๋ฆฌ์คํธ์ ํค k๋ฅผ ์ฐพ์ต๋๋ค.
CHAINED-HASH-DELETE(T,x)
: T[h(x.key)] ๋ฆฌ์คํธ์ x๋ฅผ ์ญ์ ํฉ๋๋ค.
์ฅ์ | ๋จ์ |
---|---|
๊ตฌํ์ด ๋จ์ | ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด ํค๋ฅผ ์ ์ฅํ๋ฏ๋ก ์บ์ ์ฑ๋ฅ์ ๋จ์ด์ง๊ฒ ๋ฉ๋๋ค. |
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ์ด ๊ฐ๋ ์ฐจ์ง ์์ต๋๋ค. | ์ฌ์ฉํ์ง ์๋ slot์ด ์๊ธธ ์ ์์ด ๊ณต๊ฐ ๋ญ๋น๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค |
ํด์ ํจ์ ๋ฐ ์ ์ฌ์จ(load factor)์ ์ํฅ์ ๋ ๋ฐ์ต๋๋ค | ํ slot์ ๊ณ์ํด์ ์ ์ฅ๋๋ค๋ฉด ์ฒด์ธ์ด ๊ธธ์ด์ ธ ์ต์ ์ ๊ฒฝ์ฐ ๊ฒ์ ์๊ฐ์ด O(n)์ด ๋ ์ ์์ต๋๋ค. |
ํค์ ์ฝ์ ๋๋ ์ญ์ ํ์์ ๋น๋๋ฅผ ์ ์ ์์ ๋ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค | ๋งํฌ ์ฃผ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค |
O(1+@) (@ = ์ ์ฌ์จ(Load factor))
ํ ์ด๋ธ slot์ ์ ๊ทผํ๊ธฐ ์ํด O(1)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ ํด๋น ์ฌ๋กฏ์ ์๋ ๋ฆฌ์คํธ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด O(@)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฐ๋ฐฉ ์ฃผ์๋ฒ(Open Addressing)์ด๋ ์ถฉ๋์ด ์ผ์ด๋ ํค ๊ฐ์ ๋น์ด ์๋ ๋ค๋ฅธ ์ฃผ์๋ฅผ ์ฐพ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ชจ๋ ์์๋ฅผ ํด์ ํ ์ด๋ธ ์์ฒด์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ ํค์ ๊ฐ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์์ผ ํฉ๋๋ค.
์ ํ์ ์ธ ํํ๋ก ์ถฉ๋์ด ๋ฐ์ํ๋ฉด 1์ฉ ์ฆ๊ฐํ๋ฉด์ ๋น slot์ ์ฐพ๋ ๋ฐฉ์์
๋๋ค.
h(k)โ ์ถฉ๋ โ h(k)+1โ์ถฉ๋โ h(k)+2โ...
h`: Uโ{0,1,..., m-1} ์ด๋ผ๋ฉด ์ ํ ํ์์์ ์ฌ์ฉํ๋ ํด์ํจ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
h(k, i) = (h`(k) + i) mod m ( i=0,1...m-1 , m : table size)