Vous êtes sur la page 1sur 23

Chaines de caractères

Utilisation d’un automate fini déterministe

Algorithmique et Complexité - Techniques


avancées de conception des algorithmes

N. TSOPZE & M. TAPAMO

Département d’Informatique - Université de Yaoundé I

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

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

1 Alfred Aho et Jeffrey Ullman. Concepts fondamentaux de


l’informatique. Dunod, 1993
2 Thomas H. Cormen, Charles E. Leiserson, Ronald R.
Rivest et Clifford Stein. Introduction à l?algorithmique.
2éme edition. Dunod, 2004.
3 Rakesh Agrawal et Ramakrishnan Shrinkat. Fast algorithms
for mining association rules. Technical Report, IBM Almaden
Research Center.

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

Discipline

Téléphones fermés
retard non toléré
bavardage, balade (en salle de cours) interdits
Ordinateurs fermés (sauf sur autorisation)

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Evaluation

Contrôle continu
Travaux Pratiques
Examen de fin de semestre
Projet de groupe (éventuel)
interrogation pendant le CM ou le TD

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Chapitre 1:

Programmation par automates et application


au traitement des chaines de caractères

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Plan du chapitre

1 Chaines de caractères

2 Utilisation d’un automate fini déterministe

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Recherche de chaine 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

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

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

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Définitions

1 Σ∗ = ensemble de toutes les chaines de longueur finie formées


avec les caractères de Σ
2  = chaine vide, de longueur 0
3 |x| longueur de la chaine x
4 xy concaténation des chaines x et y

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

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Trouver tous les décalages valides tels que


T [s + 1..s + m] = P [1..m]

Algorithm 1 recherche de chaine


Require: T et P
Ensure: S ensemble des décalages valides.
1: n ← longueur de T
2: m ← longueur de P
3: S ← {}
4: for s allant de 0 à n − m do
5: if T [s + 1..s + m] = P [1..m] then
6: S ← S ∪ {s}
7: end if
8: end for
9: retourner S

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

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

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Exercice

1 Quel est le temps de calscul de p si sa longueur est m ?


2 Quel est le temps de calcul de tous les ts si la longueur de T
est n ?

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

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

avec h = d m−1 (mod q)

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

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].

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Plan du chapitre

1 Chaines de caractères

2 Utilisation d’un automate fini déterministe

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Définition

Un automate fini M est un quintuplet (Q, q0 , A, Σ, δ), où


Q est un ensemble fini d’états,
q0 ∈ Q est l’état initial,
A ⊆ Q est un ensemble des états terminaux,
Σ est un alphabet fini,
δ est une fonction de Q × Σ vers Q, fonction de transition de
M.
Avantage: Examen d’un caractère une et une seule fois
Problème: temps de construction de l’AFD (surtout si Σ est grand)

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Un automate fini M induit une fonction φ, appelée fonction d’état


final, 
φ:Σ→Q
(3)
f (w ) = qw
f (w ) = qw est l’état de M après le traitement de w .
Reconnaissance
Si φ(w ) = qw ∈ A alors, M reconnait la chaine w .


φ() = q0
(4)
φ(wa) = δ(φ(w ), a), w ∈ Σ∗, a ∈ Σ
Il faut alors construire un automate pour chaque motif à rechercher

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

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 ).

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

AF et recherche

Q = {0, 1, ..., m}.


q0 = 0
A = {m}.
δ(q, a) = σ(Pq a)

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

recherche

Algorithm 2 recherche par automate de chaine


Require: T , m et Automate
Ensure: S ensemble des décalages valides.
1: n ← longueur de T
2: q ← 0
3: S ← {}
4: for i allant de 1 à n do
5: q ← δ(q, T [i])
6: if q = m then
7: s ←i −m
8: S ← S ∪ {s}
9: end if
10: end for
11: retourner S

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

Fonction de transition

Le principe est de rechercher à chaque état, le plus long préfixe de


P suffixe de la portion déjà lue. Ce plus préfixe correspond à un
état de l’automate.

N. TSOPZE & M. TAPAMO INFO306


Chaines de caractères
Utilisation d’un automate fini déterministe

algorithme

Algorithm 3 Fonction de transition


Require: P, Σ
Ensure: δ fonction de transition de l’AF.
1: m ← longueur de P
2: for q allant de 1 à m do
3: for a ∈ Σ do
4: k ← min(m + 1, q + 2)
5: repeat
6: k ←k −1
7: until Pk A Pq a
8: δ(q, a) ← k
9: end for
10: end for
11: retourner δ

N. TSOPZE & M. TAPAMO INFO306