Estrutura recursiva do problema da subsequência direita crescente máxima

[Enunciado]   Queremos provar que o problema da SSDC máxima tem estrutura recursiva. Mais precisamente, queremos provar que se D[1 .. k] é uma SSDC máxima de A[1 .. m] e k ≥ 2 então

D[1 .. k−1] é SSDC máxima de A[1 .. i] para algum i em 1 .. m−1.

PROVA: É claro que o índice k − 1 de D casa com algum índice i de A que pertence ao intervalo 1 .. m−1. Portanto, D[1 .. k−1] é uma SSDC de A[1 .. i]. Resta mostrar que D[1 .. k−1] é uma SSDC máxima de A[1 .. i].  Suponha então, para obter uma contradição, que A[1 .. i] tem uma SSDC de comprimento maior que k−1, digamos X[1 .. k]. Então

X[k] = A[i] = D[k−1] ≤ D[k] = A[m].

Logo, podemos acrescentar A[m] ao final de X[1 .. k] para obter uma SSC mais longa. Digamos que a nova SSC é X[1 .. k+1]. Então X[1 .. k+1] é uma SSDC de A[1 .. m] e tem comprimento maior que o comprimento de D[1 .. k]. Como D[1 .. k] era máxima por hipótese, temos uma contradição. Essa contradição mostra que D[1 .. k−1] é, de fato, uma SSDC máxima de A[1 .. i].

Exemplo A.  A figura ilustra a prova. Cada A indica um elemento da sequência A[1 .. m], cada D indica um elemento da sequência D[1 .. k] e cada X indica um elemento da sequência X[1 .. k]. É claro que letras na mesma vertical representam o mesmo número.

A A A A A A A A A A A A A  
D D D D D
X X X X X ?