Académique Documents
Professionnel Documents
Culture Documents
Programme
1 Programmation par automates et application au traitement
des chaines de caractères
2 Algorithmes glouton
3 Branch and Bound
4 Algorithmes de bases en théorie des nombres et cryptographie
5 Algorithmes de traitement d’images
6 Algorithmes de calcul des règles d’association
7 NP-Complétude
8 Algorithme d’approximation
9 Algorithmes de bioinformatique
10 Introduction à l’algorithmique parallèle et à l’algorithmique
distribué
Parfois le support est dispo à
https://sites.google.com/site/ntsopze/resources/support-de-cours
N. TSOPZE & M. TAPAMO INFO306
Chaines de caractères
Utilisation d’un automate fini déterministe
Bibliographie
Discipline
Téléphones fermés
retard non toléré
bavardage, balade (en salle de cours) interdits
Ordinateurs fermés (sauf sur autorisation)
Evaluation
Contrôle continu
Travaux Pratiques
Examen de fin de semestre
Projet de groupe (éventuel)
interrogation pendant le CM ou le TD
Chapitre 1:
Plan du chapitre
1 Chaines de caractères
Σ = alphabet
T [1..n]=tableau de caractères, texte
P [1..m]= motif (m ≤ n)
Problème
la recherche de chaine de caractères consiste à vérifier si la chaı̂ne
P est dans T .
Application:
rechercher les mots dans un texte
recherche des séquences d’ADN
moteur de recherche
TALN
Définitions
Décalage
On appelle décalage le nombre s tel que P apparaı̂t dans T à
partir de la position s + 1.
ie 0 ≤ s ≤ n − m et T [s + 1..s + m] = P [1..m]
Si s existe alors on dit que s est un décalage valide
recherche
Rechercher une chaine de caractères P dans T revient à trouver les
décalages valides
Définitions
préfixe
w est préfixe de x (w @ x) si ∃y ∈ Σ∗ tel que x = wy
préfixe
w est suffixe de x (w A x) si ∃y ∈ Σ∗ tel que x = yw
Algorithme de Rabin-Karp
Σ = {0, 1, ..., 9}
ts le nombre décimal représenté par T [s + 1..s + m]
p le nombre P [1..m]
T [s + 1..s + m] = P [1..m] ⇒ ts = p où
suivant la règle de Horner, on a:
p = P [m]+10(P [m − 1]+10(P [m − 2]+...+10(P [2]+10P [1])...))
t0 = T [1, ...m] (le nombre)
(1)
ts+1 = 10(ts − 10m−1 T [s + 1]) + T [s + m + 1]
Décalage valide
Un décalage s est valide si ts = p
Exercice
Généralisation
q un entier tel que 10q tienne juste dans un seul mot machine,
De manière générale, avec un alphabet d-aire {0, 1, ..., d − 1}
(base d), on choisit q de telle sorte que dq tienne dans un mot
d’ordinateur.
Pour tenir compte du modulo q, l’équation 1 devient:
t0 = T [1, ...m] (le nombre)
(2)
ts+1 = (d(ts − hT [s + 1]) + T [s + m + 1])mod q
Problème
ts = p(mod q) n’implique pas ts = p car le modulo représente un
ensemble de valeurs
Mais, si ts 6= p(mod q), on est sur que ts 6= p et donc un décalage
s invalide.
Deux étapes :
1 utiliser le test ts = p(mod q) comme heuristique rapide pour
éliminer les décalages invalides
2 tester les décalage s pour lesquels ts = p(mod q) à nouveau
pour voir si s est bien valide en vérifiant la condition
P [1..m] = T [s + 1..s + m].
Plan du chapitre
1 Chaines de caractères
Définition
φ() = q0
(4)
φ(wa) = δ(φ(w ), a), w ∈ Σ∗, a ∈ Σ
Il faut alors construire un automate pour chaque motif à rechercher
Définitions
fonction suffixe
application σ de Σ∗ vers {0, 1, ..., m} telle que σ(x) est la longueur
du plus long préfixe de P qui est un suffixe de x
σ(x) = max{k : Pk A x} .
sachant que la chaı̂ne vide P0 = est un suffixe de n’importe
quelle chaı̂ne
Exemple: P = ab on a σ() = 0, σ(ccaca) = 1 et σ(ccab) = 2
si P de longueur m, et σ(x) = m ⇔ P A x
si x w y alors σ(x) ≤ σ(y ).
AF et recherche
recherche
Fonction de transition
algorithme