algorithmique (école d'ingénieur) · Chapitre 8 · Exercice de TD
Segmenter en un minimum de mots, compter les segmentations
Séquences et chaînes de caractères · niveau 2
Énoncé
- On note le nombre minimum de mots d'une segmentation du -préfixe de ( s'il n'est pas segmentable). Donner la récurrence de et écrire le programme qui affiche une segmentation en un minimum de mots.
- On note le nombre de segmentations du -préfixe. Donner la récurrence de .
- Calculer et sur l'exemple de l'exercice 8.5 et énumérer les segmentations de
artarien.
Corrigé
- Le dernier mot coûte un mot de plus que la meilleure segmentation du -préfixe : et, pour , ( si l'ensemble est vide).
static int[][] calculerNA(String C, Set<String> D) { int n = C.length();
int[] N = new int[n + 1], A = new int[n + 1];
N[0] = 0; // base : zéro mot
for (int j = 1; j < n + 1; j++) {
N[j] = INFINI; A[j] = -1;
for (int i = 0; i < j; i++)
if (D.contains(C.substring(i, j)) && N[i] + 1 < N[j]) { N[j] = N[i] + 1; A[j] = i; }
}
return new int[][] {N, A};
}
L'affichage est celui du cours (segmentation(C, A, n)).
- Les segmentations du -préfixe se répartissent selon leur dernier mot : (la segmentation vide) et .
- Exécution :
N = [0, 1, 1, 1, 1, 2, 2, inf, 2]
minimum : arta rien
K = [1, 1, 1, 2, 3, 2, 4, 0, 7]
Les segmentations : arta rien, arta ri en, art a rien, art a ri en, ar tari en, ar t a rien, ar t a ri en. Une seule est en deux mots.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 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.