Ceci est une ancienne révision du document !
Algorithmes sur les textes
Exercice 1 : Chercher un mot
Soit une chaîne de caractères d
de longueur n
et un mot t
de longueur m
<n
.
- Donner l'algorithme naïf retournant la position de la première occurrence du mot
t
dans la chaîned
(ou -1 s'il est absent). Quelle est sa complexité? - Donner de même l'algorithme retournant la position de toutes les occurrences du mot
t
dans la chaîned
(ou une liste vide s'il est absent). Quelle est sa complexité? - On suppose qu'on peut tester si un caractère
c
appartient au motift
en temps constant. Proposez un algorithme plus efficace que l'algorithme naïf.
Exercice 2 : Compter les mots
1. Écrire un algorithme qui compte le nombre de mots dans un texte.
Remarque : On considère comme caractère d'espacement tout caractère qui n'est pas alphanumérique (alphabétique accentué ou non et chiffres).
2. Dessiner l'automate fini correspondant.
Exercice 3 : Palindrome
1. Écrire un algorithme récursif permettant de savoir si un tableau de caractères est un palindrome (un palindrome se lit "à l'endroit" et "à l'envers" de la même façon, comme par exemple "à l'étape, épate-la!").
Remarque : on ne considère ni la ponctuation, ni les espaces, ni les accents.
Quelle est sa complexité?
2. Pouvez-vous définir un automate fini capable de reconnaître les palindromes?
Exercice 4 : Expressions régulières
- Les langages réguliers sont un type de langage formel qui peut être décrit par une expression régulière ou reconnu par un automate fini.
- Le langage des expressions régulières permet de décrire des motifs (c'est à dire des classes de mots) dans une chaîne de caractère.
- Donnez l'expression régulière permettant de reconnaître les entiers relatifs et dessiner l'automate fini correspondant.
- Donnez l'expression régulière permettant de reconnaître les nombres décimaux (par exemple
-3
,12.3
,-12.34
,+3
,34,56
,0.
) et dessiner l'automate fini correspondant. - Donnez l'expression régulière permettant de reconnaître les adresses mail (par exemple
utilisateur@example.com
,nom.prenom@domaine.fr
,contact@123-xyz.org
) et dessiner l'automate fini correspondant. - Quelle est la complexité de la recherche d'une expression régulière dans un texte?