Adloun

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

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 →