[알고리즘] 🤷♂️ 동적 계획법 / dynamic programming
글 작성자: 택시 운전사
반응형
👉 동적계획법
DP(동적 계획법)이 뭔가요?
DP는 알고리즘 문제로 자주 나오는 디자인 패러다임 중 하나입니다. Dynamic Programming이라는 말은 고안자인 벨만이 dynamic이라는 단어가 멋있어서(…) 선택한 단어라고 합니다. 따라서 이 방법은 전산학 전반에서의 동적(dynamic) 혹은 프로그래밍(programming)이라는 단어와는 관련이 없습니다. DP의 한글 번역도 동적 프로그래밍보다는 동적 계획법으로 번역됩니다.
👉 특징
부분 문제(overlapping subproblems)
동적 계획법의 접근 방식은 분할 정복과 같습니다. 주어진 문제를 더 작은 문제로 나눈 뒤 이 문제의 답을 계산하고, 이 답을 토대로 원래 문제의 답을 도출해가기 때문입니다. 하지만 분할 정복과 문제를 나누는 부분에서 차이가 납니다. 동적 계획법에서 어떤 부분 문제가 두 개 이상의 문제를 푸는 데 사용되는 데 이를 중복되는 부분 문제(overlapping subproblems)라고 부릅니다.
메모이제이션(memoization)
동적 계획법에서는 이 중복되는 부분을 저장하여 재활용함으로써 속도를 향상시킬 수 있습니다. 이미 계산한 값을 저장해 둔 메모리의 장소를 캐시(cache)라 부르고 이를 활용하는 최적화 기법을 메모이제이션(memoization)이라 부릅니다.
👉 구현
일반적인 동적 계획법 알고리즘 구현 방법
- 주어진 문제를 완전 탐색(exhaustive search)로 해결합니다.
- 중복된 문제(overlapping subproblems)를 한 번만 계산하기위해 메모이제이션(memoization)을 이용합니다.
🙋♂️ 추천 문제
Written with StackEdit.
반응형
'Algorithm' 카테고리의 다른 글
Q. 정렬 알고리즘에 대해 설명해주세요. (0) | 2019.06.03 |
---|---|
[알고리즘] 🤷♂️ 완전 탐색 알고리즘 / exhaustive search algorithm (0) | 2019.02.15 |
[알고리즘] 🤷♂️ 백트래킹 알고리즘 / Backtracking Algorithm (0) | 2019.02.01 |
댓글
이 글 공유하기
다른 글
-
Q. 정렬 알고리즘에 대해 설명해주세요.
Q. 정렬 알고리즘에 대해 설명해주세요.
2019.06.03 -
[알고리즘] 🤷♂️ 완전 탐색 알고리즘 / exhaustive search algorithm
[알고리즘] 🤷♂️ 완전 탐색 알고리즘 / exhaustive search algorithm
2019.02.15 -
[알고리즘] 🤷♂️ 백트래킹 알고리즘 / Backtracking Algorithm
[알고리즘] 🤷♂️ 백트래킹 알고리즘 / Backtracking Algorithm
2019.02.01