1-      Nous avons discuté des sous-problèmes de chevauchement et des propriétés optimales de la sous-structure. Discutons le problème de la plus longue augmentation de sous-séquence (LIS) en tant qu’exemple de problème pouvant être résolu à l’aide de la programmation dynamique.

Le problème de la plus longue sous-séquence croissante (LIS) consiste à trouver la longueur de la sous-séquence la plus longue d'une séquence donnée, de sorte que tous les éléments de la sous-séquence soient triés par ordre croissant. Par exemple, la longueur de LIS pour {10, 22, 9, 33, 21, 50, 41, 60, 80} est de 6 et LIS est de {10, 22, 33, 50, 60, 80}. 

Exemples :

entrée  : arr[] = {3, 10, 2, 1, 20}

sortie : longueur = 3

la plus longue sous sequence est 3, 10, 20

 

entrée  : arr[] = {3, 2}

sortie : Length of LIS = 1

la plus longue sous sequence est de {3} and {2}

entrée : arr[] = {50, 3, 10, 7, 40, 80}

sortie : la longueur = 4

la plus longue sous sequence croissante est  {3, 7, 40, 80}

 

fonction LIS(arr[1..n] tableau d’entier, n, max :entier) : entier

var i, res, max_endß1 ;

debut

// cas de base

si (n=1)  alors retourner 1 ;

pour iß1 à n faire debut

                        resßlis(arr, i, max) ;

                                     si (arr[i-1] < arr[n-1] && res+1> max_end) alors max_end=res+1 ;

fin pour

si(max<max_end) alors maxß max_end ;

retourner max_end ;

fin fonction LIS

fonction LIS1(arr[1..n] tableau d’entier, n : entier) : entier

var max=1 : entier ;

debut

lis(arr, n, max) ;

retourner max ;

}

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