๐ข ๋์ ํ๋ก๊ทธ๋๋ฐ
- ๋์ ํ๋ก๋๋ฐ(DP, Dynamic Programming) : ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ์ ์ผ๋ฐ์ ๊ธฐ๋ฒ ์ค ํ๋
- ์ธ๋ป ๋ณด๊ธฐ์ ๋ง์ ์๊ฐ( ์ฌ์ง์ด ์ง์ ์๊ฐ )์ด ์์๋ ๊ฒ ๊ฐ์ ๋ฌธ์ ์ ์ฃผ๋ก ์ ์ฉํ๋ค.
- ์ ์ฉ์ ์กฐ๊ฑด์ :
๐ ๋ถ๋ฌธ์ ๋จ์์ฑ(Simple Subproblems) : ๋ถ๋ฌธ์ ๋ค์ด j,k,l,m ๋ฑ๊ณผ ๊ฐ์ ๋ช ๊ฐ์ ๋ณ์๋ก ์ ์ ๋ ์ ์๋ ๊ฒฝ์ฐ
๐ ๋ถ๋ฌธ์ ์ต์ ์ฑ(Optimality Subproblems) : ์ ์ฒด ์ต์ ์น๊ฐ ์ต์ ์ ๋ถ๋ฌธ์ ๋ค์ ์ํด ์ ์๋ ์ ์๋ ๊ฒฝ์ฐ
๐ ๋ถ๋ฌธ์ ์ค๋ณต์ฑ(Overlap Subproblems) : ๋ถ๋ฌธ์ ๋ค์ด ๋ ๋ฆฝ์ ์ด ์๋๋ผ ์ํธ ๊ฒน์ณ์ง ๊ฒฝ์ฐ ( ์ฆ, ์ํฅ์์ผ๋ก ๊ตฌ์ถ ) - ๋ํ์ ์์
๐ ํผ๋ณด๋์น ์(Fibonacci progression)์์ N-๋ฒ์งธ ์ ์ฐพ๊ธฐ
๐ ๊ทธ๋ํ์ ์ดํ์ ํ์ ๊ณ์ฐํ๊ธฐ - ๋์ ํ๋ก๊ทธ๋๋ฐ vs ๋ถํ ํต์น๋ฒ
๊ณตํต์
๐ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ๊ธฐ๋ฒ์ ์ผ์ข
๐ ๋ฌธ์ ๊ณต๊ฐ : ์์ -๋ชฉํ์ ๊ตฌ์กฐ ( ์์ : ๋ฌธ์ ์ ์ด๊ธฐ ๋๋ ๊ธฐ์ด์ง์ / ๋ชฉํ์ : ์ต์ข ํด๊ฐ ์๊ตฌ๋๋ ์ง์ )
์ฐจ์ด์
๐ ๋ฌธ์ ํด๊ฒฐ ์งํ ๋ฐฉํฅ
๋์ ํ๋ก๊ทธ๋๋ฐ(๋จ๋ฐฉํฅ) : ์์ -> ๋ชฉํ์
๋ถํ ํต์น๋ฒ(์๋ฐฉํฅ) : ๋ชฉํ์ -> ์์ -> ๋ชฉํ์ ( ๋จ, ํด๋ฅผ ๊ตฌํ๊ธฐ ์ํ ์ฐ์ฐ์ ์งํ, ๋ฐฉํฅ์ ์์ ->๋ชฉํ์ )
์ฑ๋ฅ
๐ ๋์ ํ๋ก๊ทธ๋๋ฐ : ๋จ๋ฐฉํฅ ํน์ฑ๋๋ฌธ์ ์ข ์ข ํจ์จ์
๐ ๋ถํ ํต์น๋ฒ : ๋ถํ ํ์(๋ณดํต 2๋ถํ ์ ํ๋ค.) , ์ค๋ณต์ฐ์ฐ ์ํ ํ์์ ๋ฐ๋ผ ๋ค๋ฆ - ์ด๋ฆ์ "๋์ "ํ๋ก๊ทธ๋๋ฐ์ด์ง๋ง, ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ์๋ "๋์ ", ๊ทธ๋๊ทธ๋ ์ฌ์ฉํ๋ ๊ทธ๋ฐ ์๋ฏธ๋ ์๋๋ค.
ํ๋ ๊ตฌํ ๊ฒ์, ๋ค๋ฅผ ๋, ์ฌ์ฉํ๋ ์๋ฏธ์ผ ๋ฟ์ด๊ณ , ์ด๋ฌํ ๊ธฐ๋ฒ์ ์ด๋ฆ์ ์ง์ ์ฌ๋์ด ๊ทธ๋ฅ "๋์ ํ๋ก๊ทธ๋๋ฐ"์ด๋ผ ์๋ช ํ ๊ฒ ์ผ ๋ฟ์ด๋ค. ์คํดํ์ง๋ง์.
๐ข ๋์ ํ๋ก๊ทธ๋๋ฐ ์์
- N-๋ฒ์งธ ํผ๋ณด๋์น ์ ์ฐพ๊ธฐ : ํผ๋ณด๋์น ์์ด(Fibonacci Progression)์ i = 0,1์ ๋ํด f(i) = 1์ด๋ฉฐ, i >= 2 ์ ๋ํด
f(i) = f(i-1) + f(i-2)์ธ ์์ด์ด๋ค. - ์ฆ, f(0) = 1, f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, f(5) = 8, .......
- f(n), ์ฆ ํผ๋ณด๋์น ์์ด์ n-๋ฒ์งธ ์๋ฅผ ์ฐพ๊ธฐ ์ํด, ์ ์๋ก๋ถํฐ ์ง์ ์ฌ๊ท์๊ณ ๋ฆฌ์ฆ f๋ฅผ ์์ฑํ ์๋ ์์ง๋ง,
๋ถํํ๋ ์ง์์๊ฐ(exponential time)์ ์ํํ๋ฏ๋ก ๋๋ฌด๋ ๋นํจ์จ์ ์ด๋ค !! - ์ด๋ฅผ, ๋์ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ดํ์ฌ f(n)์ ์ฐพ๋ ๋น์ฌ๊ท, ์ ํ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ ๋ ๋ฒ์ ผ์ผ๋ก ์์ฑํด๋ณด์.
๐ 1. ์ ํ๊ณต๊ฐ์ผ๋ก ์ํํ๋ ๋ฒ์ ผ
๐ 2. ์์๊ณต๊ฐ์ผ๋ก ์ํํ๋ ๋ฒ์ ผ
Alg f(n) // ์ ํ ๊ณต๊ฐ
if(n == 0 || n == 1)
return 1
A[0] <- 1
A[1] <- 1
for i <- 2 to n
A[i] <- A[i-1] + A[i-2]
return A[n]
=============================
Alg f(n) // ์์ ๊ณต๊ฐ
if(n == 0 || n == 1)
return 1
a <- 1
b <- 1
for i <- 2 to n
c <- a + b
a <- b
b <- c
return c
728x90
๋ฐ์ํ
'Algorithm Theory' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ต๋จ๊ฒฝ๋ก(Shortest Path) (0) | 2020.12.15 |
---|---|
์ต์์ ์ฅํธ๋ฆฌ(Minimum Spanning Tree) (0) | 2020.12.15 |
๋ฐฉํฅ ๊ทธ๋ํ(Directed graph) (0) | 2020.12.14 |
๊ทธ๋ํ ์ํ(Graph Traversal) (0) | 2020.12.14 |
๊ทธ๋ํ(Graph) (0) | 2020.12.13 |