์ ๋ ฌ์ ์ต์ ์ฑ
์์์ ์ฐ๋ฆฌ๋ ์ฐ์ํ ๋ ์์๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ ฌํ๋ฉด, O(n2) ๋ณด๋ค ์ข์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ป์ ์ ์๋ค๋ ๊ฒ์ ๋ณด์๋ค. ๊ทธ ๋ค์์ ๋ฐฐ์ด ์ ๋ ฌ ๋ฐฉ์์ธ ํต์ ๋ ฌ, ๋ณํฉ์ ๋ ฌ, ํ์ ๋ ฌ ์์๋ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ์์๋ฅผ ๋น๊ตํ์ฌ ๊ตํํจ์ผ๋ก์จ ์ด๋ณด๋ค ๋น ๋ฅธ ์๊ฐ ๋ณต์ก๋์ธ O(n log n) ์๊ฐ์ ์ป์ ์ ์์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด์ ์ฐ๋ฆฌ๊ฐ ๋ค์ ๋น์ทํ ์ง๋ฌธ์ ํด๋ณด์. O(n log n)๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์ ๋ ฌ์ ์ํํ ์ ์๊ฒ ๋๊ฐ?
์ ๋ฆฌ.
๋ ์์๋ฅผ ๋น๊ตํ์ฌ ๊ตํํ๋ ๋ฐฉ์์ผ๋ก๋ O(n log n)๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์ ๋ ฌ์ ์ํํ ์ ์๋ค.
์ฆ๋ช .
์์ฌ ๊ฒฐ์ ํธ๋ฆฌ(decision tree)๋ ์ด๋ค ๋ฌธ์ ์ ๋ํด์ ํ๋จ์ ๋ด๋ฆฌ๋ ๊ณผ์ ์ ํธ๋ฆฌ๋ก ํํํ ๊ฒ์ด๋ค. ๋ฃจํธ๋ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์ ์ฒ์ ์์ํ๋ ์ง์ ์ด๋ค. ๋ฃจํธ๋ฅผ ํฌํจํ ์ค๊ฐ ๋ ธ๋๋ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ๋ง๋๋ ์ ํ์ด๋ค. ์ด ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์์๋ค ์ค ํ๋๋ก ์ด๋ํ๋ค. ํ๋จ์ด ๋๋๊ณ ๊ฒฐ๋ก ์ด ๋๋ฉด ๋ ์ด์ ๊ฒฐ์ ํ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฆฌํ ๋ ธ๋์ ํด๋นํ๋ค.
์๋ ๊ทธ๋ฆผ์ ์๋ก ๋ค๋ฅธ ์ธ ์ x1, x2, x3์ ์ ๋ ฌํ๋ ๊ณผ์ ์ ์์ฌ๊ฒฐ์ ํธ๋ฆฌ๋ก ํํํ ๊ฒ์ด๋ค. ์ผ๋จ ๋ ์๋ฅผ ๊ณจ๋ผ์ ๋น๊ตํด์ผ ํ๋ฏ๋ก x1, x2๋ฅผ ๋น๊ตํ๋ค๊ณ ์น์. ํธ๋ฆฌ์ ๋ฃจํธ ๋ ธ๋๊ฐ ์ด์ ํด๋นํ๋ค. ์ด ๊ฒฐ๊ณผ์ ๋ฐ๋ผ, x1 < x2๋ผ๋ฉด x2์ x3์ ๋น๊ตํ์. (์ผ์ชฝ ์์) ๋ง์ฝ x2 < x3์ด๋ผ๋ฉด, ๋ ๊ฒฐ๊ณผ๋ก๋ถํฐ x1 < x2 < x3์์ ์ ์ ์๋ค. ๋ง์ฝ ๊ทธ๋ ์ง ์๊ณ x2 > x3์ด๋ผ๋ฉด, x2๊ฐ ๊ฐ์ฅ ํฐ ์์์ ์ ์ ์์ง๋ง x1๊ณผ x3์ ๋์ ๊ด๊ณ๋ ์์ง ์ ์ ์๋ค. ๋ฐ๋ผ์ x1๊ณผ x3์ ๋น๊ตํ๋ฉด, ๊ทธ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ x1 < x3 < x2์ธ์ง, x3 < x1 < x2์ธ์ง๋ฅผ ์ ์ ์๋ค.
3๊ฐ์ ์๋ฅผ ์ ๋ ฌํ๋ ๊ฐ์ง์๋ 6๊ฐ๊ฐ ์๊ณ , 6๊ฐ์ ๋ฆฌํ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ๋์ํจ์ ์ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด, ์ด ํธ๋ฆฌ์ ๋์ด, ์ฆ ๋ฃจํธ์์ ๊ฐ์ฅ ๋จผ ๋ฆฌํ๊น์ง์ ๊ฑฐ๋ฆฌ๊ฐ ์ต์ ์ ๊ฒฝ์ฐ์ ๋น๊ต ํ์์ ๋์ํจ์ ์ ์ ์๋ค.
์ด ๋์ด๋ฅผ h๋ผ๊ณ ํ์.
๋์ด๊ฐ h์ธ ์ด์ง ํธ๋ฆฌ์ ๋ฆฌํ ์ต๋ ๊ฐฏ์๋ 2^h์ด๋ค.
n๊ฐ์ ์๋ฅผ ์ ๋ ฌํ์ ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ (= ์์ฌ ๊ฒฐ์ ํธ๋ฆฌ์ ๋ฆฌํ์ ๊ฐ์)๋ n!์ด๊ณ , 2^h ≥ n! ์ด ์ฑ๋ฆฝํ๋ค.
์๋ณ์ ๋ฐ์ด 2์ธ ๋ก๊ทธ๋ฅผ ์ทจํ๋ฉด ๋ถ๋ฑํธ์ ๋ฐฉํฅ์ด ๋ฐ๋์ง ์์ผ๋ฏ๋ก h ≥ log (n!).
log (n!) = log n + log (n-1) + ... + log (n/2) + ... + log 1 ≥ log n + log (n-1) + ... + log (n/2)
≥ log (n/2) + log (n/2) + ... log (n/2) (→ n/2๋ฒ๋งํผ)
= (n/2)* log(n/2)
= 1⁄2 n(log n - log 2) = 1⁄2 n log n - 1⁄2 log 2
1⁄2 log 2์ n์ด 2๋ณด๋ค ํฌ๋ฉด 1⁄4 n log n ๋ณด๋ค ํ์คํ ์์ ๊ฒ์ด๋ฏ๋ก,
h = log(n!) ≥ 1⁄2 n log n - 1⁄2 log 2 ≥ 1⁄4 n log n
์์ ์ ์ ์๋ค. ๋ฐ๋ผ์ ์์ฌ ๊ฒฐ์ ํธ๋ฆฌ์ ๋์ด๋ n log n์ ์์๋ฐฐ๋ณด๋ค ํญ์ ๊ฐ๊ฑฐ๋ ํฌ๋ค. ( O(n log n) )
์ถ์ฒ : ํ๊ตญํญ๊ณต๋ํ๊ต ใ ใ ใ ๊ต์๋ ๊ฐ์์๋ฃ
'๐ ์ ๊ณต ๊ณต๋ถ > ์๊ณ ๋ฆฌ์ฆ ํด์ ๋ฐ ์ค๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] DP - ๊ณ๋จ ์ค๋ฅด๊ธฐ(cpp) (0) | 2023.04.11 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] Greedy algorithm - ์ด์งํธ ๋๋์ (cpp) (0) | 2023.02.09 |
[์๊ณ ๋ฆฌ์ฆ] ๋น๊ต๊ธฐ๋ฐ ์ ๋ ฌ์ ํ๊ณ/๋น๊ต์ ๊ธฐ๋ฐํ์ง ์์ ์ ๋ ฌ (0) | 2023.01.16 |
[์๊ณ ๋ฆฌ์ฆ] ๋น๊ต ๊ธฐ๋ฐ ์ ๋ ฌ ๋ฌธ์ (0) | 2023.01.16 |
[์๊ณ ๋ฆฌ์ฆ] ์ ํ์์ ์ดํด(recurrence relation) (0) | 2023.01.16 |