컴퓨터프로그래밍

동적 프로그래밍, 기본 원칙

프로그래밍 작업이 때때로 개인 컴퓨터의 메모리를로드 데이터 조합의 많은 양의를 정렬하는 데 필요한 수행 할 때 최적의 솔루션을 선택합니다. 이러한 방법은 예를 들어, "분할 통치"의 프로그래밍 방법을 포함한다. 이 경우에, 알고리즘은 별도의 작은 서브 태스크로 분리 문제를 제공한다. 이 방법은 작은 하위 작업은 상호 독립적 이러한 경우에 적용됩니다. 상호 의존적 인 하위 작업의 경우 불필요한 작업을 수행 피하기 위해, 50 년대에 미국 R.Bellmanom 제안 된 동적 프로그래밍 방법을 사용합니다.

방법

동적 프로그래밍은 그녀의 N 분리 스테이지를 공유하는 최적의 솔루션을 제 n 차원 문제를 결정하는 것이다. 그들 각각은 하나 개의 변수에 대한 하위 작업입니다.

이 방법의 가장 큰 장점은 한 차원 최적화 문제에 관여하는 개발자가 대신하는 n 차원의 문제 하위, 우리의 주요 목표는 "상향식 (bottom-up)"에가는 것을 고려 될 수있다.

즉, 하위 작업이 상호된다 이러한 경우에 동적 프로그래밍을 적용하는 것이 좋습니다 공통 모듈을 공유 할 수 있습니다. 이 알고리즘은 한 번 하위의 각의 결정을 제공하며, 저장 응답은 특별한 테이블에서 수행된다. 이것은 그들이 같은 하위 작업을 다시 만났을 때 대답을 계산하지 않는 것을 가능하게한다.

동적 프로그래밍 작업은 문제 해결 최적화합니다. 이 방법의 저자는 R. 벨만 최적 원리로 배합 하였다 : 단계 및이 단계에 정의 된 용액의 각각의 초기 상태이든 모든 단계의 끝에서 시스템의 수신 상태에 대하여 최적의를 선택하는 다음.

이 방법은 변형 또는 순환에 의해 해결하는 작업의 성능을 향상시킨다.

건물의 작업 알고리즘

동적 프로그래밍 알고리즘은 너무 용액에 두 개 이상의 하위로 분할 작업은 모든 하위에 최적의 솔루션으로 구성되어, 작업의 구성을 포함한다, 그것을 포함한다. 또한,이 점화식을 작성하고, 전체 태스크에 대한 최적의 파라미터 값을 산출 할 필요가있다.

때때로, 3 단계에서 각 작업의 진행 상황에 대한 몇 가지 추가 배경 정보를 기억하는 것입니다. 이 리턴 스트로크라고합니다.

신청 방법

두 특징에있을 때 동적 프로그래밍이 적용된다 :

  • 하위 최적;
  • 하위 문제 겹치는 문제의 존재.

동적 프로그래밍에 의해 최적화 문제를 해결하려면 먼저 솔루션의 구조를 설명 할 필요가있다. 이 작업은 솔루션의 하위의 최선의 결정으로 구성되어있는 경우 최적이어야한다. 이 경우, 동적 프로그래밍을 사용하는 것이 좋습니다.

이 방법에서 중요한 문제 번째 속성 - 서브 태스크 소수. 동일한 중복 서브 문제를 사용하여 문제의 순환 용액의 개수는 초기 정보의 크기에 의존한다. 대답은 특별한 테이블에 저장되고, 프로그램은이 데이터를 사용하여 시간을 절약 할 수 있습니다.

특히 효과적인 작업이 필수적 단계에서 의사 결정을하는 데 필요한 동적 프로그래밍의 사용이다. 예를 들어, 교체 및 장비의 수리 문제의 간단한 예제를 고려하십시오. 의 두 가지 형태로 타이어를 만드는 동시에 타이어의 생산을위한 주조 기계 공장에 있다고 가정 해 봅시다. 양식 중 하나가 실패하는 경우, 기계를 분해 할 필요가있다. 때로는 더 많은 수익을 교체하고 경우에 기계를 분해하기 위해 두 번째 폼이 양식은 다음 단계에서 쓸모있을 것입니다 것을 이해할 수있다. 특히 그들이 실패를 시작하기 전에 두 작업 형태를 대체하는 것이 더 쉽습니다 때문이다. 계속 착취의 형태, 기계 가동 중단, 폐기 타이어 등의 비용 손실의 장점 : 동적 프로그래밍 방법은 계정에 모든 요소를 고려하여 이러한 양식의 교체의 문제에 최선의 전략을 결정합니다.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ko.delachieve.com. Theme powered by WordPress.