동적 프로그래밍은 컴퓨터 과학에서 사용 된 방법으로 간단한 하위 프로블럼으로 파괴하여 복잡한 문제를 해결하는 데 사용됩니다. 특히 최적화 문제 및 문제 해결에 효과적이며, 하위 프로블럼 및 최적의 하위 구조. 동적 프로그래밍을 구현하는 것은 적절한 기술을 선택하고, 효율적으로 계산을 수행하고, 일반적인 사용 사례를 이해합니다.

Dynamic Programming의 기술

동적인 프로그래밍에 대한 두 가지 주요 접근법이 있습니다: top-down and bottom-up. 상단 접근법은 반복 도중 하위 프로블롬의 결과를 저장하기 위해 memoization을 사용합니다, 과다한 계산을 피. 하단 업 접근법은 가장 작은 하위 프로블렘에서 솔루션이 결정적으로 구축하고, 최종 응답에 도달하기 위해 테이블을 채우십시오.

계산 및 구현

동적 프로그래밍을 구현하면 하위 프로블럼을 나타내는 상태 정의, 그리고 전환, 이전 주에서 상태를 계산하는 방법을 설명합니다. 일반적으로 테이블 또는 배열은 중간 결과를 저장하는 데 사용됩니다. Proper 초기화 및 경계 조건은 정확한 계산에 필수적입니다.

일반적인 사용 사례

  • Dijkstra와 Floyd-Warshall과 같은 가장 짧은 경로 알고리즘
  • Knapsack 문제 변화
  • 생물 정보학의 순서
  • Optimal 바이너리 검색 나무
  • Coin 변경 문제