Exercise1
ํ๋ ฌ ๊ณฑํ๊ธฐ ๋ฌธ์ : Iterative solution ์ด ์ฌ์ฉ๋๋ค.
A์ B๊ฐ ๊ฐ๊ฐ nxn ํ๋ ฌ์ด๋ผ๊ณ ๊ฐ์ .
3๋ฒ๋ถํฐ 7๋ฒ๊น์ง๊ฐ ๊ณฑํ๊ฒ ๋๋ ๊ณผ์ . 3๊ฐ์ for loop์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
7๋ฒ ๋ผ์ธ์์ ๊ณฑํ๊ฒ ๋๋ค. C ํ๋ ฌ์ A์ row์ B์ column์ ๋ชจ๋ ๊ณฑํ๊ฒ ๋๋ ๊ณผ์ ์ด ์๋ค.
Time Complexity๋ฅผ ๊ตฌํ๋ ๊ฒ์ for loop์ด๋ฉด ๊ตฌํ๊ธฐ ์ฝ๋ค. ์ธํ n^3์ด๋ค. ๊ทธ๋ฅ n^3์ด๋ผ๊ณ ํํํ๋ฉด ์๋๋ค.
Exercise 2
Divide and conquer๋ก ํ๊ฒ ๋๋ฉด Recur๋ก ํ๊ฒ ๋๋ค. C๋ผ๋ ๋งคํธ๋ฆญ์ค๋ฅผ ๋ฐ๋ฐ 4๋ฑ๋ถ์ ์งํํ๋ค. A์ B๋ ๋ง์ฐฌ๊ฐ์ง๋ก Divide๋ฅผ ์งํํ๋ค. C๋ผ๋ ๋งคํธ๋ฆญ์ค๋ A์ B ๋งคํธ๋ฆญ์ค ๊ทธ๋ฃน์ผ๋ก ๊ณฑํ๊ฒ ๋๋ค.
Element๋ฅผ ํ๋ ๋จ๊ธธ ๋๊น์ง ๊ณ์ Divide๋ฅผ ํด๋๊ฐ๋ค. n = 1 ์ด ๋ ๋๊น์ง ๋๋ ์ก๋ค๋ฉด ๊ทธ๊ฒ์ด Base case๊ฐ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ ฌ ์ฐ์ฐ์ ์งํํ๋ฉด ๋๋ค. ์ด๋ function call์ ๊ฐ์ ํจ์๋ฅผ recur ํ๊ฒ ์ฌ์ฉํ๊ฒ ๋๋ค. n == 1์ด ๋๋ฉด return ํ๊ณ ๊ณ์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์งํํ๊ฒ ๋๋ค. C12๋ ๋์ผ ๋ฐฉ์์ผ๋ก ์งํ..!!
Recurrence equation์ผ๋ก ์๊ฐ ๋ณต์ก๋๋ฅผ ํํํด์ผ ํ๋ค.
a) recurrence equation์ ๊ตฌํด์ผ ํ๋ค.
n์ด 1์ผ ๋์ n์ด 1 ๋ณด๋ค ํด ๊ฒฝ์ฐ๋ก ๋๋๋ค 1์ธ ๊ฒฝ์ฐ Constant๊ฐ ๋๊ณ 1๋ณด๋ค ํฐ ๊ฒฝ์ฐ, 8๋ฒ์ ํจ์ ํธ์ถํด์ผ ํ๊ณ , ํ๋ฒ ํจ์ ํธ์ถ์ ํ ๋๋ง๋ค n/2 x n/2 ๋งํผ ์ฌ์ด์ฆ call์ ํ๊ฒ ๋๋ค. ๋ง์ง๋ง์ผ๋ก Combine ํ ๋๋ ์ผ๋ง๋ ์ฌ์ฉ์ด ๋๋์ง๋ฅผ ํ์ธํด์ผ ํ๋ค. Combine ํ ๋, ๋ํ๊ธฐ๋ฅผ ํตํด์ ์งํํ๊ฒ ๋๋ค. n/2 x n/2 ๋งํผ ์งํ์ ํ๊ฒ ๋๋ค. ์ฆ, ๊ทธ๋ผ n^2๋งํผ ๋ํ๊ฒ ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
b) Recursion Tree
T(n)์ ์ธํ n^2 ์ด๋ฏ๋ก cn^2 ๋ผ๊ณ ํ ์ ์๊ณ ์ฌ๊ธฐ์, 8๊ฐ์ T(n/2) ๋งํผ ์๊ธฐ๊ฒ ๋๋ค. cn^2์ ๋ค์ 8๊ฐ์ n ... ์ด๋ฐ ๋ฐฉ์๋ก T(1)๊น์ง ์งํํ๊ฒ ๋๋ค. ๋จผ์ ์งํํด์ผ ํ๋ ๊ฒ์ Recursion Tree์ Height๋ฅผ ๊ตฌํด์ผ ํ๋ค. ์ ๊ทธ๋ฆผ์ฒ๋ผ Height๋ฅผ ๊ตฌํ๊ฒ ๋๊ณ ๋ฐ์ด 2์ธ log๋ฅผ lg๋ผ๊ณ ํํ์ ํ๋ค.
Master Theorem
Dynamic Programming
ํน๋ณํ ์๊ณ ๋ฆฌ์ฆ์ด ์๋๋ผ ๋์์ธ ํจ๋ฌ๋ค์์ด๋ค. Divide and conquer, merge sort๊ฐ ์๊ณ pivot์ ์ค์ฌ์ผ๋ก ํ๋ quick sort๊ฐ ์๋ค.
Incremental์ Insertion, Selection, Bubble sorting์ด ์กด์ฌํ๋ค. Backtracking์ Maze Problem์์ ๊ฐ๋๊ธธ์์ ํ์ฌ์ ์ํฉ์
์คํ์ ์ ์ฅํด์ ๋ค๋ก ๋์์ค๋ ๊ฒ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ด๋ค. ์ต์ ํ ๋ฌธ์ ์์ ์ฌ์ฉ์ ํ๋ค. ์ต์ ํ๋ ๊ฐ์ ์ฐพ๋ ๋ฌธ์ .
Minimization๊ณผ Maximizationํ๋ ๋ฌธ์ ์์ ์ฌ์ฉ์ด ๋๋ค.
Optimization
shortest path Problem์ ์ฐพ์ ๋, ์์ธ๊ณผ ๋ถ์ฐ์ผ๋ก ์ด๋ํ ๋ ๋์ ์ด๋ผ๋ ๊ณณ์ ๋ฐฉ๋ฌธํ๊ธฐ๋ก ์ ํ์ ํ๋ฉด ๋์ ๋ถํฐ ์์ธ๊น์ง
๊ฐ๋ ๊ฒ ์ค ์ด๋๊ฒ์ด Shortest์ธ๊ฐ, ๋ถ์ฐ๋ถํฐ ๋์ ๊น์ง๋ ์ด๋ ๊ฒฝ๋ก๊ฐ shortest์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํ๊ฒ ๋๋ค. Subproblem์ ์์ฑํ๊ฒ ๋๋ค.
์ต์ ์ ์ ํ์ด ๋ฌด์์ธ์ง ์ฌ์ค ์๊ธฐ ์ด๋ ต๋ค. ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ ์ ์๋ค. ๊ทธ๋์ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๋ค ๋ฐ์ ธ๋ณด๋ ๊ฒ์ด๋ค. ์ ํ์ ๋ฐ๋ผ์
์ด๋ค ๊ฒ์ด ์ต๋จ ๊ฑฐ๋ฆฌ์ธ์ง ์ ํ์ ํ๊ฒ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๊ธฐ๋ ์ด๋ ต๊ณ Brute Force๋ผ๊ณ ํ๋ค. ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐ์ง๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐ์ง์ง ์๊ณ ์ด๋ป๊ฒ ์ต์ ํ ๋ฌธ์ ๋ฅผ ํธ๋๊ฐ๋ฅผ ์ฐ๊ตฌํ ๊ฒ ์ค ํ๋๊ฐ Dynamic Program์ด๋ค.
Dynamic Programming
DP๋ Divide and conquer๋ ๋ญ๊ฐ ๋ค๋ฅธ์ง ์๊ฐ์ด ๋ค ์ ์๋ค. Solution S๋ฅผ ๊ตฌํ๋๋ฐ S๋ณด๋ค ์์ ๋ฌธ์ ์ solution์ ๋จผ์ ๊ตฌํ๊ฒ ๋๋ค.
์ฌ๊ธฐ๊น์ง๋ Divide and conquer์ด๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ ์ด ์กด์ฌํ๋ค. top down ๋ฐฉ์์ด ์๋๋ผ bottom up fashion ํ์์ ๋ฐ๋ฅธ๋ค.
Fibonacci Number Example
Divide and conquer๋ recursiveํ๊ฒ ํ๊ฒ ๋๊ณ DP๋ Iterativeํ๊ฒ ์ ๊ทผํ๋ค. Divide and conquer์ ๊ฒฝ์ฐ n๋ถํฐ ์์ํด์ 0๊น์ง
๋ด๋ ค๊ฐ๊ฒ ๋๋ top bottom ํ์์ ๋ฐ๋ฅธ๋ค. ์ถ๋ฐ ์ง์ ์ด top์ด ๋๋ค. DP์ ๊ฒฝ์ฐ 0๋ถํฐ ์์ํด์ n๊น์ง ์ฌ๋ผ๊ฐ๋ bottom up
ํ์์ ๋ฐ๋ฅด๊ฒ ๋๋ค.
Recalculation in Divide and Conquer
Top์์ Bottom์ผ๋ก ๋ด๋ ค๊ฐ๋ ๋ฐฉ์, ๊ฐ์ ๊ฒ์ ์ฌ๋ฌ๋ฒ ๊ณ์ฐํ๊ฒ ๋๋ ๊ตฌ์กฐ์ด๋ค. ์๋ํ๋ฉด ์์์ ์๋๋ก ์๊ฒ ๋๋์ด ์์ํ๊ธฐ
๋๋ฌธ์ด๋ค. DP์ ๊ฒฝ์ฐ 0๊ณผ 1์ ๊ฐ์ ์ง์ด๋ฃ๊ณ ๊ทธ ๋ค์ ๋ค์ index ๊ฐ์ ๋ค์ด๊ฐ๊ฒ ๋๋ value๋ฅผ ๊ณ์ฐํ๋ ๊ณผ์ ์ ๋ ๋ค์ ์งํํ๋ ๊ฒฝ์ฐ๊ฐ
์กด์ฌํ์ง ์๋ค.
Divide and Conquer vs DP
Divide and Conquer๋ ๊ฐ์ ๊ณ์ฐ ๊ณผ์ ์ ์ฌ๋ฌ ๋ฒ ์งํํ๊ฒ ๋๋ค. DP์ ๊ฒฝ์ฐ ํ ๋ฒ ๊ณ์ฐ๋ ๊ฐ์ ๊ณ์ ํ์ฉํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
์ฐ์ฐ๋์ด ๋ ์ ๋ค.
Matrix Chain Multiplication
ํ๋ ฌ์ ๊ณฑ์ ์ดํด๋ณด์. ๋จผ์ 1๊ณผ 2๊ณ์ฐ ํ ํ์ ์์ด 2์ 3์ ๋จผ์ ๊ณฑํด์ ์ฐจ์ด๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
The cost of Multiplying Two Matrices
A: 2x3 B: 3x4๋ผ๊ณ ํ๋ฉด 2x4 ํ๋ ฌ์ด ๋์จ๋ค. ๊ณฑ์
์ด ์ด p x q x r ๋งํผ ๊ณฑ์
์ด ์งํ๋๋ค.
The cost of Multiplying Three Matrics
๊ณฑํ๋ ์์์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๊ณฑ์
์ ํฌ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ค.
More Matrices More ways to Parenthesis
ํ๋ ฌ์ ๊ฐ์๊ฐ ๋์ด๋ ์๋ก ๊ดํธ๋ฅผ ์น๋ ๋ฐฉ๋ฒ์ด ๋งค์ฐ ๋ค์ํด์ง๋ค. ์ด๋ค ๋ฐฉ๋ฒ์ ํํ๋์ง์ ๋ฐ๋ผ ๊ณฑํ๊ธฐ ํ์๊ฐ ๋ฌ๋ผ์ง๋ค.
Example
์๊ฒ๋ 6500์ด๋ฒ ๋ง๊ฒ๋ 47500์ ๊ณ์ฐํด์ผ ๋๋ ์ฐ์ฐ๋์ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค. ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ๋ฐ์ง๋ ๊ฒฝ์ฐ๋ Brute Force๊ฐ ๋๋ค.
DP๋ ๊ทธ๊ฒ๋ณด๋ค ์ ๊ณ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๊ฒ ๋๋ค.
Number of Parenthesizations
ํ๋ ฌ์ด n๊ฐ ์ผ๋ ๊ณฑ์ ๋ํ ๊ฒ์ ์๊ฐํด๋ณด์. A1๊ณผ A2๋ฅผ ๊ณฑํ๋ ๋ฐฉ๋ฒ. ์ผ๋ฐ์ ์ผ๋ก n๊ฐ์ ํ๋ ฌ์ ๊ณฑํ๋ ๋ฐฉ๋ฒ์ P1Pn-1, P2Pn-2...
Pn-1P1 ๊น์ง ์งํํ๊ฒ ๋๋ค. ๊ดํธ๋ฅผ ์น๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฒ์ผ๋ก ํด์ํ ์ ์๋ค. Pn์ 2^n-1 ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค. 2^n / 2๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒ์ด๋ฏ๋ก
๋น
์ค๋ฉ๊ฐ 2^n์ผ๋ก ํํํ ์ ์๋ค. Brute force์ ๊ฒฝ์ฐ 2^n ์ ๋ ๊ณ์ฐ์ ํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. n์ด ์กฐ๊ธ๋ง ์ปค์ง๋๋ผ๋ ์ด๋ง์ด๋ง ํ๊ฒ
์ปค์ง๊ฒ ๋๋ค.
Optimal Matrix chain multiplication
๊ณฑํ๊ธฐ์ ํ์๋ฅผ ์ต์ํ๋ ๋ฐฉ๋ฒ์ ํ๋ ๊ฒ์ด BP๋ก ํ๊ฒ ๋๋ฉด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐ์ ธ์ผ ํ๊ณ Computational infeasibleํ๋ค๊ณ ํํํ๋ค.
์ต์ํ 2^n๋งํผ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ด๋ค.
Recalculation: The Source of All Evil
ํ ๋ฒ ๊ณ์ฐํ ๊ฒ์ด ๋ฐ๋ณต ๊ณ์ฐ๋๋ค๋ ๊ฒ์ด๋ค.
Memoization: Avoiding Recalculation
DP์ ๋ฐฉ์๊ณผ ๋์ผํ์ง๋ง Top down ๋ฐฉ์์ผ๋ก ์งํํ๊ฒ ๋๋ค.
Fibinacci Number
Recursion์ ์ด์ฉํ๋ ๊ฒ์ ๋์ผํ์ง๋ง ๋ค๋ฅธ ์ ์ ์ํ๋ ๊ฐ์ด ์กด์ฌํ๋ค๋ฉด true๋ผ๋ฉด ์ ์ฅ๋ ๊ฐ์ ๋ถ๋ฌ์ค๋ฏ๋ก์จ recalculation์ ์ํ๊ฒ ํ ์ ์๋ค.
TOP DOWN ๋ฐฉํฅ์ฑ์ ์ ์ง์ํจ๋ค.
Structure of Optimal Solution
์ด๋ค ๊ฒฝ์ฐ์ DP๋ก ํ ์ ์๋์ง๋ฅผ ์ดํด๋ณด๊ณ ์ ํ๋ค. Ai๋ถํฐ Aj ๊น์ง์ ํ๋ ฌ์ ๊ณฑํ๊ฒ ๋ ๋ Ak๋ผ๋ ํ๋ ฌ์ ๊ธฐ์ค์ผ๋ก ๊ดํธ๋ฅผ ๋๋ ์ ์๊ณ
๊ณ์ ๋น์ทํ๊ฒ ๋๋์ด ๋๊ฐ ์ ์๋ค.
ํฌํญ๋ถํฐ ์์ธ๊น์ง ๊ฐ๋ค๊ณ ํด๋ณด์. ํฌํญ์์ ๋๊ตฌ, ๊น์ฒ, ๋์ , ์ฒญ์ฃผ, ์์์ ๊ฑฐ์ณ์ ์์ธ์ ๊ฐ๋ค๊ณ ํ์. ์ด๊ฒ Optimal ํ๋ค๊ณ ๊ฐ์ .
ํฌํญ์์ ๋์ ์ผ๋ก ๊ฐ๊ณ ๋์ ์์ ์์ธ๋ก ๊ฐ๋ ์ธ๋ถ ๋ฌธ์ ๊ฐ ๋ ์๊ธฐ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ๋ ํฌํญ์์ ๋์ ์ผ๋ก ๊ฐ๊ฒ ๋๋ ๋ฌธ์ ์ Sub Problem์ด ์๊ธด๋ค.
Sub ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ Optimal ํ ๋ฐฉ๋ฒ๋ Optimalํ๊ฒ ์ ํด์ ธ ์๋ค๋ ๊ฒ์ด๋ค.
When can we apply Dynamic Programming
Optimal Substructure, sub Problem๋ Optimalํ ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ณ ์๋ค.
Optimal Overlapping Subproblems, ์์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Princilple of optimality
'๐ Major Study (Bachelor) > ๐จ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ 4์ฃผ์ฐจ ์์์ผ ๊ฐ์ (0) | 2022.03.20 |
---|---|
์๊ณ ๋ฆฌ์ฆ 3์ฃผ์ฐจ ๋ชฉ์์ผ ๊ฐ์ (0) | 2022.03.17 |
์๊ณ ๋ฆฌ์ฆ 2์ฃผ์ฐจ ๋ชฉ์์ผ (0) | 2022.03.10 |
์๊ณ ๋ฆฌ์ฆ 2์ฃผ์ฐจ ์์์ผ ๊ฐ์ (0) | 2022.03.09 |
์๊ณ ๋ฆฌ์ฆ 1์ฃผ์ฐจ ์์์ผ ๊ฐ์ (0) | 2022.03.01 |