NSI (terminale) · Chapitre 7 · Exercice de TD
Distance d'édition (Levenshtein)
La programmation dynamique · niveau 3 (difficile)
Énoncé
Distance d'édition (Levenshtein).
Calculer le nombre minimal d'opérations (insertion, suppression, substitution d'un caractère) pour transformer une chaîne en une chaîne .
Corrigé
Soit la distance entre et . Si les derniers caractères sont égaux, ; sinon on prend le minimum des trois opérations, augmenté de 1.
def distance_edition(X, Y):
n, m = len(X), len(Y)
table = [[0] * (m + 1) for _ in range(n + 1)]
for i in range(n + 1):
table[i][0] = i
for j in range(m + 1):
table[0][j] = j
for i in range(1, n + 1):
for j in range(1, m + 1):
if X[i - 1] == Y[j - 1]:
table[i][j] = table[i - 1][j - 1]
else:
table[i][j] = 1 + min(
table[i - 1][j], # suppression
table[i][j - 1], # insertion
table[i - 1][j - 1] # substitution
)
return table[n][m]
La complexité est .
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 7 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
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.