๐ง ๋ถํ ์ ๋ณต์ด ๋ญ์์?
์ผ๋ฐ์ ์ผ๋ก ์ด๋ ํ ๋ฌธ์ ๋ฅผ ๋ ์์ ๋ฌธ์ ๋ก ๋ถํ ํ๊ณ , ๋ถํ ํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ํ ์กฐํฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฏธํฉ๋๋ค.
๊ณผ์ ์ ๋์ดํ์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋ ์์ ๋ฌธ์ (Subproblem)์ผ๋ก ๋๋๋๋ค.
์ด๋ ์์์ง ๋ฌธ์ ๋ ๋ณธ์ง์ ์ผ๋ก ํฐ ๋ฌธ์ ์ ๋์ผํ๋ ๋จ์ง ์ ๋ ฅ(input)์ ํฌ๊ธฐ๋ง ์์์ง ๋ฌธ์ ๋ฅผ ์๋ฏธํฉ๋๋ค.
2. 1๋ฒ ๊ณผ์ ์์ ๋๋ Subproblem ๋ค์ ์ฌ๊ท์ ์ผ๋ก(๋ ์์ ๋ฌธ์ ๋ก ๋๋๋ฉฐ) ํด๊ฒฐํฉ๋๋ค.
3. 2๋ฒ์์ ํด๊ฒฐํ Subproblem๋ค์ ๋ต์ ์ ์ ํ๊ฒ ์กฐํฉํ์ฌ, ๊ธฐ์กด ํฐ ๋ฌธ์ ์ ๋ต์ ๋์ถํฉ๋๋ค.
1๋ฒ์ ๊ณผ์ ์ Divide
2, 3๋ฒ์ ๊ณผ์ ์ Conquer ๊ณผ์ ์ ํด๋นํฉ๋๋ค.
๐ง ๋ถํ ์ ๋ณต์ ์ผ๋ฐ์ ์ธ ํจํด
๋ถํ ์ ๋ณต์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํจํด์ ๊ฐ์ง๋๋ค.
๊ธฐ์กด ๋ฌธ์ ์ ํฌ๊ธฐ(์ ๋ ฅ ์ฌ์ด์ฆ)๋ฅผ $n$ ์ด๋ผ ๋๊ฒ ์ต๋๋ค.
1. ๊ธฐ์กด ๋ฌธ์ ๋ฅผ ํฌ๊ธฐ๊ฐ $\frac{n}{b}$ ์ธ $a$ ๊ฐ์ Subproblem์ผ๋ก ๋๋๋๋ค. (์ฌ๊ท์ ์ผ๋ก)
2. ๊ฐ๊ฐ์ Subproblem ๋ค์ ํด๊ฒฐํ ํ, ์ด๋ฅผ์ ๋ต์ ์ ์ ํ๊ฒ ์กฐํฉํฉ๋๋ค.
์ด๋ ์กฐํฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๊ฐ๊ธฐ ๋ค๋ฅธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
์กฐํฉํ๋ ๋ฐฉ๋ฒ์ n์ ๋ํ ํจ์๋ก ํํํ ๊ฒ์ $f(n)$๋ผ ํ๊ฒ ์ต๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ $T(n)$ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ํ๋ธ๋ค๊ณ ํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ฌ๊ท์ ์ธ ๊ด๊ณ์์ ์ป์ ์ ์์ต๋๋ค.
$$T(n) = a \cdot T(\frac{n}{b}) + f(n)$$
์์ ๊ฐ์ ํ์์ ๊ฐ๋ recurrence relation(์ฌ๊ท์ ๊ด๊ณ์)์ ์ผ๋ฐํด๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก Master Theorem์ด ์์ต๋๋ค.
๐ง Master Theorem
์ ํฌ๋ Master Threorem์ ํน์ํ ๊ฒฝ์ฐ์ ๋ํด์๋ง ์์๋ณผ ๊ฒ์ด๊ณ , ๋ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๊ฐ ๊ถ๊ธํ๋ค๋ฉด ๋ค์ ์ฌ์ดํธ์์ ์ง์ ๊ฒ์ํด ๋ณด์๋ฉด ๋ฉ๋๋น :)
์์ $a>0$, $b > 1$, $d \geq 0$ ์ ๋ํ์ฌ, ๋ค์ recurrence relation
$$T(n) = a \cdot T(\frac{n}{b}) + O (n^{d})$$
์ ์ผ๋ฐํด $T(n)$ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$T(n) = \left\{\begin{matrix} O(n^{d}) & if\;\; d > log_b \; a \\ O(n^{d}\; log\;n) &if\;\; d = log_b \; a \\ O(n^{log_b \; a}) & if \;\; d < log_b \; a \\ \end{matrix}\right.$$
์ฆ๋ช
์๋ recurrence relation์ recursion tree๋ฅผ ํตํด ์ฆ๋ช ์ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
$$T(n) = a \cdot T(\frac{n}{b}) + O (n^{d})$$
ํธ๋ฆฌ์ ๊ฐ ๋ ธ๋์ ํด๋นํ๋ ๋ฌธ์ ๋ a๊ฐ์ subprolbem์ผ๋ก ์ชผ๊ฐ์ง๋๋ค.
์ด๋ ๋ฌธ์ ์ ํฌ๊ธฐ๋ $\frac{1}{b}$ ๋ฐฐ ๋งํผ ์ค์ด๋ญ๋๋ค.
์ฆ ํธ๋ฆฌ์ height๋ $log_b \; n$ ์ด ๋ฉ๋๋ค. ( root ๋ ธ๋์ level = 0 )
๋ํ k๋ฒ์งธ level์ ๋ ธ๋์ ์๋ ์ต๋ $a^k$ ๊ฐ์ด๊ณ , ๊ฐ๊ฐ์ ๋ ธ๋์ ํด๋นํ๋ subproblem์ ํฌ๊ธฐ๋ $\frac{n}{b^k}$ ๊ฐ ๋ฉ๋๋ค.
(์ ์ฒ๋ผ) ์ดํดํ๊ธฐ ์ด๋ ค์ฐ์ ๋ถ๋ค์ ์ํด ๊ทธ๋ฆผ๊ณผ ํจ๊ป ์ค๋ช ํ์ต๋๋ค.
๊ฒฐ๊ตญ ์์ ๊ฐ์ ๋ฑ๋น์์ด์ summation์ผ๋ก ํํ์ด ๊ฐ๋ฅํด์ง๋ฉฐ,
์ด ๊ฒฐ๊ณผ๋ ๊ณต๋น(Common ration)์ธ $\frac{a}{b^{d}}$ ์ ๊ฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์์ ๊ฐ์ด ์ฆ๋ช ์ด ์๋ฃ๋์์ต๋๋ค.
๐ง Master Theorem ์ ์ฉ ์์
๋ณํฉ ์ ๋ ฌ(merge sort)
๋ณํฉ ์ ๋ ฌ์ ๊ฒฝ์ฐ ํฌ๊ธฐ๊ฐ $n$ ์ธ ๊ธฐ์กด ๋ฌธ์ ๋ฅผ ํฌ๊ธฐ๊ฐ $\frac{n}{2}$ ์ธ 2๊ฐ์ subproblem์ผ๋ก ๋ถํ ํ์ฌ ํด๊ฒฐํฉ๋๋ค.
Master Threoem์ ๋์ ํ์๋ฉด $a = 2, b = 2$ ๊ฐ ๋ฉ๋๋ค.
$d$ ์ ๊ฒฝ์ฐ์๋ subproblem์ ์กฐํฉํ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์๊ฐ์ผ๋ก, ๋ณํฉ ์ ๋ ฌ์์๋ ์ ํ ํ์์ ํตํด ์กฐํฉ๋๋ฏ๋ก $O(n)$ ์ ์๊ฐ์ด ์๋ชจ๋ฉ๋๋ค.
์ฆ ๋ณํฉ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋, $d = log_b \;a$ ์ด๋ฏ๋ก $O(n \;log \;n)$ ์ด ๋ฉ๋๋ค.
๐ง ๋ ๋น ๋ฅธ ๊ณฑํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ
์ด์ ์๊ฐ์ ์์๋ณธ ๊ณฑํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๊ฐ $O(n^2)$ ์ด์์ต๋๋ค.
๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ๊ณฑํ๊ธฐ์ ์ ์ฉํ์ฌ ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
n ๋นํธ ์ด์ง์์ ๊ณฑ์ ์ ์์๋ก, ํธ์์ n์ 2์ ๊ฑฐ๋ญ์ ๊ณฑ ํํ๋ผ ๊ฐ์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ณฑํ๋ ๋ ์๋ $x$ ์ $y$ ์ด๋ฉฐ, $x$ ์ ์ผ์ชฝ $\frac{n}{2}$ ๋นํธ๋ฅผ $x_L$ , ๋๋จธ์ง ์ค๋ฅธ์ชฝ ๋นํธ๋ฅผ $x_R$ ์ด๋ผ ํ๊ณ , ๋ง์ฐฌ๊ฐ์ง๋ก $y$ ์ ๋ํด์๋ ๋์ผํ๊ฒ ์ ์ฉ๋๋ค ํ๊ฒ ์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ $x_L, x_R, y_L, y_R$์ ์ ์์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$x = 2^{n/2} \cdot x_L + x_R$$
$$y = 2^{n/2} \cdot y_L + y_R$$
์ด์ ๋ ์๋ฅผ ๊ณฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฆ ์ ์์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ $x$ ์ $y$ ๋ฅผ ๊ณฑํ๋ ๋ฌธ์ ๋
1. ๋ $\frac{n}{2}$ ๋นํธ ์ด์ง์๋ฅผ ๊ณฑํ๋ 4๊ฐ์ subproblem๊ณผ
2. ์ด๋ค์ ๋ํ์ฌ $2^n$ ๊ณผ $2^{\frac{n}{2}}$ ๋ฅผ ๊ณฑํ๋, ์ฆ $n + \frac{n}{2}$ ๋งํผ์ Shift ์ฐ์ฐ๊ณผ
3. 3๋ฒ์ ๋ง์ ๊ณผ์ ์ผ๋ก ๋๋์ด์ง๋๋ค.
์ฆ ๋ n๋นํธ ์ด์ง์ x์ y๋ฅผ ๊ณฑํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ $T(n)$ ์ด๋ผ ํ๋ฉด, ๋ค์์ด ์ฑ๋ฆฝํฉ๋๋ค.
$$T(n) = 4 T(\frac{n}{2}) + O(n)$$
๊ฒฐ๊ตญ $1 < log_2 \;4 = 2$ ์ด๋ฏ๋ก, Master Theorem์ ์ํ์ฌ $T(n) = O(n^2)$ ์ด ๋ฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ์ฑ๋ฅ ํฅ์์ ์์์ต๋๋ค๋ง, ์ด ์์ ํ๋์ ํธ๋ฆญ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๋์ผ ์ ์์ต๋๋ค.
๐ง Gauss's Trick
๋ค์ ์์์ ์ฌ์ฉํฉ๋๋ค.
์ ์์ผ๋ก ๋์ถ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์กด ์์ ๋์ ํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ฆ ๊ธฐ์กด 4๊ฐ์ subproblem์ผ๋ก ๋๋์๋ ๊ณฑ์ ์ด,
Gauss's Trick์ ์ฌ์ฉํ์ฌ 3๊ฐ์ $\frac{n}{2}$ ๋นํธ ์ด์ง์๋ฅผ ๊ณฑํ๋ subproblem์ผ๋ก ๋๋ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
์ด๋ 3๊ฐ์ subproblem์ ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$(x_L + x_R) \cdot (y_L + y_R)$$
$$x_L \cdot y_L$$
$$x_R \cdot y_R$$
์ฌ๊ธฐ์ ์ ๊น ๐
$(x_L + x_R) \cdot (y_L + y_R)$์์ ๋ ์์ ๋ง์ ์ ์ต๋ $\frac{n}{2} + 1$ ๋นํธ๊ฐ ๋ ์ ์์ง๋ง, ์ด๋ ๋ฌด์ ๊ฐ๋ฅํฉ๋๋ค.
๊ฒฐ๊ตญ ์ ๊ณฑ์ ์ ์๊ฐ ๋ณต์ก๋๋ ๋ค์๊ณผ ๊ฐ์ recurrence relation์ ๋์ถํฉ๋๋ค.
$$T(n) = 3T(\frac{n}{2}) + O(n)$$
์ด๋ Master Theorem์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
$$T(n) = O(n^{log_2 3}) \approx O(n^{1.59x})$$
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ (2) - DFS (0) | 2022.09.24 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ํ (1) - ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์ฉ์ด (0) | 2022.09.24 |
[์๊ณ ๋ฆฌ์ฆ] Selection ์๊ณ ๋ฆฌ์ฆ (0) | 2022.09.19 |
[์๊ณ ๋ฆฌ์ฆ] ๊ณฑํ๊ธฐ(Multiplication) ์๊ณ ๋ฆฌ์ฆ ($O(n^2)$) (0) | 2022.09.11 |
[์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น ์ค(Big-Oh) (0) | 2022.09.05 |