• Aucun résultat trouvé

Entra^ınement au concours ACM-ICPC Algorithmes de texte

N/A
N/A
Protected

Academic year: 2022

Partager "Entra^ınement au concours ACM-ICPC Algorithmes de texte"

Copied!
22
0
0

Texte intégral

(1)

Entra^ınement au concours ACM-ICPC

Algorithmes de texte

(2)

Plan

Recherche de (sous-)cha^ıne

Expressions rationnelles et automates Conclusion

(3)

Trouver toutes les occurrences d’une sous- cha^ıne dans une cha^ıne

Algorithme na¨ıf

// s est la cha^ıne , p le m o t i f

for(int i =0 , j ; i < s . s i z e () - p . s i z e ( ) + 1 ; + + i ) { for( j =0; j < p . s i z e () && s [ i + j ]== p [ j ] ; + + j )

;

if( j == p . s i z e ())

c o u t < < " M a t c h ␣ `a ␣ la ␣ p o s i t i o n ␣ " < < i < < e n d l ; }

En g´en´eral, similaire `a l’impl´ementation native du langage (strstr, string::find, String.indexOf()), fortement optimis´ee

Complexit´eO(|s| × |p|)

(4)

Knuth–Morris–Pratt : id´ ee

p motif,s cha^ıne

Pour chaque pr´efixe p de p, maintenir la taille du pr´efixe maximal dep qui est un suffixe strict dep

p =“abcabd” 00120

Tableau constructible en temps lin´eaire en le motif p s =“abcababcabd”

abcabd

(5)

Knuth–Morris–Pratt : id´ ee

p motif,s cha^ıne

Pour chaque pr´efixe p de p, maintenir la taille du pr´efixe maximal dep qui est un suffixe strict dep

p =“abcabd” 00120

Tableau constructible en temps lin´eaire en le motif p s =“abcababcabd”

abcabd

(6)

Knuth–Morris–Pratt : id´ ee

p motif,s cha^ıne

Pour chaque pr´efixe p de p, maintenir la taille du pr´efixe maximal dep qui est un suffixe strict dep

p =“abcabd” 00120

Tableau constructible en temps lin´eaire en le motif p s =“abcababcabd”

abcabd

(7)

Knuth–Morris–Pratt : id´ ee

p motif,s cha^ıne

Pour chaque pr´efixe p de p, maintenir la taille du pr´efixe maximal dep qui est un suffixe strict dep

p =“abcabd” 00120

Tableau constructible en temps lin´eaire en le motif p s =“abcababcabd”

abcabd

(8)

Knuth–Morris–Pratt : id´ ee

p motif,s cha^ıne

Pour chaque pr´efixe p de p, maintenir la taille du pr´efixe maximal dep qui est un suffixe strict dep

p =“abcabd” 00120

Tableau constructible en temps lin´eaire en le motif p s =“abcababcabd”

abcabd

(9)

Knuth–Morris–Pratt :

interpr´ etation comme automate

Peut-^etre vu comme l’automate d´eterministe des mots ayant pour suffixe p :

1 a 2 b 3 c 4 a 5 b 6 d 7

̸=a a

̸=a,b

̸=a,c

̸=a

̸=a,b

̸=a,c,d

c

̸=a

a

a a

a

(10)

Recherche d’un mot

parmi un ensemble de mots

DictionnaireD den mots

Pour rechercher si un mot est dans cet ensemble : Vecteur ou liste cha^ın´ee :O(n)

Arbre binaire ´equilibr´e :O(logn)

Table de hachage :O(1) ; possibilit´es de collision,O(n) dans le pire des casTrie (ou arbre pr´efixe) :O(1)

(11)

Trie (arbre pr´ efixe)

i t

e

o n

n n a

t i

in

inn te

tea ten

to

3 12 9

7 5

11

ted d

A

A 15

4

Arbre de tous les pr´efixes des mots de D Ar^etes ´etiquet´ees par les lettres de l’alphabet

On indique sur chaque nœud de l’arbre si ce pr´efixe forme un des mots de D Permet de rechercher efficacement l’ensemble des continuations d’un mot m dansD (l’ensemble des mots de D dont mest pr´efixe)

L’ordre lexicographique est pr´eserv´e

(12)

Arbre radix (trie Patricia)

CC-BY Claudio Rochini, Wikimedia

Raffinement des tries

Fusion d’un nœud avec son nœud fils s’il est unique

Espace m´emoire consid´erablement r´eduit dans certaines applications

Le branchement peut se faire bit par bit (quand on stocke des entiers), lettre par lettre, ou groupe de bits par groupe de bits (le nombre de bits par branchement est le radix)

(13)

Chercher les occurrences d’un ensemble de sous-cha^ınes dans une cha^ıne

DictionnaireD de taille n contenant des mots de taille k, cha^ıne de taillel

Applications r´ep´et´ees de Knuth–Morris–Pratt ?O(n×(k+l))

On peut faire mieux : g´en´eraliser l’algorithme de Knuth–Morris–Pratt `a un trie arbitraire (et non une s´equence de caract`eres) :

O(n×k+l+m) (m est la taille de la sortie)

(14)

Aho–Corasick

a b c

b a c a

b a a

CC-BY Dllu, Wikimedia

On construit un trie du dictionnaire (en noir, les mots du dictionnaire sont sur fond bleu)

On ajoute des pointeurs vers le plus grand suffixe strict pr´esent dans le trie (en bleu)

On ajoute la cl^oture transitive de ces pointeurs restreinte aux mots du dictionnaire

Exemple : abccab donne successivement les mots a (parcours normal), ab (parcours normal), bc (apr`es suivi du pointeur), c

(15)

Arbre des suffixes

3 1

5

A NA

NA NA$

$ $

BANANA$

4 2

0

NA$

$

Trie Patricia des suffixes d’un mot donn´e (ici, BANANA, suivi d’un symbole sp´ecial $)

Facilement constructible en temps O(n2) de droite `a gauche

Possible de le construire en temps O(n) de gauche `a droite, avec un m´ecanisme similaire aux pointeurs de Aho–Corasick Permet d’indexer une cha^ıne pour pouvoir ensuite efficacement rechercher des sous-cha^ınes

Nombreuses autres applications : p. ex., plus longue sous-cha^ıne commune

(16)

Plan

Recherche de (sous-)cha^ıne

Expressions rationnelles et automates Conclusion

(17)

Expressions rationnelles

Langage permettant de d´ecrire des motifs `a rechercher dans une cha^ıne de caract`eres

Par exemple : (a|b)*#(a|b)*(#(a|b|#)*)?

G´en´eralise la recherche de sous-cha^ınes, de mots d’un dictionnaire, de pr´efixes, de suffixes, etc.

Processeurs d’expressions rationnelles dans la biblioth`eque standard de Java (java.util.regex) et dans la biblioth`eque standard de C++

2011 (std::regex)

(18)

Automates

Une expression rationnelle peut ^etre traduite en un automate fini nond´eterministe en temps lin´eaire (algorithme de Thompson, r´esulte en des transitions spontan´ees) ou quadratique (algorithme de Glushkov, plus petit nombre d’´etats)

Reconna^ıtre si une cha^ıne de caract`eres de longueur n est accept´ee par un automate nond´eterministe `am ´etats est enO(n×m)

Un automate nond´eterministe `am ´etats peut ^etre transform´e en automate d´eterministe `aO(2m) ´etats en temps O(2m)

Reconna^ıtre si une cha^ıne de caract`eres de longueur n est accept´ee par un automate d´eterministe `am ´etats est enO(n)

(19)

Expressions rationnelles et expressions rationnelles

Ce que Java ou C++ appellent expression rationnelle n’est pas une expression rationnelle :

R´ef´erences arri`eres (permettant d’indiquer qu’une sous-cha^ıne se r´ep`ete) Op´erateur*glouton et* ?r´eticent

Du coup, les impl´ementations des expressions rationnelles n’utilisent pas des automates, mais du backtracking

Souvent beaucoup moins efficaces ! Exponentiel en la taille de l’expression rationnelle dans les cas pathologiques

(20)

Plan

Recherche de (sous-)cha^ıne

Expressions rationnelles et automates Conclusion

(21)

En r´ esum´ e

D´eterminer si une cha^ıne est dans un ensemble de cha^ınes : table de hachage

D´eterminer les cha^ınes d’un ensemble dont une cha^ıne est pr´efixe : trie, arbre radix

Recherche d’une petite sous-cha^ıne d’une cha^ıne : impl´ementation native du langage de programmation

Recherche d’une sous-cha^ıne de taille non n´egligeable d’une longue cha^ıne : Knuth–Morris–Pratt (ou Boyer–Moore, non trait´e ; KMP est meilleur quand l’alphabet est petit, p. ex., ACTG de l’ADN)

Recherche d’un ensemble de sous-cha^ınes dans une cha^ıne : Aho–Corasick ou arbre des suffixes (Aho–Corasick indexe les sous-cha^ınes, l’arbre des suffixes indexe la cha^ıne)

Recherche d’un motif complexe dans une cha^ıne : expression rationnelle

(22)

Licence de droits d’usage

Contexte public}avec modifications

Par le t´el´echargement ou la consultation de ce document, l’utilisateur accepte la licence d’utilisation qui y est attach´ee, telle que d´etaill´ee dans les dispositions suivantes, et s’engage `a la respecter int´egralement.

La licence conf`ere `a l’utilisateur un droit d’usage sur le document consult´e ou t´el´echarg´e, totalement ou en partie, dans les conditions d´efinies ci-apr`es et `a l’exclusion expresse de toute utilisation commerciale.

Le droit d’usage d´efini par la licence autorise un usage `a destination de tout public qui comprend : – le droit de reproduire tout ou partie du document sur support informatique ou papier,

– le droit de diffuser tout ou partie du document au public sur support papier ou informatique, y compris par la mise `a la disposition du public sur un eseau num´erique,

– le droit de modifier la forme ou la pr´esentation du document,

– le droit d’int´egrer tout ou partie du document dans un document composite et de le diffuser dans ce nouveau document, `a condition que : – L’auteur soit inform´e.

Les mentions relatives `a la source du document et/ou `a son auteur doivent ^etre conserv´ees dans leur int´egralit´e.

Le droit d’usage d´efini par la licence est personnel et non exclusif.

Tout autre usage que ceux pr´evus par la licence est soumis `a autorisation pr´ealable et expresse de l’auteur :sitepedago@telecom-paristech.fr

Références

Documents relatifs

Peut-être aurions-nous eu des résultats plus pertinents et plus représentatifs pour évaluer les capacités des internes à assurer le suivi de grossesse ambulatoire en

En outre, contrairement à deux autres méthodes, il est possible avec cette technique d’effectuer une dérivation numérique pour obtenir les déformations avant de lisser ces

Through the analysis of the chips produced and the chipping movies, we are able to define good and bad chipping areas, functions of the grain direction angle GD, the moisture

Quand une racine dentaire avec un ligament parodontal nécrosé est en contact direct avec l’os alvéolaire, le cément et la dentine sont impliqués dans le

Les méthodes numériques sont ensuite utilisées pour déterminer la politique de production avec des taux de cadenassage minimal et maximal pour un système

La première étape consiste à choisir la bonne taille de théière en fonction du nombre de personnes pour qui vous allez faire du thé la plupart du temps. Les théières existent dans

[8] proposed a new approach to phonetic search that uses transcription rules to create an Aho-Corasick automaton (AC-A) [1] that finds all possible transcriptions of the search

plus loin apparemment que ce qui nous fait cortège mais dans le même.. et ne progressant dans le bleu