Algorithm

[Algorithm] 동적 프로그래밍

씬프 2021. 4. 30. 15:37
반응형

동적 프로그래밍

큰 문제의 해답에 작은 문제의 해답이 포함되어 있는데,

이를 재귀 호출 알고리즘으로 구현하면 지나친 중복이 발생하는 경우에

이 재귀적 중복을 해결하는 방법

 

2가지 성질

1. 최적 부분구조

큰 문제의 해답에 그보다 작은 문제의 해답이 포함된다.

 

2. 중복 호출로 인한 심각한 비효율의 발생

한 번만 구해서 저장해 놓았다가 사용해도 되는 값들을 계산할 때마다 호출하는 비효율

 

 

거의 모든 재귀적 알고리즘은 최적 부분구조를 구현한다. 병합정렬, 퀵정렬 등도 최적 부분구조를 갖는다.

하지만, 이들은 재귀적 구현에서 중복이 발생하지 않는다. 이 점에서 동적 프로그래밍의 대상이 되는 문제와 다르다.

 

 

동적 프로그래밍을 구현할 때, 중복적으로 호출되는 값을 따로 저장해두고 그 값을 호출한다.

'Algorithm' 카테고리의 다른 글

[Algorithm] 너비우선탐색 (BFS)와 깊이우선탐색 (DFS)  (0) 2021.05.04
[Algorithm] 그래프  (0) 2021.05.03
[Algorithm] 해시 테이블  (0) 2021.04.29
[Algorithm] 이진검색트리  (0) 2021.04.28
[Algorithm] 정렬 알고리즘  (0) 2021.04.27