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 S100 % gratuit
La suite du chapitre est sur Adloun
- 11 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
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.