ํด์๋?
ํด์ ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ณํํ ๊ฐ์ ์ธ๋ฑ์ค๋ก ์ผ์ ํค์ ๊ฐ์ ์ ์ฅํด์ ๋น ๋ฅธ ๋ฐ์ดํฐ ํ์์ ์ ๊ณตํ๋ ์๋ฃ๊ตฌ์กฐ
ํด์์ ํน์ง
- ๋จ๋ฐฉํฅ ๋์ (ํค๋ฅผ ํตํด ๊ฐ์ ์ฐพ์ ์ ์์ง๋ง ๊ฐ์ ํตํด ํค๋ฅผ ์ฐพ๊ธฐ ๋ถ๊ฐ๋ฅ)
- ํค ์์ฒด๊ฐ ์ธ๋ฑ์ค์ด๋ฏ๋ก ๊ฐ์ ์ฐพ๊ธฐ ์ํ ํ์ ๋ถํ์
- ๊ฐ์ ์ธ๋ฑ์ค๋ก ํ์ฉํ๊ธฐ ์ํด ์ ์ ํ ๋ณํ๊ณผ์ ํ์
ํด์์ ๋์๋ฐฉ์
ํด์ ํ ์ด๋ธ(hash table) : ํค์ ๋์ํ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๊ณต๊ฐ
๋ฒํท(bucket) : ํด์ ํ ์ด๋ธ์ ๊ฐ ๋ฐ์ดํฐ
ํด์์ ํน์ฑ์ ํ์ฉํ๋ ๋ถ์ผ
๋จ๋ฐฉํฅ์ผ๋ก๋ง ๊ฒ์์ด ๊ฐ๋ฅํ ๋์ ๋น ๋ฅด๊ฒ ์ํ๋ ๊ฐ ๊ฒ์ (๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ๊ฒฝ์ฐ / ๋ณด์์ด ํ์ํ ๊ฒฝ์ฐ์ ํ์ฉ)
- ๋น๋ฐ๋ฒํธ ๊ด๋ฆฌ : ๋น๋ฐ๋ฒํธ๋ฅผ ๊ทธ๋๋ก ๋ ธ์ถํด ์ ์ฅํ๋ ๊ฒ์ ์ํํ๋ฏ๋ก ํด์ฑํ ๋น๋ฐ๋ฒํธ ์ ์ฅ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฒ์
- ๋ธ๋ก์ฒด์ธ : ๊ฐ ๋ธ๋ก์ ์ด์ ๋ธ๋ก์ ํด์๊ฐ์ ํฌํจํ๋ฉฐ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ํ์ธ
ํด์ํจ์๋ฅผ ๊ตฌํํ ๋ ๊ณ ๋ คํ ๋ด์ฉ
- ํด์ ํจ์๊ฐ ๋ณํํ ๊ฐ์ ์ธ๋ฑ์ค๋ก ํ์ฉํด์ผํ๋ฏ๋ก ํด์ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ๋์ผ๋ฉด ์๋๋ค.
- ํด์ ํจ์๊ฐ ๋ณํํ ๊ฐ์ ์ถฉ๋์ ์ต๋ํ ์ ๊ฒ ๋ฐ์ํด์ผ ํ๋ค.
(์ถฉ๋ : ์๋ก ๋ค๋ฅธ ๋ ํค์ ๋ํด ํด์ฑ ํจ์๋ฅผ ์ ์ฉํ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ ๊ฒ์ ์๋ฏธ)
์์ฃผ ์ฌ์ฉํ๋ ํด์ํจ์
1) ๋๋์ ๋ฒ (division method)
โ(๐ฅ) = ๐ฅ ๐๐๐ ๐
- x = ํค / m = ์์
- ํค๋ฅผ ์์๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ (์ถฉ๋์ ์ค์ด๊ธฐ ์ํด ์์ ์ฌ์ฉ)
- ๋๋จธ์ง๋ฅผ ์ทจํ๋ ์ฐ์ฐ์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ด๋ผ๊ณ ํ๋ฉฐ ์ฐ์ฐ์๋ก % ์ฌ์ฉ
- m์ ๋ชจ๋๋ฌ ์ฐ์ฐํ์ ๋ ๋์ฌ ์ ์๋ ๊ฐ์ 0~(m-1)์ด๋ฏ๋ก ํด์ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ m (ํฐ ์์๋ฅผ ์ฐพ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ )
2) ๊ณฑ์ ๋ฒ (multiplication method)
โ(๐ฅ) = (((๐ฅ โ ๐ด) ๐๐๐ 1) โ ๐)
- m = ์ต๋ ๋ฒํท์ ๊ฐ์ / A = ํฉ๊ธ๋น (์ํ์ ์ผ๋ก ์์์ ๊ธธ์ด๋ฅผ ๋๋์์ ๋ ์ ์ฒด:๊ธด ๋ถ๋ถ = ๊ธด ๋ถ๋ถ:์งง์ ๋ถ๋ถ์ธ ๋น์จ)
- ๊ณฑ์
๋ฒ์ ๊ณ์ฐํ๋ ๋ฐฉ์
- ํค์ ํฉ๊ธ๋น ๊ณฑํ๊ธฐ
- ์์์ ๊ตฌํ ๊ฐ์ ๋ชจ๋๋ฌ 1 ์ทจํ๊ธฐ (์ ์ ๋ถ๋ถ์ ๋ฒ๋ฆฌ๊ณ ์์ ๋ถ๋ถ ์ทจํ๊ธฐ)
- ์์์ ๊ตฌํ ๊ฐ์ ๊ฐ์ง๊ณ ์ค์ ํด์ ํ ์ด๋ธ์ ๋งคํ
๋ฌธ์์ด ํด์ฑ
โ๐๐ โ(๐ ) = (๐ [0] + ๐ [1] โ ๐ + ๐ [2] โ ๐2 โฆ ๐ [๐โ1] โ ๐n-1) ๐๐๐ ๐- ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ์ซ์๋ก ๋ณํํ๊ณ ์ด ์ซ์๋ค์ ๋คํญ์์ ๊ฐ์ผ๋ก ๋ณํํด์ ํด์ฑ
- ํด์ ํจ์๋ฅผ ์ ์ฉํ ๊ฐ์ด ํด์ ํ
์ด๋ธ ํฌ๊ธฐ์ ๋นํด ๋๋ฌด ํด ๊ฒฝ์ฐ ์์ ์์
ํ์
→ ๋ง์ ์ ์ ๋ถ ํ ๋ค์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํ๋ ๋์ ์ค๊ฐ์ค๊ฐ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํด ๋ํ๊ฐ์ ๋ชจ๋๋ฌ ์ฐ์ฐ
์ถฉ๋ ์ฒ๋ฆฌ
์ถฉ๋(collision) : ์๋ก ๋ค๋ฅธ ํค์ ๋ํด ํด์ ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ด ๊ฐ์ ๊ฒ (ํ๋์ ๋ฒํท์ 2๊ฐ์ ๊ฐ์ ๋ฃdj ์ถฉ๋ ์ฒ๋ฆฌ๊ฐ ํ์)
1) ์ฒด์ด๋์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ
์ฒด์ด๋ : ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ํด๋น ๋ฒํท์ ๋งํฌ๋๋ฆฌ์คํธ๋ก ๊ฐ์ ํด์๊ฐ์ ๊ฐ์ง๋ ๋ฐ์ดํฐ ์ฐ๊ฒฐ
- ํด์ ํ ์ด๋ธ ๊ณต๊ฐ ํ์ฉ์ฑ์ด ๋จ์ด์ง๋ค. (์ถฉ๋์ด ๋ง์์ง๋ฉด ๋งํฌ๋๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ ธ ํด์ ํ ์ด๋ธ ๊ณต๊ฐ ์ฌ์ฉ๋↓)
- ๊ฒ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค. (์ถฉ๋์ด ๋ง์ผ๋ฉด ๋งํฌ๋๋ฆฌ์คํธ ์์ฒด์ ํ๊ณ๋ก ๊ฒ์ ์ฑ๋ฅ ์ ํ)
2) ๊ฐ๋ฐฉ ์ฃผ์๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ
๊ฐ๋ฐฉ ์ฃผ์๋ฒ(open addressing) : ๋น ๋ฒํท์ ์ฐพ์ ์ถฉ๋๊ฐ์ ์ฝ์ → ํด์ ํ ์ด๋ธ์ ์ต๋ํ ํ์ฉํ๋ฏ๋ก ํจ์จ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
- ์ ํ ํ์ฌ ๋ฐฉ์ (linear probing)
- ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ค๋ฅธ ๋น ๋ฒํท์ ์ฐพ์ ๋๊น์ง ์ผ์ ํ ๊ฐ๊ฒฉ์ผ๋ก ์ด๋
- ํด์ ์ถฉ๋์ด ๋ฐ์ํ ๊ฐ๋ผ๋ฆฌ ๋ชจ์ด๋ ์์ญ์ด ์๊ฒจ ํด๋ฌ์คํฐ ํ์ฑ (์ด๋ฌํ ๊ตฐ์ง์ด ์๊ธฐ๋ฉด ํด์๊ฐ์ด ๊ฒน์น ํ๋ฅ ์ฆ๊ฐ)
- ์ด์ค ํด์ฑ ๋ฐฉ์
- ํด์ ํจ์๋ฅผ 2๊ฐ ์ฌ์ฉ
- ๋ ๋ฒ์งธ ํด์ํจ์๋ ์ฒซ ๋ฒ์งธ ํด์ํจ์๋ก ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ํด๋น ์์น ๊ธฐ์ค ์ด๋ป๊ฒ ์์น๋ฅผ ์ ํ ์ง ๊ฒฐ์ ํ๋ ์ญํ
- ์ ํ ํ์ฌ์ ๋น์ทํ๊ฒ ๋ํ๋ ๋ฐฉ์์ด์ง๋ง ์ฃผ์ด์ง๋ ํค๋ง๋ค ์ ํํ๋ ์์น๋ฅผ ๋ค๋ฅด๊ฒ ํด์ ํด๋ฌ์คํฐ ํ์ฑ ๊ฐ์
ํด์ ๋ฌธ์ ์ ํต์ฌ์ ํค์ ๊ฐ์ ๋งคํํ๋ ๊ณผ์ !!
โป ์ฐธ๊ณ ์๋ฃ โป
'๊ณต๋ถ ๐ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ (3) ํ (0) | 2024.07.02 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ (2) ์คํ (0) | 2024.06.25 |
[์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ (1) ๋ฐฐ์ด๊ณผ ๋ฆฌ์คํธ (0) | 2024.06.21 |
[์๊ณ ๋ฆฌ์ฆ] ์๊ฐ ๋ณต์ก๋ (0) | 2024.06.19 |
[์๊ณ ๋ฆฌ์ฆ] ์ค๋น ์ฌํญ (0) | 2024.06.17 |