En considérant l'implémentation ci-dessus, voici l'arbre de récurrence pour un tableau de taille 4. lis Non nous donne la longueur de LIS pour arr [].

Nous pouvons voir qu'il y a beaucoup de sous-problèmes qui sont résolus encore et encore. Ce problème a donc une propriété de sous-structure se chevauchant et le recalcul des mêmes sous-problèmes peut être évité en utilisant la mémorisation ou la tabulation. Vous trouverez ci-dessous une implémentation sous forme de tableau pour le problème LIS utilisant la programmation dynamique.

Fonction LIS_P (arr :tableau d’entier, n :entier) :entier

Var Lis :tableau [1..n] d’entier

Debut

Lis[0]ß1 ;

Pour iß 1 à n faire debut

Lis[i]ß1 ;

Pour jß 0 à i faire debut

Si(arr[i]>arr[j] et lis[i]<(lis[j]+1)) alors lis[i]ß lis[j]+1 ;

Fin pour boucle j

Fin pour boucle i

Retourner max (lis[])

Fin fonction LIS

La complexité :

Notez que la complexité temporelle de la solution de programmation dynamique (DP) ci-dessus est O (n ^ 2)

 

 

Modifié le: vendredi 11 mars 2022, 21:27