Adloun

Séquences et chaînes de caractères

Cours · algorithmique (école d'ingénieur), chapitre 8 · école d'ingénieur, informatique · le début du chapitre, la suite sur Adloun

Objectifs du chapitre

  • Raisonner sur les préfixes d'une séquence pour obtenir une récurrence.
  • Calculer une plus longue sous-séquence commune à deux séquences (plsc), base de l'outil diff et de la bioinformatique.
  • Segmenter une chaîne de caractères en mots d'un dictionnaire.
  • Raisonner sur des sous-chaînes et calculer par tailles croissantes : plus longue sous-séquence palindrome.

Une séquence est une suite finie de symboles : une chaîne de caractères, un brin d'ADN (symboles A, C, G, T), un fichier vu comme une suite de lignes… Les problèmes de ce chapitre ont un point commun : les sous-problèmes naturels portent sur les préfixes des séquences. Le -préfixe de est ; le -préfixe est la séquence vide, le -préfixe est elle-même.

En Java, on représente les séquences par des chaînes (String) :

8.1 Plus longue sous-séquence commune

Définition 8.1Sous-séquence, séquence commune

Une sous-séquence de est obtenue en supprimant de un nombre quelconque de symboles (entre et ), sans changer l'ordre des symboles restants. Une séquence commune (sc) à et est une sous-séquence de qui est aussi une sous-séquence de . On cherche une plus longue séquence commune (plsc).

Exemple 8.2
  • est une plsc à et .
  • est une plsc à et .

Attention : une sous-séquence n'est pas une sous-chaîne, ses symboles ne sont pas forcément contigus.

Repère historique : diff et l'ADN

Le calcul d'une plsc est un problème de base en bioinformatique : comparer deux séquences d'ADN ou d'ARN, c'est d'abord trouver ce qu'elles ont en commun. C'est aussi le cœur de la commande diff des systèmes Unix et Linux (et donc de git diff) : chaque ligne d'un fichier est un symbole, diff calcule une plsc aux deux fichiers puis affiche les lignes qui n'en font pas partie.

L'énumération exhaustive est hors de question : une séquence de longueur a sous-séquences.

8.1.1 Supposons le problème résolu

Soient et de longueurs et , et une plsc à et , de longueur . Regardons les derniers symboles et . Il n'y a que quatre possibilités :

Si les derniers symboles sont différents, l'un des deux au moins n'est pas le dernier symbole de : on est dans le cas B, C ou D, et . Or une sc aux préfixes et est aussi une sc à et : . Le cas B est donc inutile, et il reste deux cas.

On généralise aux - et -préfixes : est la longueur d'une plsc à et . Si l'un des préfixes est vide, la seule sc est la séquence vide.

La suite du cours est sur Adloun

Le chapitre en entier, formules et figures comprises, avec le tuteur, les fiches, les QCM et les exercices.

Lire la suite du cours

En accès libre, sans inscription.

Exercices corrigés de ce chapitre

Lire la suite du cours →