Adloun

algorithmique (école d'ingénieur) · Chapitre 7 · Application directe du cours

Plus longue sous-séquence croissante en

Graphes sans circuit et ordonnancement de projets · niveau 3 (difficile)

Énoncé

On parcourt de gauche à droite en maintenant un tableau où est la plus petite valeur finale d'une sous-séquence croissante de longueur du préfixe déjà lu.

  • Montrer que est strictement croissant.
  • En déduire comment traiter un nouvel élément par une recherche dichotomique dans .
  • Écrire le programme et vérifier sur que la longueur trouvée est . Donner la complexité.

Corrigé

  • Soit et une sous-séquence croissante de longueur finissant par . Ses premiers éléments forment une sous-séquence croissante de longueur dont le dernier élément est strictement inférieur à . Donc .
  • Soit et le premier indice tel que (ou , le nombre de cases utiles, si dépasse tout). Les séquences de longueur finissent par : les prolonge en une séquence de longueur finissant par . On pose donc , et augmente de si . Comme est croissant, se trouve par dichotomie.
  • Programme :

static int longueurPlssc(int[] S) {
    int[] F = new int[S.length];
    int r = 0;                                   // F[0:r] strictement croissant
    for (int x : S) {
        int g = 0, d = r;
        while (g < d) {                          // F[0:g] < x <= F[d:r]
            int m = (g + d) / 2;
            if (F[m] < x) g = m + 1; else d = m;
        }
        F[g] = x;                                // x prolonge une séquence de longueur g
        if (g == r) r++;
    }
    return r;
}

Évolution de sur l'exemple : , , , , …, , puis l'allonge, remplace , l'allonge : , de longueur . Les deux derniers éléments donnent : n'est pas une sous-séquence de , seule sa longueur compte. Chacun des éléments coûte une dichotomie en : , contre pour la version du cours.


nom : S
valeurs : 6 5 1 2 3 4 5 2 7 6 8 0 1
vert : 2..6 9 10
legende : une plssc de longueur 7 : 1 2 3 4 5 6 8

nom : F
valeurs : 0 1 3 4 5 6 8
colorier : 0 1
legende : F à la fin : 0 et 1 ont remplacé 1 et 2, F ne se lit plus dans S

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →