동적 계획법(Dynamic Programming)이란?
본문 바로가기
잡학모음집

동적 계획법(Dynamic Programming)이란?

by mement0mori 2023. 8. 31.

ai_동적계획법
ai 이미지

동적 계획법(Dynamic Programming)은 최적화 문제를 해결하기 위한 알고리즘의 한 종류입니다. 동적 계획법은 문제를 더 작은 문제들로 분할하고, 각 작은 문제를 해결한 결과를 저장하여 최종 문제를 해결하는 방식으로 동작합니다.

 

동적 계획법 사용하는 경우

최적 부분 구조가 있는 문제: 최적 부분 구조가 있는 문제는 문제를 더 작은 문제들로 분할할 수 있고, 각 작은 문제의 해가 최종 문제의 해에 영향을 미치는 문제를 말합니다.

 

중복되는 부분 문제: 중복되는 부분 문제는 문제를 더 작은 문제들로 분할할 때, 작은 문제들이 중복되어 발생하는 문제를 말합니다.

 

동적 계획법 단계수행 순서

 

1. 문제를 더 작은 문제들로 분할합니다.

 

2. 각 작은 문제의 해를 저장합니다.

 

3. 작은 문제들을 합하여 최종 문제를 해결합니다.

 

동적 계획법 특징

효율적입니다. 동적 계획법은 최적 부분 구조를 활용하여 중복되는 계산을 피할 수 있으므로, 효율적입니다.

 

복잡합니다. 동적 계획법은 문제를 더 작은 문제들로 분할하는 과정이 필요하므로, 복잡할 수 있습니다.

 

동적 계획법의 예

피보나치 수열

피보나치 수열은 01로 시작하는 수열로, 다음 항은 이전 두 항의 합으로 결정됩니다. 피보나치 수열의 n번째 항을 계산하는 문제는 최적 부분 구조가 있는 문제입니다.

 

최단 경로 문제

두 정점 간의 최단 경로를 찾는 문제는 최적 부분 구조가 있는 문제입니다.

 

최대 부분합 문제

수열에서 연속적인 부분 합 중 최대값을 찾는 문제는 최적 부분 구조가 있는 문제입니다.

ai_동적계획법
ai 이미지

응용 분야

 

인공 지능

인공 지능의 다양한 분야에서 사용됩니다. 예를 들어, 자연어 처리, 기계 번역, 기계 학습 등에서 사용됩니다.

 

데이터 분석

데이터 분석에서 사용됩니다. 예를 들어, 추천 시스템, 이상 탐지, 최적화 등에서 사용됩니다.

 

게임

게임의 인공 지능, 게임의 레벨 디자인, 게임의 스토리텔링 등에서 사용됩니다.

 

동적 계획법은 컴퓨터 과학에서 매우 중요한 알고리즘 중 하나입니다. 동적 계획법을 이해하면 다양한 분야의 문제를 효율적으로 해결하는 데 도움이 될 수 있습니다.