동적 프로그래밍에 대해 이해함에 따라 주어진 상황에서 최적 하부 구조 개념을 쉽고 쉽게 개발할 수 있습니다. 예를 들어, 행렬 체인을 곱하기 위해 최적의 순서를 찾으면 Ai * Ai + 1 * ... * Aj를 계산하는 데 필요한 최소 곱셈 횟수를 찾을 수 있음을 알게되었습니다 (자세한 내용은 유감입니다. Ai * ... Ak 및 Ak + 1 ... * Aj에 필요한 곱셈의 합을 최소화하는 i와 j 사이의 split/parenetheses 배치 지점 k를 찾아 실제 크기와 함께 제공되는 비용을 더합니다. 즉, M (i, j) = mink (M (i, k) + M (k + 1, j) + di-1dkdj).최적 하부 구조에서 실제 알고리즘으로 이동
마찬가지로 문자열의 가장 긴 회문 부속 문자열을 찾는 경우 인덱스 i와 j와 입력 배열 사이의 최대 길이 회선 길이의 길이 l [i, j]는 2 + l [i i, j의 요소가 동일하고 추가 될 수있는 경우, 또는 l [i + 1, j], l [i, j-1]의 최대 값 나는 무엇이든 섞는다 ...)
그러나 어떤 상황에서 어떻게 위의 내용이나 심지어 내용과 같은 이상적인 순서의 길이를 찾기 위해 이것을 알고리즘으로 변환합니까? 기본적으로 루프를 실행하여 모든 것을 표로 만든 다음 기본적으로 테이블에서 필요한 것을 선택합니다. 행렬 체인을 사용하면 정확하게 수행 할 수있는 것처럼 보이지만, 회문에서는 루프를 만드는 방법에 대해 약간 혼란 스럽습니다.
감사합니다.