Adloun

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

Couture droite ou couture souple ?

Redimensionner une image : le seam carving · niveau 1 (application)

Énoncé

Une idée simple consiste à retirer la colonne d'énergie totale minimum.

  • Écrire le calcul de la meilleure colonne. Quelle est sa complexité ?
  • Comparer, sur l'image du chapitre, le coût de la meilleure colonne et celui de la meilleure couture.
  • Le coût de la meilleure couture est-il toujours inférieur ou égal à celui de la meilleure colonne ?

Corrigé

  • On somme les énergies de chaque colonne et l'on garde la plus petite somme : .

int[] S = new int[C];
for (int c = 0; c < C; c++) for (int l = 0; l < L; l++) S[c] += E[l][c];
int best = 0;
for (int c = 1; c < C; c++) if (S[c] < S[best]) best = c;

-


sommes des colonnes : [500, 426, 384, 328, 356, 458, 432, 500]
meilleure colonne 3, coût 328
meilleure couture : coût 308

La couture souple économise en zigzaguant entre les colonnes et .


nom : S
valeurs : 500 426 384 328 356 458 432 500
vert : 3
legende : sommes des colonnes : la meilleure, 328, en colonne 3
  • Oui : une colonne droite est une couture particulière (que des pas N). Le minimum sur toutes les coutures est donc inférieur ou égal au minimum sur les colonnes. La couture souple n'est jamais pire, pour le même ordre de complexité.

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 →