κ΅λ―Όλνκ΅μμ "μ½κ² λ°°μ°λ μκ³ λ¦¬μ¦" κ΅μ¬λ₯Ό μ΄μ©ν
λ°νλͺ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ λ΄μ©μ μ 리νμμ΅λλ€
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 |
κ΅λ―Όλνκ΅μμ "μ½κ² λ°°μ°λ μκ³ λ¦¬μ¦" κ΅μ¬λ₯Ό μ΄μ©ν
λ°νλͺ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ λ΄μ©μ μ 리νμμ΅λλ€
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 |