Hash Collision

ํ•˜์ง€๋งŒ ์ž…๋ ฅ ๊ณต๊ฐ„์ด ๋ฌดํ•œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์‹œ์ ์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ž…๋ ฅ๋“ค์ด ๋™์ผํ•œ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋งคํ•‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ํ•ด์‹œ ์ถฉ๋Œ์ž…๋‹ˆ๋‹ค

๋‘ ๊ฐœ์˜ ์ž…๋ ฅ์ด ๋™์ผํ•œ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋งคํ•‘๋œ๋‹ค๋ฉด, ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Chaining

๋™์ผ 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

๊ฐœ๋ฐฉ ์ฃผ์†Œ๋ฒ•(Open Addressing)์ด๋ž€ ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ ํ‚ค ๊ฐ’์„ ๋น„์–ด ์žˆ๋Š” ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•ด์‹œ ํ…Œ์ด๋ธ” ์ž์ฒด์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋Š” ํ‚ค์˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Linear probing

์„ ํ˜•์ ์ธ ํ˜•ํƒœ๋กœ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด 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)

Last updated