ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
๊ฒ์ ๋ฌธ์
- n๊ฐ์ ํค๋ฅผ ๊ฐ์ง ๋ฐฐ์ด S์ ํค x๊ฐ ์ฃผ์ด์ก์ ๋, x=S[i]๊ฐ ๋๋ ์ฒจ์ i๋ฅผ ์ฐพ๋ ๊ฒ
- ์๋ค๋ฉด ์ค๋ฅ๋ก ์ฒ๋ฆฌํ๋ค.
- ๊ฒฐ๋ก : ์ด๋ถ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์๋ค.
์ด์ง ๊ฒ์ ์ํ ๊ณต๊ฐ ํธ๋ฆฌ ์์ฐจ ๊ฒ์์ ๋ต์ด์๋ค.
๋ณด๊ฐ ๊ฒ์
๋ณด๊ฐ ๊ฒ์
- ๋น๊ต ์ด์ธ์ ๋ค๋ฅธ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๊ฒ์?
- 10๊ฐ์ ์ ์๋ฅผ ๊ฒ์ํ๋๋ฐ, ์ฒซ๋ฒ์งธ ์ ์๋ 0-9์ค ํ๋,
- ๋๋ฒ์งธ ์ ์๋ 10-19์ค ํ๋, ์ด๋ฐ์์ผ๋ก ๋์ด์๋ค๊ณ ํ์.
- ์ด๋ด ๊ฒฝ์ฐ ๊ฒ์ํค x์ S[1+x//10]์์ ๋น๊ต
- ์ฆ, 25๋ S[1+25//10] = S[3]์์ ๋น๊ต
Linear Interpolation
์ ํ ๋ณด๊ฐ
์ ํ ๋ณด๊ฐ ๋ฐฉ๋ฒ
์ ํ ๋ณด๊ฐ์ ์๊ฐ ๋ณต์ก๋
- ์๊ฐ ๋ณต์ก๋
- ์ต์ ์ ๊ฒฝ์ฐ ์์ฐจ๊ฒ์๊ณผ ๊ฐ์์ง
ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ๋์ ๊ฒ์
- ์ ์ ๊ฒ์
- ๋ฐ์ดํฐ๊ฐ ํ๊บผ๋ฒ์ ์ ์ฅ๋์ด ์ถํ์ ์ถ๊ฐ๋ ์ญ์ ๊ฐ ์ด๋ฃจ์ด์ง์ง ์๋ ๊ฒฝ์ฐ
- ๋์ ๊ฒ์
- ๋ฐ์ดํฐ๊ฐ ์์๋ก ์ถ๊ฐ, ์ญ์ ๋๋ ์ ๋์ ์ธ ๊ฒฝ์ฐ
- ๋์ ๊ฒ์์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์. ๊ณ์ํด์ ์ ๋ ฌ์ ํด์ผํจ
์ด์ง ๊ฒ์ ํธ๋ฆฌ
์ด์ง ๊ฒ์ ํธ๋ฆฌ
- ์ฌ์ฉํ๋ ์ด์
- ์ผ๋จ inorder ์ํ (์ผ์ชฝ ์์ ์ค๋ฅธ์ชฝ)์ ํ๊ฒ ๋๋ฉด ์ ๋ ฌ๋ ์์๋ก ์ถ์ถ ๊ฐ๋ฅ
- ํ๊ท ๊ฒ์ ์๊ฐ์ ์งง๊ฒ ์ ์ง
- ๋ง์ฝ ๊ท ํ์กํ ํธ๋ฆฌ๋ผ๋ฉด ์งง๊ฒ ์ ์ง ๊ฐ๋ฅ
- ํ์ง๋ง ๊ท ํ์ ์ ์งํ๋ค๋ ๋ณด์ฅ์ด ์๋ค.
- ์ต์ ์ ๊ฒฝ์ฐ linked list์ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋๋ค.
- Randomํ๊ฒ ๋ค์ด๊ฐ ๊ฒฝ์ฐ ํ๊ท ์ ์ผ๋ก ํจ์จ์ ์ธ ๊ฒ์์๊ฐ์ ๊ธฐ๋ํ ์ ์์
- ์ฝ์ ๋ ๋ ๊ท ํ ํธ๋ฆฌ๋ผ๋ฉด logn์ผ๋ก ๊ฐ๋ฅ
- ์ญ์ ๋๋ ๊ฒฝ์ฐ๋ ์ฌ์ง์ ๋ณด์.
๋๊ฐ์ ์์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
ํ๊ฐ์ ์์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
- ์ญ์ ์๋๋ฆฌ์ค๋ ๋๊ฐ์ง๊ฐ ์๋ค.
- ๋๊ฐ์ ์์ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
- ํด๋น ๋ ธ๋๋ณด๋ค ์์ ๋ ธ๋์ค ๊ฐ์ฅ ํฐ ๋ ธ๋๋ก ๋์ฒด
- ํด๋น ๋ ธ๋๋ณด๋ค ํฐ ๋ ธ๋์ค ๊ฐ์ฅ ์์ ๋ ธ๋๋ก ๋์ฒด
- ํ๊ฐ์ ์์ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
- ์์ ๋ ธ๋๋ฅผ ๋ฐ๋ก ์ฌ๋ ค๋ฒ๋ฆผ
- ๋๊ฐ์ ์์ ๋
ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ
์ด์ง ๊ฒ์ํธ๋ฆฌ ๊ฒ์ ๋ถ์
- ๊ฒฐ๊ตญ ์ฌ์ ํ ์ต์ ์ ๊ฒฝ์ฐ O(n)
๊ฒ์ ์๊ฐ ํฅ์์ ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ
- ๊ท ํ์ด ์ค์ํ๋ค.
- ๊ท ํ ํธ๋ฆฌ
- AVL ํธ๋ฆฌ
- ์ถ๊ฐ, ์ญ์ , ๊ฒ์ ๋ชจ๋ O(logn)
- B-ํธ๋ฆฌ
- ์ ๋ง๋๋ค์ ๊น์ด๋ฅผ ํญ์ ๊ฐ๊ฒ ์ ์ง
- ์ถ๊ฐ, ์ญ์ , ๊ฒ์ ๋ชจ๋ O(logn)
- Red-Black Tree
- ์ถ๊ฐ, ์ญ์ , ๊ฒ์ ๋ชจ๋ O(logn)
- AVL ํธ๋ฆฌ
AVL ํธ๋ฆฌ
- ์ข์ฐ Subtree์ ๋์ด ์ฐจ๊ฐ ์ต๋ 1์ธ ์ด์ง ํ์ ํธ๋ฆฌ AVL ํธ๋ฆฌ
๊ท ํ ์ ์ง ๋ฐฉ๋ฒ
- ์ฌ๊ตฌ์ฑ ์์
- ์ผ๋จ์ ์์ ๊ทธ๋ฆผ์ ๊ตฌํ์ด ์ดํด๊ฐ์ง ์์ง๋ง ๋ณด๋ฉด
- case 1
- ์๋ก ์ฝ์ ํ์ ๋, ์ผ์ชฝ์ผ๋ก ์ค์ค์ด ๋ค๋ฐ์ด๋๊น ์ค๋ฅธ์ชฝ์ผ๋ก ํ์
- ๊ทธ๋ฌ๋๋ ์์ชฝ ์ ๋๊ฐ์ด ๋ง์ (์ ๋๊ฐ์ฐจ๊ฐ 1)
- case 2
- ์ผ๋จ ์ฝ์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ์กฐ๊ฑด์ ์๋ง์
- ์ผ์ชฝ์ผ๋ก ํ์ ํด๋ด
- ์๋จ
- ๋ ์์ ๋ ธ๋์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ํด๋ด
- case 3, 4 ๋ฐ๋์์ ๋๊ฐ์ด ์งํ
- ์ ๋๋ก๋ ์๊ณ ๋ฆฌ์ฆ ์ค๋ช ์ ์๋ต, ์กฐ์์ ํ๋ฉด ๋๋ค๋ ๊ฑฐ๋ง ์ ์ฑ์ ์ผ๋ก ์ดํด
- ์ทจ์ง : ์กฐ์์ ํตํด ๊ท ํ ํธ๋ฆฌ๊ฐ๋ฅ
B Tree
2-3 tree
- 2-3 Tree
- ๊ฐ ๋ง๋์๋ ํค๊ฐ ํ๋ ๋๋ ๋๊ฐ๊ฐ ์กด์ฌํ๋ค. (B, [B, C])
- ๊ฐ ๋ด๋ถ ๋ง๋์ ์์ ์๋ ํค์ ์ + 1์ด๋ค.
- ์ง๊ธ ๊ฐ์ ๊ฒฝ์ฐ ์ฒซ๋ฒ์งธ๋ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ
- ๋๋ฒ์งธ๋ ์ผ, ์ค, ์ค
- ์ฃผ์ด์ง ๋ง๋์ ์ผ์ชฝ ๋ถ๋ถํธ๋ฆฌ์ ๋ชจ๋ ํค๋ ํด๋น ๋ง๋์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
- ์ค๋ฅธ์ชฝ์ ํฌ๊ฑฐ๋ ๊ฐ๋ค.
- ๋ชจ๋ ์๋ง๋๋ ์์ค์ด ๊ฐ๋ค. โ ์ด๋ป๊ฒ? ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์
2-3 ํธ๋ฆฌ์์ ๋ฐ์ดํฐ ์ถ๊ฐ์ ๊ท ํ ์ ์ง ๋ฐฉ๋ฒ
์ง๊ธ 35๋ฅผ ๋ฃ์ผ๋ ๋งจ ์ค๋ฅธ์ชฝ์ ์ ๋ ฅ๋์ด์ ํ๋์ ๋ง๋์ ํ๋ ํน์ ๋๊ฐ์ ํค๊ฐ ๋ค์ด๊ฐ์ผ ํจ์๋ ๋ถ๊ตฌํ๊ณ ๊ทธ๋ ์ง ์์๋ค.
continueโฆ
- 25, 30, 35์์ ์ค์์ ์๋ ๊ฐ์ ์๋ก ์ฌ๋ฆฐ๋ค.
- ๋ค์ ์ค์์ ์๋ ๊ฐ(20)์ ์๋ก ์ฌ๋ฆฐ๋ค.
- ์ด ๋, 17, 30์ ํ๋์ ๋ ธ๋๋ก ๋ถ๊ธฐํ๋ค.
- ํ์ ๋ ธ๋์ ์๋ 16, 18, 25, 35๋ ์ด ๋ถ๊ธฐ๋ ๊ฒ์ ๋ถ๋๋ค.
- ๋ฃจํธ ๋ ธ๋์์๋ ์ค์์ ์๋ 15๋ฅผ ์๋ก ์ฌ๋ฆฐ๋ค.
- ํ์ ๋ ธ๋๊ฐ ๋ถ๊ธฐ๋ ๋ ธ๋์ ๋ถ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ณด๋ฉด, ์ถ๊ฐํ์ ๋, ํธ๋ฆฌ์ ์กฐ์์ logn๋งํผ ์ผ์ด ๋๋ค.
Hashing
Hash
- ์ด๋ ์ผ์ ํ ๊ฐ์์ ๊ฐ์ ์ ์ฅํ๋ค๊ณ ํ์ ๋, ๋ง์ฝ key๊ฐ ์ฃผ๋ฏผ ๋ฑ๋ก ๋ฒํธ๋ผ๋ฉด, ๋ชจ๋ ๋ฒํธ๋ฅผ ์ ์ฅํ๊ฒ ๋ง๋ค ์๋ ์๋ค.
- ์ฆ, ๋ฐฐ์ด์ด๋ ํธ๋ฆฌ๋ ์ด๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ ๋ง๋ค๊ฒ ๋๋ค.
- ๊ทธ๋ฐ๋ฐ ๋๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ์ด๊ฒ์ด ํด์ฑ์ด๋ค.
- ์๋ฅผ ๋ค์ด 100๊ฐ์ ๊ฐ์ ์ ์ฅํ ๋, 0~99๊น์ง์ index๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด์ ๋ง๋ค์ด ๋๊ณ ,
- ํน์ key(์ฃผ๋ฏผ๋ฒํธ)๊ฐ ๋ค์ด์์ ๋ ํด์ํจ์ (key % 100)๋ฅผ ํต๊ณผํ ๊ฐ์ ํด๋น ๋ฐฐ์ด์ index๋ก ์ฌ์ฉํ๋ ๊ฒ
์ ๊ทธ๋ฐ๋ฐ ์๊ฐํด๋ณด๋ฉด ์ฃผ๋ฏผ ๋ฒํธ๋ฅผ ํด์ํจ์๋ฅผ ํต๊ณผํด์ ๋์จ ์ธ๋ฑ์ค๊ฐ ํญ์ ๋ค๋ฅผ๊น? ๋ง๋ ์๋๋ค. ์ค์ ๋ก 100๊ฐ์ ํค๊ฐ ์๋ก ๋ค๋ฅธ ๋ฐฉ์ ๋ค์ด๊ฐ ํ๋ฅ ์ ๊ณ์ฐํด๋ณด๋ฉด, (๋ค๋ฅธ ํด์ฌ๊ฐ์ ๊ฐ์ง ํ๋ฅ )
๊ฑฐ์ 0์ ๊ฐ๊น์ด ๊ฐ์ด ๋์จ๋ค. ๊ฒฐ๊ตญ ์ถฉ๋์ด ๋ฐ์ํ๋ค.
์ถฉ๋์ ํผํ๋ ๋ฐฉ๋ฒ
์ถฉ๋ ํผํ๋ ๋ฐฉ๋ฒ
- open Hashing
- closed addressing
- chaining
- separate chaining
- closed Hashing(open addressing)
- linear probing
- quadratic probing
- double Hashing
๋จ์ด๊ฐ ๋๋ฌด ์ด๋ ค์ฐ๋ ๋ํ์ ์ธ ๊ฒ๋ง ์์๋์.
- open Hashing
- ํด์ ๊ฐ์ ๋ฐ๋ผ์ ์ค์ค์ด ๋ค๋ฐ๋ก ์ฐ๊ฒฐํด๋๊ฒ
- radix sort์์ ํ๋ ๊ฒ ์ฒ๋ผ bucket๊ณผ ์ ์ฌํ ๊ฐ๋ ์
- ๋ฌธ์ ๋ ์์๊ฒ ์ง๋ง ์ค๋ณต๋์ ๋ง์ ๊ฒฝ์ฐ ๋๋ฌด ํ์์ด ๋๋ ค์ง
- closed Hashing
- ๋ฐฐ์ด ๋ด์๋ค๊ฐ ์ ์ฅํ๋ ๋ฐฉ์
- ํน์ ํด์๊ฐ์ผ๋ก ์ ๊ทผํ์ ๋ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์๋๋ก ๋ด๋ ค๊ฐ๊ฑฐ๋ ์๋ก ์ฌ๋ผ๊ฐ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ์ ์ฅ
Open Hashing
์ฑ๊ณตํ์ ๋, ํ๊ท ๊ฒ์ ์๊ฐ ์คํจ์, ์ฑ๊ณต์ ์๊ฐ ๋น๊ต
- ์ต์
์ ์ํฉ
- ๋ชจ๋ ํค๊ฐ ๊ฐ์ ํด์ฌ๊ฐ์ ๊ฐ์ง
- ๊ฑฐ์ ๋ญ 0์ด๊ธด ํ๋ค.
- ํจ์จ์ ์ด๊ฒ ๋๋ ค๋ฉด ๊ท ์ผํ๊ฒ ๋ถํฌ๋๋ ๊ฒ์ด ์ต์
- n๊ฐ์ ํค๊ฐ m๊ฐ์ ๋ฐ๊ตฌ๋์ ๋ค์ด๊ฐ ์๋ค๋ฉด ๊ฒฐ๊ตญ n/m๊ฐ์ ํค๊ฐ ํ๊ท ์ ์ผ๋ก ๋ค์ด๊ฐ ์๋๊ฒ
- ์ฆ ๋ด๊ฐ ์ฒ์์ ์ ๊ทผํ๋๋ซ ๋ชป์ฐพ์์ด, ๊ทธ๋ผ n/m๊ฐ๋ ์ฐพ์์ผ ํ๋ค๋ ๊ฑฐ์ง
- ๊ทธ๋ผ ๊ฒ์์ ์ฑ๊ณตํ ๊ฒฝ์ฐ ๋น๊ตํ์๋ 1๋ฒ์ ๋์์ ๋ ์๊ฐ + 2๋ฒ์งธ์ ๋์์ ๋ ์๊ฐ + n/m๋ฒ์งธ ๋์์ ๋ ์๊ฐ์ ๊ธฐ๋๊ฐ์ ๊ตฌํ๋ฉด ๋๋ค.
Closed Hashing
hash image Double Hashing
linear, quadratic์ ์ดํด๊ฐ ์ฌ์ฐ๋ ๋๋ธ๋ง ๊ฐ์ ธ์๋ค.
- ์ฉ์ด
- k = key
- m = hash table size
- linear Hashing
- ๊ฒน์น๋ฉด, ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด์ ๋น์นธ์ ์ ์ฅ
- i = 0, 1, 2, 3โฆ
- quadratic probing
- ์ ๊ณฑํด์ ์ด๋ํด๋ฒ๋ฆผ
- double Hashing
- ์ถฉ๋ํ ๊ฒฝ์ฐ h2 ์ฌ์ฉ
- ์๋ฃ๊ฐ ์ญ์ ๋๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
linear ์ญ์ ๊ฒฝ์ฐ ๋ฌธ์ ์
- a, b๋๋ค ํด์๊ฐ์ด 5์ธ ์ํฉ
- ๋๋ค ๋ฃ์์ง, ์๋์ด ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ๋ ธ์ผ๋๊น
- ๊ทผ๋ฐ a ์ญ์ ํจ
- b ๊ฒ์ํ ๋
- ??
์ ํ ๋ฌธ์
- ํค๊ฐ n๊ฐ์ธ ๋ฆฌ์คํธ์์ k๋ฒ์งธ๋ก ํฐ(์์) ํค๋ฅผ ์ฐพ๋ ๋ฌธ์
- ํค๋ ์ ๋ ฌ๋์ด ์์ง ์๋ค.
์ต๋ํค ์ฐพ๊ธฐ
- ์ต๋(์ต์)ํค ์ฐพ๊ธฐ : ๊ฒฐ๋ก ์ ์ผ๋ก n-1๋ฒ์ ๋น๊ต๋ฅผ ์ํํด์ผ ํ๋ค.
- ๊ทธ๋ผ ํ๋ฒ์ ์ต๋ํค, ์ต์ํค๋ฅผ ์ฐพ๋๋ค๋ฉด?
์ต์ํค์ ์ต๋ํค ์ฐพ๊ธฐ
์ต์ํค์ ์ต๋ํค ๋์์ ์ฐพ๊ธฐ
- ํ๋ฒ์ ๋ฃจํ์์ ์ต๋, ์ต์ ๋น๊ต๋ฅผ 2๋ฒ์ฉ n-1๋ฒ ํด์ผํ๋ค.
- W(n) = 2(n-1)
๊ทธ๋ฐ๋ฐ ์ด๋ณด๋ค ์ข์ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋ค.
ํค๋ฅผ ์ง์ง์์ ์ฐพ๊ธฐ
ํค๋ฅผ ์ง์ง์ฐ๊ธฐ
- ์ง์ ์ง์ด์ ๋๋ง ๋น๊ตํ์ฌ ํฐ๋, ์์๋์ ๋๋๋ค.
- ๋ ๊ทธ๋ฃน์ ๋ง๋ค์ด์ ๊ฐ๊ฐ์ ๊ทธ๋ฃน์์ ํฐ๋ ๊ทธ๋ฃน์ ์ต๋๊ฐ
- ์์ ๊ทธ๋ฃน์ ์์ ๊ฐ์ ๊ตฌํ๋ค.
๋์ํ๋ ์ด์ ๋, ๊ฒฐ๊ตญ ์ฒ์์ ์์ ์ง์ด์ ๊ทธ๋ฃน์ ๋๋๋ ๊ฒ์ด ์ต๋๊ฐ์ด ๋์ฌ ์ ์๋ ํ๋ณด ์ง๋จ, ์ต์๊ฐ์ด ๋์ฌ ์ ์๋ ํ๋ณด์ง๋จ์ ๋๋๋๋ฐ ์๋ค. ๊ทธ๋ผ ๊ฐ๊ฐ์ ๊ทธ๋ฃน์์ ๋ฌด์กฐ๊ฑด ์ต๋, ์ต์๊ฐ ๋์ฌ ์ ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ญ.. ์ฝ๊ฐ ๋์์ก๋ค.
์ฐจ๋ํค (second largest key) ์ฐพ๊ธฐ
ํ ๋๋จผํธ ๋ฐฉ๋ฒ
- ๋จ์ํ ๋ฐฉ๋ฒ
- ์ต๋ํค๋ฅผ ์ฐพ์ (n-1๋ฒ ๋น๊ต)
- ๊ทธ ๋ค์ ์ต๋ํค๋ฅผ ์ฐพ์(n-2)
- Tournament Method
- ํ ๋๋จผํธ๋ฅผ ์งํํ์ฌ ์ต๋ ์ฐ์น์๊ฐ ์ต๋ํค
- ๊ทธ๋ผ ์ฐ์น์ํํ
์ง๋
์๋ค ์ค์ ์ฐจ๋ํค๊ฐ ์๊ฒ ์ง.
- ์ ์๊ฐํด๋ด. ๋ด๊ฐ ์ต๊ฐ์์ผ
- ๊ฒฐ์น์์ ์ด๊ฒผ์ด, ๊ทธ๋ผ 2๋ฑ๋ฐ๋ฆฌ๊ฐ ๊ฒช๊ณ ์จ ์ ๋ค์ ์ด๋ฏธ ๋๋ณด๋ค ์ค๋ ฅ์ด ์ข์ ์ ์์ด
- ๊ทธ๋ผ ๋ด๊ฐ ์ด๊ธฐ๊ณ ์จ ๋ ์๋ค ์ค์ 2๋ฑ๋ฐ๋ฆฌ๋ณด๋ค ์ค๋ ฅ์ด ์ข์์๋ ์์ง. ๊ทธ์น.
- ๊ทธ๋ฌ๋๊น ์ฐ์น์๊ฐ ์ ๋ผ๊ณ ์จ๋๋ค๋ง ์กฐ์ฌํ๋ฉด 2๋ฒ์งธ ์ค๋ ฅ์๊ฐ ๋์ค๋ ๊ฑฐ์ง.
์๊ฐ ๋ณต์ก๋ ๊ณ์ฐ
- n = 8ํ
- ์ฒซ๋ฒ์งธ 4๋ฒ, ๋๋ฒ์ฌ 2๋ฒ ๋ง์ง๋ง 1๋ฒ
- ์ด ์ํฉ ํ์ =
- ๊ฒฐ๊ตญ ์ต๋ํค ์ฐพ๋๋ฐ ์์ด์๋ ๋์ผํ ์๊ฐ์ด ์์๋จ
- ์ฐจ๋ํค๋ฅผ ์ฐพ์ ๋๋, ์ฐ์น์ ๊ธฐ๋ฐ์ผ๋ก ์ง๋๋ง ์ฑ๊ธฐ๋ฉด ๋๋๋ฐ ๊ทธ๋ ๊น์ด๊ฐ logn
- ๊ทธ๋ผ ํด๋น ๋ฆฌ์คํธ์์ ๋น๊ตํ์๋ logn-1
- ๊ฒฐ๊ณผ์ ์ผ๋ก n_logn-2
k๋ฒ์งธ ์์ ํค ์ฐพ๊ธฐ
- ์ ๋ ฌ ํ k๋ฒ์ฌ ์ ํ nlogn
- Quick sort์ partition ๋ฐฉ๋ฒ
- O(n) ๋ฐฉ๋ฒ : ?
Partition ๋ฐฉ๋ฒ
Partition
- ํต์ํธ๋ฅผ ์งํํ ๋ ๋๊ฐ์ง ํจ์๊ฐ ์๋ค.
- Partition
- Merge
- ์ด ๋ partition์, ํน์ ํผ๋ด๋ณด๋ค ์์ ๊ฐ์ ์ผ์ชฝ์, ํฐ๊ฐ์ ์ค๋ฅธ์ชฝ์ ๋๋ ๋ฐฉ์์ด๋ค.
- ์ต์ ์ ๊ฒฝ์ฐ(๋ชจ๋ ๋น๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด๋์ด ์๋ค๋ฉด) O(n^2)
- ๊ทธ๋ฐ๋ฐ ์ด๋ฌ๋ฉด ์ข์ ์ ์ด ๋ญ๋๋ฉด, ํด๋น ํผ๋ด์ด ๋ช๋ฒ์งธ๋ก ํฐ์ง ํ๋ฒ์ ํจ์๋ฅผ ์งํํ๋ ๋์ ์ ์ ์๋ค.
- ๋ง์ฝ ํ์ฌ ์์น๊ฐ k๋ณด๋ค ์๋ค๋ฉด, ์ค๋ฅธ์ชฝ์ ํ์ํด์ ์์๋ด๋ฉด ๋๊ณ ,
- ํฌ๋ค๋ฉด ์ผ์ชฝ์ ํ์ํ๋ฉด ๋๋ค.
์๋ ์ฝ๋
- ์๊ฐ ๋ณต์ก๋
- ์ต์ ์ ๊ฒฝ์ฐ O(n^2)
- ์ต๊ณ ์ ๊ฒฝ์ฐ (ํด๋น ํผ๋ด์ด ๊ณ์ํด์ ์ค๊ฐ์ ์์นํ ๊ฒฝ์ฐ)
- ๊ทธ๋ฌ๋ฉด ๊ณ์ํด์ ๋ฐ์ผ๋ก ๋๋๊ฒ ๋๊ณ , ๋ง์ฝ 8๊ฐ๋ผ๋ฉด ์ฒ์์ 8๊ฐ ๋น๊ต
- ๊ทธ๋ค์์ 4๊ฐ๋น๊ต
- ๊ทธ๋ค์์ 2๊ฐ ๋น๊ต
- ๋ง์ง๋ง์ 1๊ฐ ๋น๊ต
- ํ๊ท ์ ์ผ๋ก 3n
์ ํ ์๊ฐ ๋ฐฉ๋ฒ
- ๋ฐ์ดํฐ๋ฅผ 5๊ฐ์ ๋ฌถ์์ผ๋ก ๋ง๋ ๋ค.
- ๊ฐ๊ฐ์ ๋ฌถ์์์ ์ ๋ ฌํ๋ค.
- ๊ฐ์ด๋ฐ ๊ฐ์ ๋ชจ์์ M ๋ฐฐ์ด์ ๋ง๋ ๋ค. (์ค์์ ์์นํ ์ ์๋ ๊ฐ์ ํ๋ณด)
- M ๋ฐฐ์ด์์ ๊ฐ์ด๋ฐ๋ฅผ ์ฐพ๋๋ค. (๊ทธ๋ฅ ๊ฐ์ด๋ฐ ์์น๋ง ์ฐพ๊ธฐ ์ํจ)
- ๊ทธ๋ผ ์ ์ฒด ๋ฐ์ดํฐ์์ ๊ฐ์ด๋ฐ์ ์์น๋ง ์์๋๋ค. ์ ์ฒด๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ์ง ์๊ณ .
- ์ฌ๊ธฐ์, ๊ทธ ๊ฐ์ด๋ฐ ๊ฐ m์ ๊ธฐ์ค์ผ๋ก ์์์ชฝ, ํฐ์ชฝ์ด ์์นํ ์ ์๋ค.
- ๋ง์ฝ์ ๋ด๊ฐ ์ฐพ๊ณ ์ํ๋ ๋ฒ์งธ k๊ฐ S1๋ณด๋ค ์์ผ๋ฉด, ๊ทธ ์ง๋จ์ผ๋ก ๊ฐ์ ์ฐพ์
- S1, S2 ๋ํด์ k๋ณด๋ค ํฌ๋ฉด ์ค์์ ๋ต์ด ์๋ค๋ ์๋ฆฌ๋๊น ๋ฆฌํด
- ๊ทธ๋ ์ง ์์ผ๋ฉด S3์ ์๋ค๋ ์๋ฆฌ๋๊น ๊ทธ๊ณณ์ ํ์
- ์ด ๋ k-s1-s2์ธ ์ด์ ๋ s3์์ k-s1-s2๋ฒ์งธ์ ์์น๊ฐ ๋ต์ด๊ธฐ ๋๋ฌธ
์์ฌ ์ฝ๋
- 5๋ก ๋๋ ๋ญ์น๋ฅผ ์ ๋ ฌํ๋ ๊ฒ : n/5 * 5log5 = nlog5 = O(n)
- M์ ๋ํด์ M/2๋ฒ์จฐ ์์น ๊ตฌํ๊ธฐ : T(n/5)
- 1/5๋ก ๋ฐฐ์ดํฌ๊ธฐ๊ฐ ์ค์ด๋ฆ
- ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๊ฐ n์ธ ๊ฒ์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ์ ์ ์์
- m์ ๋ํด์ ๊ตฌํ๋ค๋ฉด, ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก S1, S2, S3๋ฅผ ๋๋ ์ผํจ
- S ๋ฐฐ์ด์ด ์ ๋ ฌ์ด ๋์ด์์ง ์์ ์ํ์ด๊ธฐ ๋๋ฌธ์ ํ๋์ฉ ๋น๊ตํด์ผ ํจ
- O(n)
- k์ ์์น๋ฅผ ํ๋จํ๊ณ ๋ค์ ํธ์ถํจ : T(3n/4) - ??
T(3n/4)?
์ด ๋ถ๋ถ์ ์ดํดํ๊ธฐ ์ํด์๋ ๊ฒฐ๊ตญ S1, S3๊ฐ ํฌ๊ธฐ๊ฐ ์ผ๋ง๋ ๋์ค๋์ง์ ๋ํด ์์์ผ ๊ณ์ฐ์ด ๊ฐ๋ฅํ๋ค.
๋งจ ์๋์ ๊ทธ๋ฆผ์ ํ์ฅํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
ํ๋ฒ์ ์ค์ ์์น๋ฅผ ์์๋ธ ์ดํ์ ์ํฉ์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์์ ๊ฐ๋ค. ๋ง์ฝ์ ์ฌ๊ธฐ์, m๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ญ์ ์ผ๋ง๋๋๋? ๋ผ๊ณ ๋ฌผ์ด๋ณธ๋ค๋ฉด ๋๊ฐ 3/4์ ๋์ ์์ญ์ด ํ์คํ๊ฒ ์์ ์ ์๋ ์ง์ ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ค์ ์คํ ์ผ๋ก ๋์ด๊ฐ์ ์์ด์ S1, S3๋ ์ต์ ์ ๊ฒฝ์ฐ 3n/4 ์ ๋์ ๊ฐ์๊ฐ ํ ๋น๋ ์ ์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ ํ์์ ๊ฐ๋ฅํ๋ค.. ใทใท
Partition๊ณผ median ๋ฐฉ๋ฒ ๋น๊ต
Partition, median ๋ฐฉ๋ฒ ๋น๊ต
- ๊ฒฐ๊ตญ ๋น๊ต๋ฅผ ํด๋ณด๋ฉด, ๋จ์ Partition๋ฐฉ๋ฒ์ ๋ชจ๋ ๊ฐ์ ๋น๊ตํ๋ฉด์ pivot์ ์ฐพ์๋ค๋ ๊ฒ
- ๊ทธ๋ฆฌ๊ณ median์ median ๋ฐฉ๋ฒ์ ํตํด ๊ฒ์ํ๋ ์์ญ์ ์ค์๋ค๋ ์ ์์ ์๊ฐ ๋ณต์ก๋์ ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค.
๋ฌธ์์ด ๋งค์นญ
๋ฌธ์์ด ๋งค์นญ ๋ฌธ์
๋ฌธ์์ด์์ ํจํด์ ์ฐพ๋ ๋ฌธ์ .
- ์์์ ์ธ ๋ฐฉ๋ฒ
- ์คํ ๋งํ
- Rabin-Karp ์๊ณ ๋ฆฌ์ฆ
- Noyer-moore ์๊ณ ๋ฆฌ์ฆ
์์์ ์ธ ๋ฐฉ๋ฒ
์์์ ์ธ ๋ฐฉ๋ฒ
์์์ ์ธ ๋ฐฉ๋ฒ์ ๊ทธ๋ฅ n-m+1๋ฒ ๋ฐ๋ณตํ๋ ๊ฒ. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๋ํด m๋ฒ ๋น๊ต : O(mn)
์คํ ๋งํ
์คํ ๋งํ ์ฌ์ฉ
- ํ ์ ํ ๋ชจ๋ฅด๊ฒ ๋ค.
- ์ปดํ์ผ๋ฌ ์ฑ ์ ์ฐธ๊ณ ํ๋ผ๊ณ ํ๋ค. ์์ฐ..
Rabin-Karp
- ํต์ฌ์ ์ซ์๋ก ๋ณ๊ฒฝํด์ ๋น๊ตํ๋ ๊ฒ.
- ์ฌ๊ธฐ์ ๋์น์ฑ๊ฒ ์ง๋ง, ๊ณ์ฐ ํ ํฌ๋์ ์ด์ฉํด์ ๋น๊ต๋ฅผ ์ค์ผ ์ ์๋ค.
- ๊ทธ๋ฐ๋ฐ m์ ๊ฐ์ด ํฌ๋ฉด ๊ฐ์ด ๋๋ฌด ์ปค์ง๊ธฐ ๋๋ฌธ์ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
- ์ ๋นํ q๋ฅผ ๋์ ํด์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ๋์ ํด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
- ๋ฌธ์ ๋ ๋ชจ๋๋ฌ ๊ฐ์ด ๊ฐ๋ค๊ณ ํด์ ์ง์ง ๋งค์นญ์ด๋๋์ง ํ์ธํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์
- ๊ฐ์ ๊ฒฝ์ฐ ํ๋ฒ ๋น๊ตํด์ฃผ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
- ๊ฒฐ๊ตญ O(n) ์๊ณ ๋ฆฌ์ฆ
Boyer Moore ์๊ณ ๋ฆฌ์ฆ
- ํต์ฌ์ด ๋ญ์ผ?
- ๋งจ์ฒ์๋ถํฐ ๋น๊ตํ์ง ๋ง๊ณ ๋งจ ๋์ ๋น๊ตํ๋ค์์
- ๋ฌ๋ผ? ๊ทธ๋ฌ๋ฉด A ๋ฐฐ์ด์์ ๋น๊ตํ ๋ ์์ B์์ ์ฐพ์๋ด
- ์์ด? ์์ผ๋ฉด ๊ทธ๋ฅ ๋ค ๊ฑด๋๋ฐ์ด๋ฒ๋ฆฌ๋๊ฒจ
- ์ด ๋ ๊ฐ๋ง ๋ณด๋ฉด, p์ ์๋ ์์์ ๋ํด์ ๋์ ๋ฌธ์๊ฐ ์ด๋ค๊ฒ์ด ๋์๋์ ๋ฐ๋ผ ์ ํํ๋ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ์์ ๊ตฌํด๋ฒ๋ ธ๋ค.
- ๊ทธ๋ฌ๋ฉด ์ถ๊ฐ ๊ณ์ฐ ์ค๋ณต๋๋๊ฒ ์์ด์ ธ๋ฒ๋ฆฌ๋๊น
- ๊ฒฐ๊ตญ jump๋ฅผ ๊ตฌํ๋๊ฒ ํต์ฌ์ด๋ค.
- ๊ทธ๋ฐ๋ฐ ๋ง์ฝ์ ํด๋น ๋ฌธ์๊ฐ 2๊ฐ๋ผ๋ฉด?
- ์์ ๊ฐ์ผ๋ก ์ค์ ํ๋ค.