소개 : 동적 프로그래밍 및 분할 및 정복의 생각은 다소 유사하다 작은 문제의 일련 원래 큰 문제를 분할하는 것입니다 만, 사실 둘 사이의 차이는 여전히 매우 크다. 이 문서에서는 내 이해와 동적 프로그래밍 아이디어의 응용 프로그램을 공유에 초점을 맞추고 있습니다.
동적 프로그래밍 알고리즘의 첫째, 이해
우선, 최적의 솔루션을위한 매우 동적 프로그래밍 알고리즘은 동적 프로그래밍 아이디어를 통해 문제를 해결하기 위해, 우리는 단지 상인이 문제를 건너처럼, 자신의 문제에 대한 하위 최적의 솔루션의 문제에 대한 최적의 솔루션을 밀어 수 있었다, 실업가 끝에 도달 필요한 통행료에 따라서 그 이전 단계를 보냈다 통행료 및 통행료 그는 사건이 훨씬 이전에 다시 추적 할 수 있습니다 전에 마지막 단계를 보냈다. 동적 프로그래밍의 개념은 쉽게 동의 할 수 있지만, 동적 프로그래밍 알고리즘 설계 방법이 가장 중요하다 마스터하지만 - 그것은 일반적으로 네 단계로 나누어 져 있습니다 : 실제 상황에 따라 최적의 솔루션의 특성을 식별합니다. 2. 순환 식의 성질에 따라 최적의 솔루션을 유도한다 (이 공정은 매우 중요하다). 재귀 방정식, 디자인 적절한 프로그래밍 문 3. 분석. 4. 최적의 솔루션 방법을 작성하여 모든 경우에 기록하고, 최적의 솔루션을 원하는 대상을 찾을 수 있습니다.
재귀 방정식을 작성하는 단계를 저장하는 동안 우리는 동적 프로그래밍 알고리즘 때문에 쉽지 않습니다를 사용하는 경우, 그것은 우리가 더 문제를 이해하는 데 도움이 문제 해결 전략을 분석이 단계는 종종있다. 중복 서브 - 문제의 동적 프로그래밍은 종종 있으므로 각각의 경우에 대한 최적의 솔루션을 저장하는 방법을 충전하는 방법을 사용하는 전체적인 문제의 최적해는 결론에 도달했다.
개인적으로 동적 프로그래밍 알고리즘의 사용이 문제는 세 가지를 해결하기 위해 시작 해결하기 위해 생각 "어떻게": 첫째, 어떻게 현재의 문제의 최적의 하부를 구하는? 둘째, 어떻게 최적의 하부 구조에 의해 재귀 방정식을 작성하는? 셋째, 어떻게 양식을 작성하기 위해 순환 식으로 프로그램을 완료하려면?
프로그래밍 번째 목록이 재귀 식
첫 번째 질문 : 가장 긴 증가하는 순서를 검색
구성 문제는, 예를 들어 13,529에, 네 개의 숫자 9의 긴 증가하는 순서를 보여 자신의 추가 이전 긴 증가 서브 순서에 따라한다.
(ⅰ <= K <J | m로 [I]가, 긴 증가 AI 종료 순서대로 m 표현 [I]는 = 최대 {A [K] <= A [J] m + 1 [K]를} ).
두 번째 질문 : 요트를 임대
발견 문제의 의미에 따르면, 1 - 최소 비용 점은 K- 포인트를하려면 n 1 전세 비용, 플러스 최소 케이 N 포인트 비용에 따라 달라집니다.
비용으로 [I] [J] 난 역 역 J, m [i]는 최소의 비용으로 최적의 점을 나타내고있다 I
m [I] = {분 선정 [I] [K] + m [K]} (ⅰ <K <= N)
보고서의 프로그래밍 셋째, 결론
세 번째 장에서는 이데올로기 또는 알고리즘의 관점에서 동적 프로그래밍을 배울으로이 장에서, 우리는 프로그래밍에 복용에 더 많은 관심을 지불하므로, 준거법을 득점하기 어려운 정도입니다. 우선, 나는 동적 프로그래밍에 따라 요구 사항이 다음 아이디어는 알고리즘으로 구현하는 방법을 효과적인 프로그램 파트너와 함께 생각,
운동의 어려움의 크기 때문에 동시에, 그래서 우리는 함께 문제를 해결하기로 결정했다. 문제에서 우리는 완전히 재귀 방정식을 쓸 수 있지만, 해결 과정, 그러나 우리는 프로그램에 의해 재발의 법칙을 발견하려고 노력하고, 마지막 질문의 완료와 함께. 나를 위해, 페어 프로그래밍을 통해, 모두 내 동반자와 통합 지식뿐만 아니라 일반적인 문제를 해결, 경험을 공유 할 수 있습니다.
(중기가 시험에 통과하고, 사실 나는 그들이 배우고 생각하는 경우에도 매우 좋은 것을 이해하지만, 기계가 내 연구를 증명하기 위해 저를 괴롭히는 테스트합니다 그들의 지식을 완전하게 철저한 이해, 깊은 충분하지 않습니다.)