0. Dynamic Programming
(instance I [size는 n]이 있을 때,)
1) bottom-up 방식 - recursive property
1> bottom-up으로 cost 계산
instance I에 대한 optimal solution은 I의 sub-instance에 대한 optimal solution을 이용하여 푼다.
2> top-down으로 sol 구한다.
sub-instance에 대한 cost를 모두 구해놓고 (bottom-up)
이들을 고려하여 다시 top-down으로 optimal solution을 구한다.
2) Programming = array(table)
1> Divide & Conquer와 다른 점
sub-instance들이 중복되며 solution을 구한다.
2> 그래서 solution을 구한 sub-instance를 array에 기록해둡니다.
- sub-instance에 대한 optimal solution cost
- solution을 구하기 위한 흔적을 남겨둔다.
(그래서 한 번 본 sub-instance가 나타나면 기록한 array에서 꺼내 사용합니다.
1. The Binomial Coefficient
1) The Binomial Coefficient
1> 정의
2> recursion form
cf> 분할 정복을 적용하면?
divde 했음에도 size가 커지므로(중복) exponential complexity를 가진다.
그러므로 Dynamic programming을 적용해본다.
2) Dynamic programming
1> recursive from
-> memo할 table을 만든다.
2> memo를 이용한 bottom-up 방식 적용
'알고리즘 > 알고리즘_학교' 카테고리의 다른 글
6-3강 - Dynamic Programming 3 (the principal of optimality, 행렬 곱셈) (0) | 2020.11.12 |
---|---|
6-2강 - Dynamic Programming 2 (최단거리 유형, 플로이드 알고리즘 ) (0) | 2020.11.12 |
5-1강 - Divide and Conquer 0 (Solving Recurrences Equations) (0) | 2020.10.23 |
4-2강 - Euler Cycle(Path) 2 (구현) (0) | 2020.10.09 |
4-1강 - Euler's path(cycle) 1 (개념 정리 및 구현 아이디어) (0) | 2020.10.09 |