๊ตญ๋ฏผ๋ํ๊ต์์ "์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ" ๊ต์ฌ๋ฅผ ์ด์ฉํ
๋ฐํ๋ช ๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค
Complexity of Recursive Functions
Algorithm1 ์ ํฉํ ๋ฆฌ์ผ์ ์ฌ๊ท์ ์ผ๋ก ๋ํ๋ด๊ณ ์๊ณ
Algorithm2 ๋ ํ์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ๋๋์ด ํด๋น ์ซ์๋ฅผ ํ์ํ๊ณ ์์
๊ทธ๋ผ ๋ณต์ก๋๋ ์ด๋ป๊ฒ ๋ ๊น..?
๋ฐ๋ก ๋ณต์ก๋๋ฅผ ๊ตฌํ๊ธฐ๋ ํ๋ค๊ณ ์ฐ์ ๋ณต์ก๋ ํจ์์ ์ ํ์ (Recurrence Relation)์ ๊ตฌํด๋ณผ ์ ์์
=> ์ด๋ ๋ณต์ก๋ ํจ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ ์ํ ์
Solving Recurrences
๋ณต์ก๋๋ฅผ ๊ตฌํ๊ณ ์ถ์๋ฐ ์ ํ์์ ๋ ์ด๋ป๊ฒ ํ ์ ์์๊น..?
์ ํ์์ ํผ๋ค = ์ ํ์์ ํด์์ ํด๋ก ๋ณํ
=> ํด์์ ํด(Closed solution) ๋ ์ ํํ ์์ ๊ธฐ๋ณธ์ฐ์ฐ์ผ๋ก ํํํ ์
์ ํ์์ ์ฐจ๋ก์ฐจ๋ก n์ ์ค์ฌ๊ฐ๋ฉฐ ๋์ ํ๋ฉด ํด์์ ํด๋ฅผ ๊ตฌํ ์ ์์
=> ๋๋ฌด ๊ณ ๋จํ ์์ ์
์ ํ์์ ์ง์ ๋์ ํ์ง ์๊ณ ์ด๋ป๊ฒ ํ ์ ์์๊น?
Substitution Method (์ถ์ ํ ์ฆ๋ช )
์์ ๊ฐ์ ์ ํ์์ด ์์ ๋ Substitution Method๋ฅผ ์ด์ฉํด๋ณด๋ฉด
1. ์ถ์ธกํ๊ธฐ : T(n) = O(nlogn) ์ผ ๊ฒ์ด๋ค.
2. ๋์ ํ์ฌ ์ฆ๋ช ํ๊ธฐ (์ํ์ ๊ท๋ฉ๋ฒ ์ฌ์ฉ) : n >= n0 ์ผ ๋ T(n) <= c * nlogn ์ธ c์ n0 ์ฐพ๊ธฐ
๊ณผ์ ์ ๊ฑฐ์ณ์ผํจ
์๋๋ n0 <= k < n ์ธ ๋ชจ๋ k์ ๋ํด T(k) <= c * klogk ์์ ๋ณด์ฌ์ฃผ๋ Base case๋ฅผ ์ฆ๋ช ํด์ผํจ
(n0 = 1์ log ํจ์์ ์ ์๊ฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ฏ๋ก ์ฌ์ฉ X)
ํ์ง๋ง, a๊ฐ ์์์ผ ๋ T(a)๋ Θ(1) ์ด๋ฏ๋ก (์ข ๋ฃ๊ฐ ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๋ฉด ์์๋ก ๋ณผ ์ ์๊ธฐ ๋๋ฌธ), ๊ท๋ฉ์ ์ฆ๋ช ์ Base case๋ฅผ ์ฆ๋ช ํ์ง ์์๋ ๋จ!
์ํ์ ๊ท๋ฉ๋ฒ์ ์ด์ฉํด๋ณด๋ฉด
Induction case
n = 1, 2, ..., k ์ผ ๋ T(n) <= c * nlogn ์ ๋ง์กฑํ๋ค ๊ฐ์ ํ๊ณ
n = k + 1 ์ผ ๋๋ T(n) <= c * nlogn ์์ ์ฆ๋ช
T(n) = 2T(⌊n/2⌋) + n
<= 2c⌊n/2⌋log⌊n/2⌋ + n
<= cn log (n/2) + n ... ⌊n/2⌋ <= n/2 ์ด๋ฏ๋ก
= cn log n - cn + n
<= cn log n ... -cn + n ์ด ์์๊ฐ ๋๊ฒ ์ค์ ํ๋ค๋ฉด
๋ฐ๋ผ์, T(n) = O(nlogn)
Substitution Method์ ์ฌ๋ฌ case
T(n) = O(n) ๋ผ๊ณ ์ถ์ธกํ๊ณ Substitution Method๋ฅผ ์ด์ฉํด๋ณด๋ฉด
T(n) <= cn ์์ ์ฆ๋ช ํด์ผ ํ๋๋ฐ T(n) <= cn + 1์ด ๋์์ ์ฆ๋ช ์ด ์คํจํจ
=> ์ด๋ด ๊ฒฝ์ฐ T(n) <= cn - b ๋ฅผ ์ฆ๋ช ํ๋ฉด ๋จ
์๋๋ฉด T(n) = O(n - k) = O(n) ์์ ์ฆ๋ช ํ๋ฉด ๋๋๊น
์ด๋ฐ ๊ฒฝ์ฐ๋ log n = m ์ผ๋ก ๋๊ณ , m์ ๋ํ ์์์ผ๋ก ๋ณ๊ฒฝํ์ฌ ์ ํ์์ ํ ์ ์์
Recursion-Tree Method (๋ฐ๋ณต ์ ๊ฐ, Tree๋ก ํํ)
์ ์ ํ์์ ์ ๊ฐํ์ฌ ํ๋ฉด
์ด๋ฐ์์ผ๋ก ์ ๊ฐ๊ฐ ๋ ํ ๋ฐ ์ด ์ ๊ฐ ๊ณผ์ ์ Recursion Tree๋ก ํํํ๋ ๊ฒ์ด Recursion-tree Method ์!
์ด ๋ ๊ฐ ์ ์ ์ ๊ฐ ํ์๋ฌธ์ ์ ๋ณต์ก๋๋ก ํํ๋จ
=> T(n) = 3T(n/4) + n^2 ์์ n^2๊ฐ ์ผ๋ง๋ ๊ณ์ฐ๋๋์ง ํธ๋ฆฌ์ ๋ ธ๋๋ก ์ ์ด ๋์
ํธ๋ฆฌ์ ๊น์ด๊ฐ log4(n) ์ธ๋ฐ ์ด๋ ๋ฌธ์ ํฌ๊ธฐ๊ฐ ์ฌ๊ท ํธ์ถ์ด ํ ๋จ๊ณ ์งํ๋ ๋ ๋ง๋ค 1/4 ๋ก ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ n์ด n/4๋ก ์ค์ด๋๋ ๊ณผ์ ์ k๋ฒ ๋ฐ๋ณตํด์ 1์ ๋๋ฌํ๋ ๊น์ด์ธ log4(n) ์
ํธ๋ฆฌ์ ๊น์ด๊ฐ ํญ์ ๋์ผํ๊ฒ ๋์ค๋๊ฑด ์๋๋ผ๋ ์ฌ์ค์ ์๊ณ ์์ด์ผํจ!
Master Method (Master theorem ์ด์ฉ)
T(n) = aT(n/b) + f(n) ์ ๊ฐ์ ํํ์ ์ ํ์์ Master Theorem์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ํ ์ ์์!
(a >= 1 ์ b > 1๋ ์์)
Master Theorem์ ์ธ ๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋ณผ ์ ์๋๋ฐ
n^logb(a) ์ ๋ํด ์๋์ ์ผ๋ก
f(n)์ด ์์๋, ์ ๋นํ ๋, ํด ๋์ ๊ฒฝ์ฐ๋ก ๋๋ ์ ์์
์์๋ก T(n) = 9T(n/3) + n ๋ Master Method์ ํํ์ ์ผ์นํ์ฌ
a = 9, b = 3์ด๊ธฐ ๋๋ฌธ์ n^log3(9) = n^2 ์ด ๋น๊ต๋์์ด ๋๊ณ , f(n) = n ์ด๋ฏ๋ก
case 1์ ๋ถํฉํ์ฌ Θ(n^log3(9)) = Θ(n^2) ์ด ๋๋ค!
'๐ฅ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
L05 - Heapsort (2) | 2024.10.06 |
---|---|
L04 - Merge Sort & Quicksort (2) | 2024.09.27 |
L03 - Basic Sorting Algorithms (1) | 2024.09.25 |
L01 - Algorithm Analysis (1) | 2024.09.14 |
์๊ฐ๋ณต์ก๋์ ๋๋ฒ๊น (3) | 2024.01.17 |