다음은 동적 프로그래밍이 제공하는 다른 표현 방식입니다. 다이나믹 프로그래밍은 기하 급수의 후보 솔루션을 다항식 수의 등가 클래스로 축소하여 각 클래스의 후보 솔루션을 구분할 수 없도록합니다.
길이 n 의 배열 A 에서 길이 의 증가하는 서브 시퀀스 수를 찾는 문제를 예로 들어 보겠습니다 . 모든 서브 시퀀스 세트를 동등 클래스로 분할하여 두 개의 서브 시퀀스가 길이가 동일하고 동일한 색인으로 끝나는 경우에만 동일한 클래스에 속하도록하는 것이 유용합니다. 의 모든 2 개 n 개의 가능한 서브 정확히 하나에 속하는 O ( N 2 ) 등가 클래스. 이 분할은 클래스의 크기에 대한 반복 관계를 정의 할 수 있도록 충분한 정보를 유지합니다. 만약 f ( i , ℓ )kAn2nO(n2)f(i,ℓ)인덱스 끝나고 길이가 ℓ 인 하위 시퀀스 수를 제공하면 다음 과 같습니다.iℓ
(F)는 ( 나 , 1 ) = 1 모두가 나는 = 1 ... N을
f(i,ℓ)=∑j<i such thatA[j]<A[i]f(j,ℓ−1)
f(i,1)=1 for all i=1…n
이 반복은 시간 의 문제를 해결합니다 .O(n2k)