A maioria dos exemplos clássicos de algoritmos de programação dinâmica possui tempos de execução como ou . Existem exemplos naturais com um tempo de execução ?
A maioria dos exemplos clássicos de algoritmos de programação dinâmica possui tempos de execução como ou . Existem exemplos naturais com um tempo de execução ?
Respostas:
Um exemplo natural é encontrar a subsequência crescente mais longa de uma sequência de números. As subsequências do candidato podem ser vinculadas na sequência de entrada. Este é um exercício bastante comum e funciona para outros tipos de subsequências. Na verdade, é o exercício 15.4-6 da 3ª edição do Cormen et al. livro também. Para um algoritmo, consulte a Seção 2.2 nestas notas .
Para expandir meu comentário:
Enquanto a classificação não está fazendo uma "pesquisa de tabela", lembre-se da definição real de DP:
Método para resolver problemas com subestrutura ideal.
Vemos que uma abordagem de dividir e conquistar para classificar satisfaz isso.