1. ๋ผ๋น-์นดํ ์๊ณ ๋ฆฌ์ฆ
๋ผ๋น-์นดํ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์์ด์ ํด์ฑ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํด์ ๊ฐ์ผ๋ก ๋น๊ตํ๋ ์๊ณ ๋ฆฌ์ฆ
ํด์ ๊ฐ์ด ๋ค๋ฅด๋ค๋ฉด ๋ ๋ฌธ์์ด์ด ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋ณด์ฅํ๋ค. ํ์ง๋ง ๋ฌธ์์ด์ด ๋ฌ๋ผ๋ ํด์ ๊ฐ์ด ๊ฐ์ ์ ์๋ค.
๐ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ Spurious Hit์ด๋ผ ํ๋ค.
Spurious Hit ๋๋ฌธ์ ํด์ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ถ๊ฐ๋ก ๋ฌธ์์ด์ด ๊ฐ์์ง ๋น๊ตํ๋ ์์ ์ด ํ์ํ๋ค. ์ด ํน์ง์ ์ด์ฉํ์ฌ ๋ผ๋น-์นดํ ์๊ณ ๋ฆฌ์ฆ์ ํจํด์ ํด์๊ฐ์ ํ ์คํธ์ ๋ถ๋ถ ๋ฌธ์์ด์ ํด์๊ฐ๊ณผ ์ผ์นํ๋์ง ๋น๊ตํ๋ ์์ ์ ํ๋ค.
๋ฐ๋ผ์ ๋ผ๋น-์นดํ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ ๋ฌธ์์ด์ ๋ํ ํด์ ๊ฐ์ ๊ณ์ฐํด์ผ ํ๋ค.
- ๊ธธ์ด๊ฐ m์ธ ํจํด ์์ฒด
- ๊ธธ์ด๊ฐ m์ธ ํ ์คํธ์ ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด
2. ํด์ ํจ์
์ฌ์ฉ ์์
๐ฉ rolling hash
๊ฐ ์์น์์ ํด์ ํจ์๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๊ณ์ฐํ๋ ๊ฒ์ ๋๋ฌด ๋๋ฆฌ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ rolling hash๋ฅผ ์ฌ์ฉํ๋ค. rolling hash๋ window ์ฌ์ด์ฆ๋งํผ ์ด๋ํ๋ฉด์ ์ ๋ ฅ์ ๋ฐ์ ํด์๊ฐ์ ๊ตฌํ๋ค.
๐ rolling hash๋ฅผ ํตํด ์ฌ์ฉํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํด์ ํด์ ๊ฐ์ ๋น ๋ฅด๊ฒ ๊ณ์ฐํ ์ ์๋ค.
3. ์๊ฐ๋ณต์ก๋
pattern์ ๊ธธ์ด๋ฅผ M, text์ ๊ธธ์ด๋ฅผ N์ด๋ผ ๊ฐ์ ํ๋ค.
์ ์ฒ๋ฆฌ ๋จ๊ณ์ ์๊ฐ ๋ณต์ก๋๋ O(M)์ด๊ณ , ๋ฌธ์์ด ๊ฒ์ ๋จ๊ณ์ ์๊ฐ ๋ณต์ก๋๋ O(N)์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(M+N)์ด๋ค. (ํด์๊ฐ์ ๊ตฌํ ๋, ์ฒ์ ํ ๋ฒ ๊ตฌํด๋์ผ๋ฉด, ๋ค์ ํด์๊ฐ์ ๊ตฌํ ๋๋ ๊ฐ์ฅ ์ฒ์๊ฐ์ ํด์๊ฐ์์ ๋นผ์ฃผ๊ณ , ์๋ก ์ถ๊ฐ๋ ๋ถ๋ถ์ ํด์๊ฐ์ ๋ํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ)
์ต์ ์ ๊ฒฝ์ฐ์, ํด์ ํจ์๊ฐ ์ข์ง ์์์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฌธ์์ด์ด ๊ณตํต๋ ํด์๊ฐ์ ๊ฐ์ง ๊ฒฝ์ฐ O(MN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
์ฐธ๊ณ ์๋ฃ
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
KMP ์๊ณ ๋ฆฌ์ฆ (0) | 2024.05.05 |
---|---|
๋ธ๋ฃจํธ-ํฌ์ค ์๊ณ ๋ฆฌ์ฆ (0) | 2024.05.05 |
์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด(LCS) cf. ์ต์ฅ ๊ณตํต ๋ฌธ์์ด (0) | 2024.04.29 |
ํ๋ ฌ์ ์ฐ์์ ๊ณฑ์ (0) | 2024.04.29 |
ํฌ๋-ํ์ปค์จ ์๊ณ ๋ฆฌ์ฆ(์ต๋ ์ ๋ ๋ฌธ์ ) (3) | 2024.04.19 |