10-1Chaînes de caractères et appariement
CHAÎNES DE CARACTÈRES
ET APPARIEMENT
(STRINGS & PATTERN MATCHING)
Pattern matching, aussi appelé appariement, filtrage,
ou correspondance de motifs ou de patrons.
Force brute, Rabin-Karp, Knuth-Morris-Pratt
Expressions régulières
10-2Chaînes de caractères et appariement
Recherche dans les chaînes de
caractères
L’objectif de la recherche dans les chaînes de
caractères (string searching) est de localiser un
patron textuel (text pattern) spécifique au sein d’un
texte plus long (phrase, paragraphe, livre, etc).
Comme pour la plupart des algorithmes, les
préoccupations principales pour la recherche dans
les chaînes sont la vitesse et l’efficacité.
Il existe plusieurs algorithmes pour la recherche
dans les chaînes, mais les trois que nous étudierons
sont force brute, Rabin-Karp, et Knuth-Morris-Pratt.
10-3Chaînes de caractères et appariement
Force brute
L’algorithme force brute compare le patron au texte,
un caractère à la fois, jusqu’à ce que des caractères
qui ne correspondent pas l’un à l’autre soient
trouvés:
- Les caractères comparés sont en italique
- Les caractères qui correspondent sont en gras
On peut demander à l’algorithme d’arrêter à la
première occurrence du patron, ou à la fin du texte.
TW
O ROADS DIVERGED IN A YELLOW WOOD
R
OADS
T
W
O ROADS DIVERGED IN A YELLOW WOOD
R
OADS
TW
O
ROADS DIVERGED IN A YELLOW WOOD
R
OADS
TWO ROADS DIVERGED IN A YELLOW WOOD
R
OADS
TWO
ROADS
DIVERGED IN A YELLOW WOOD
ROADS
10-4Chaînes de caractères et appariement
Pseudo-code pour force brute
Voici le pseudo-code
repeat
if (lettre du texte == lettre du patron)
compare prochaine lettre du texte à la prochaine
lettre du patron
else
déplacer le patron à la prochaine lettre
until (patron trouvé ou fin du texte)
cool cat Rolo went over the fence
cat
cool cat Rolo went over the fence
cat
cool cat Rolo went over the fence
cat
cool cat Rolo went over the fence
cat
cool_cat Rolo went over the fence
cat
cool cat Rolo went over the fence
cat
10-5Chaînes de caractères et appariement
Force brute — Complexité
Soit un patron d’une longueur de M caractères et un
texte d’une longueur de N caractères...
Pire des cas: compare le patron à chaque sous-
chaîne de caractères de longueur M. Par exemple,
M=5.
1) AAAAAAAAAAAAAAAAAAAAAAAAAAAH
AAAAH 5 comparaisons
2) AAAAAAAAAAAAAAAAAAAAAAAAAAAH
AAAAH 5 comparaisons
3) AAAAAAAAAAAAAAAAAAAAAAAAAAAH
AAAAH 5 comparaisons
4) AAAAAAAAAAAAAAAAAAAAAAAAAAAH
AAAAH 5 comparaisons
5) AAAAAAAAAAAAAAAAAAAAAAAAAAAH
AAAAH 5 comparaisons
....
N) AAAAAAAAAAAAAAAAAAAAAAAAAAAH
5 comparaisons AAAAH
Nombre total de comparaisons: M (N-M+1)
Complexité du pire des cas: O(MN)
1 / 21 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !