๐ค Divide And Conquer
๋ถํ ์ ๋ณต์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์์ ๋จ์๋ก ๋ถํ ํ ๋ค ๋ถํ ๋ ๋ฌธ์ ๋ค์ ์ฌ๊ท์ ์ผ๋ก ํด๊ฒฐํ์ฌ ํด๋น ๋ต์ ์ ์ ํ๊ฒ ์กฐํฉํ์ฌ ํฐ ๋ฌธ์ ์ ๋ต์ ์ ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํฉ๋๋ค.
์ด๋ ๋ถํ ๋ ๋ฌธ์ ๋ค์ ์กฐํฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ Conquer์ด๋ผ๊ณ ํฉ๋๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ ๋ถํ ์ ๋ณต์ Master Theorem์ ์ผ๋ฐํด๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์์ธํ๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ Master Theorem
Master Theorem์์ Input Size๊ฐ $n$์ผ๋ ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ฐ์ ์ธ ํจํด์ ์๋์ ๊ฐ์ต๋๋ค.
์์ $a > 0, b > 1, d ≥ 0$์ ๋ํ์ฌ
1. ๋ฌธ์ ๋ฅผ size๊ฐ $\frac{n}{b}$์ธ $a$๊ฐ์ subproblem์ผ๋ก ๋๋๋ค. (recursively ํ๊ฒ)
2. ๊ฐ๊ฐ์ subproblem์ ํด๊ฒฐํ ๋ค, $O(n^d) ์๊ฐ์ ์ฌ์ฉํ์ฌ subproblem์ ๋ต์ mergeํ๋ค.
์ด์ ๊ฐ์ ๊ฒฝ์ฐ $T(n)$์ด ๋ฌธ์ ๋ฅผ ํ๊ฒฐํ๋๋ฐ ํ์ํ ์๊ฐ๋ณต์ก๋๋ผ๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ ์ป์ ์ ์์ต๋๋ค.
$$T(n) = aT(\frac{n}{b}) + O(n^d)$$
ํด๋น ์์ ํตํด ์ผ๋ฐํด๋ฅผ ์ป์ ์ ์๋๋ฐ ์ผ๋ฐํด๋ ์๋์ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆผ๊ณผ ์์ ํ์ด๋ฅผ ํตํด ์๋ฅผ ์ฆ๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
์์ ๊ทธ๋ฆผ์ ํตํด ๊ฐ ๋ ธ๋์ ํด๋นํ๋ ๋ฌธ์ ๋ $a$๊ฐ์ subproblem๋ค๋ก ์ชผ๊ฐ์ง๋ฉฐ ๋ฌธ์ ์ ํฌ๊ธฐ๋ $\frac{1}{b}$๋ฐฐ ์ฉ ์ค์ด๋ญ๋๋ค.
๋ฐ๋ผ์ ์์ ํธ๋ฆฌ์ ๋์ด๋ $log_bn$์ด ๋ฉ๋๋ค.
๋ํ k๋ฒ์งธ level์ ๋ ธ๋ ์๋ ์ต๋ $a^k$๊ฐ์ด๊ณ , ๊ฐ๊ฐ์ ๋ ธ๋์ ํด๋นํ๋ subproblem์ ํฌ๊ธฐ๋ $\frac{n}{b^k}$๊ฐ ๋ฉ๋๋ค.
ํด๋น ์์ ํ์ด๋ ์๋์ ๊ฐ์ต๋๋ค.
์์ ๊ฐ์ด ์์ ์ ๋ฆฌํ์ ๋ ์์ด ๋ฑ๋น์์ด์ ํํ๋ผ๋ ๊ฒ์ ์ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ตญ ๊ณต๋น์ธ $\frac{a}{b^d}$์ ๊ฐ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ํตํด $T(n)$์ ์ผ๋ฐํด๋ฅผ ๊ตฌํ ์ ์๋๋ฐ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
์์ ์ผ๋ฐํด๋ฅผ ํตํด ์์์ ๋ค๋ฃฌ Merge Sort์ ์ผ๋ฐํด๋ฅผ ๋ฐ๋ก ๊ตฌํ ์ ์์ต๋๋ค.
Merge Sort์ ๊ฒฝ์ฐ ๊ธฐ์กด ๋ฌธ์ ์ ํฌ๊ธฐ๋ฅผ $\frac{1}{2}$๋ฐฐ์ ํฌ๊ธฐ์ธ 2๊ฐ์ subproblem์ ๋ถํ ํ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค..
์ฆ $a = 2, b = 2$์ด๋ฉฐ ์์์ subproblem์ ๋ณํฉํ๋ ๋ฐ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ $O(n)$์ด๋ผ๊ณ ์ ์ ํ์ผ๋ฏ๋ก $d = 1$๋ ์ด๋ผ๋ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์ด๋ฅผ Master Theorem์ ๋์ ํ๋ฉด $T(n) = 2T(\frac{n}{2}) + O(n)$์ ์ผ๋ฐํด $(n) = O(nlogn)$์ด ๋จ์ ๋ฐ๋ก ์ ์ ์์ต๋๋ค.($d = log_ba$์ ๊ฒฝ์ฐ์ ํด๋นํ๋ฏ๋ก)
'Computer Science > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ๋ถํ ์ ๋ณต(5) - Median of Medians (0) | 2022.10.04 |
---|---|
[Algorithm] ๋ถํ ์ ๋ณต(2) - Multiplication (0) | 2022.09.29 |
[Algorithm] ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ณธ(2) - Basic Arithmetic (0) | 2022.09.28 |
[Algorithm] Master Theorem ๋ง๋ณด๊ธฐ (0) | 2022.09.14 |
[Algorithm] ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ ๋ง๋ณด๊ธฐ (0) | 2022.09.13 |