• Aucun résultat trouvé

Phase de recherche

N/A
N/A
Protected

Academic year: 2022

Partager "Phase de recherche"

Copied!
70
0
0

Texte intégral

(1)

Thierry Lecroq – Université de Rouen - 1

Algorithme de Boyer-Moore

(2)

Phase de recherche

(3)

Thierry Lecroq – Université de Rouen - 3

Fenêtre glissante

fenêtre

sens des décalages

(4)

Fenêtre glissante

(5)

Thierry Lecroq – Université de Rouen - 5

Fenêtre glissante

(6)

Algorithme de recherche de mot

(7)

Thierry Lecroq – Université de Rouen - 7

Algorithme de Boyer-Moore

tentative : compare les lettres du mot et les

lettres de la fenêtre, de la droite vers la

gauche, en commençant par la lettre la

plus à droite

(8)

Fenêtre glissante

sens des comparaisons

(9)

Thierry Lecroq – Université de Rouen - 9

Décalage

* +

# ' $ $%&& (

#,&& ')( + - +

# ' $ $%(

+

(10)

Décalage

* +

# ' $ $%&& (

#,&& ')( + - +

.

# ' $ $%(

+

(11)

Thierry Lecroq – Université de Rouen - 11

3 types de décalages

"

/

"

(12)

Décalage

0 - , '%-

%

- "

, 1 $% # ' $%&& ' '%(

$% 1 #,&& ' '%(

(13)

Thierry Lecroq – Université de Rouen - 13

Décalage

0 - , '%-

%

- - "

, 1 # ' (

1

(14)

Décalage

*

- , '%-

- " 2 3 - - -

4

(15)

Thierry Lecroq – Université de Rouen - 15

algo BM( , , , ) -1

tantque < faire -1

tantque 0 et [ ] = [ - +1+ ] faire -1

SIGNALER-SI( < 0) si < 0 alors

+ ( ) sinon

+ ( , [ - +1+ ])

(16)

Décalage

0 -

, '% %

- "

, 1 # ' ( # (

1

(17)

Thierry Lecroq – Université de Rouen - 17

Décalage

*

- , '%

# ( " 2 3 - -

4

(18)

algo BM-FAIBLE( , , , ) -1

tantque < faire -1

tantque 0 et [ ] = [ - +1+ ] faire -1

SIGNALER-SI( < 0) si < 0 alors

+ ( ) sinon

+ # (

(19)

Thierry Lecroq – Université de Rouen - 19

Décalage

0

5 2 %-)-6- 4

7

# ( " 2 2 '%' 3 , 8 8 ')

# ( " 4 ∪ 2 44

(20)

algo BM-FAIBLE-AVEC-DERN-OCC( , , , ) tantque -1 < faire

tantque -1 0 et [ ] = [ - +1+ ] faire SIGNALER-SI( < 0) -1

si < 0 alors

+ ( ) sinon

+ max{ # ( ,

[ [ - +1+ ]]}

(21)

Thierry Lecroq – Université de Rouen - 21

9 .

" ,- " #,(

∀ ∈

(22)

Phase de prétraitement : calcul de la table bon-suff

# (

# (

(23)

Thierry Lecroq – Université de Rouen - 23

Calcul de la table bon-suff

0

# ( " 3 - #,&& ( 3 : - "

+

(24)

algo SUFFIXES( , ) [ -1] -1

pour -2 à 0 faire

si > et [ + -1- ] - alors

# ( min{ [ + -1- ], - } sinon

min{ , }

tantque 0 et [ ] = [ + +1- ] faire -1

# ( '

(25)

Thierry Lecroq – Université de Rouen - 25

Invariants de l’algorithme SUFFIXES( , )

'%

, $ '%'

# (

(26)

Complexité de l’algorithme SUFFIXES( )

%

! ;<<=>? -

! &

@ .

&

@ . .

'% &

(27)

Thierry Lecroq – Université de Rouen - 27

Phase de prétraitement : calcul de la table bon-suff

%

# (

# ( %

% # (

(28)

Phase de prétraitement : calcul de la table bon-suff

%

# ( %

(29)

Thierry Lecroq – Université de Rouen - 29

algo BON-SUFFIXES( , ) 0

pour -2 à -1 faire

si = -1 ou [ ] = +1 alors tantque < -1- faire

[ ] -1- +1

pour 0 à -2 faire

[ -1- [ ]] -1-

retourner

(30)

Complexité de l’algorithme

BON-SUFFIXE( )

%

! A0B' ;<<=>? -

! &

') + '% C

, + '%' 2 4"

C

, + ') &

(31)

Thierry Lecroq – Université de Rouen - 31

Analyse de la phase de recherche

! D

- - "

. " ) - " E )&

F

A '<*=A!? -

# , + , .

G3"3 G ∈ B - B ' -

- +

" 2 $ 3 $ " G3"3- $ H , - G ∈ B 4& B

(32)

Lemme 3 : figure

" " " " " " " " " "

" "

" "

,

(33)

Thierry Lecroq – Université de Rouen - 33

Lemme 3 : preuve

" 3"3

# , &

" # ( . .

" # , ' $%$ ( / &

, " , ' &

- , , 8 # ' , $%&& ' , '%(

- , " # ' , ( / # ( " &

# ( 8 , &

(34)

Lemme 3 : figure

" " " " " " " " " "

" "

" "

,

,

(35)

Thierry Lecroq – Université de Rouen - 35

Lemme 3 : preuve

# ( 1 , # %

# , . .

&

; +

+ & I

(36)

# +

#,&& (- - / - " %" - % "-

% - E ) " &

(37)

Thierry Lecroq – Université de Rouen - 37

! J

= K ' G3"3

% 8 G 8 '% #&

(38)

Lemme 4 : preuve

&

# , + , " L'G , 3 3

% 8 G , 8 '%

%" 'G

,

#,&& , (

%" 'G

,

, " '3%3' 'G , 3"3

" # ( HG 3"3&

(39)

Thierry Lecroq – Université de Rouen - 39

Lemme 4 : figure

" "

" " " " " "

"

"

" "

" "

,

"

,

"

"

"

" " " " " "

" "

" " " " "

%

%

%

%

%

,

#

#

#

,

#

,

(40)

Lemme 4 : preuve

M 3"3

. " &

M 3"3

# , ( HG , 3 3 . .

# +

: & I

(41)

Thierry Lecroq – Université de Rouen - 41

Lemme 5

! N

* # K

G . '3 3$3"3 8 G 8 L'3"3&

! J ' G3"3

% 8 G 8 '%&

! D +

'3 3$3"3 '3"3

+ ' G3"3 % 8 G 8 '%& I

(42)

Corollaire 6

@ O

* # D3"3'D

K + &

! N #

. P

. +

# '3 3$%- '3 3$3"3'%(

(43)

Thierry Lecroq – Université de Rouen - 43

Corollaire 6 : preuve

@ " -

3"3 &

F : D 3"3'% L+ & I

(44)

Corollaire 6 : figure

" " " " " "

%

3"3'%

3"3'%

3"3'%

(45)

Thierry Lecroq – Université de Rouen - 45

Théorème 7

M Q

!

. H R D

- A '<*=A!?

J

&

(46)

Théorème 7 : preuve

# + -

. &

B

# D $ &

(47)

Thierry Lecroq – Université de Rouen - 47

Théorème 7 : preuve

" - #,&& ( &

3 3 8 D -

# 3 3$%

# ( # E % &

F - - 3 3$% 8 D $ &

(48)

Théorème 7 : preuve

3 3 HD - . "%" - #,&& (-

- / - 8 )- % " E 3"3&

@ O D3"3'D L+

E 3 3'D3"3$D E 3 3'D $D

: 3 3$% 8 D $3 3'D $D " 3 3$D 8 D $ &

(49)

Thierry Lecroq – Université de Rouen - 49

Améliorations

. .

. S T

#U %VQV( ! &

(50)

algo GALIL( , , , )

G 0

tantque -1 < faire

tantque -1 et [ ] = [ - +1+ ] faire SIGNALER-SI( < 0) -1

si < 0 alors

G '

+ ( ) sinon

G 0

+ max{ # ( , [ [ - +1+ ]]}

(51)

Thierry Lecroq – Université de Rouen - 51

Améliorations

# K ),,D( . S

T . + . .

+

J &

(52)

algo SMYTH( , , , )

G 0

tantque -1 < faire

tantque -1 et [ ] = [ - +1+ ] faire SIGNALER-SI( < 0) -1

si < 0 alors

G '

+ ( ) sinon

si [ ] > et [ ] > [ [ - +1+ ]] alors

G ' [ ]

sinon

G 0

(53)

Thierry Lecroq – Université de Rouen - 53

Améliorations

M;9A0' A #@@UW! 9 %VVJ(

F

C

' &

(54)

saut

'

'

'

(55)

Thierry Lecroq – Université de Rouen - 55

turbo décalage : si | | < | ' |

'

'

'

turbo-d calage

(56)

turbo décalage : si | | < | ' |

" # ' && (

' ' ' '

' '

" 3 3 '

+ '

+ 3 '3'3 3&

(57)

Thierry Lecroq – Université de Rouen - 57

algoTURBO-BM( , , , ) 0

-1 0

tantque < faire -1

tantque 0 et [ ] = [ - +1+ ] faire si i = m-dalors

- -1 // saut

sinon

SIGNALER-SI( < 0)-1 si < 0 alors

sinon -

- +1+

si ( [ ] alors [ ]

min{ - , - } sinon

max2 - ' '%4 + 0

(58)

Algorithme TURBO-BM

@ )

&

(59)

Thierry Lecroq – Université de Rouen - 59

Améliorations

)# '( " ⇔

# ( " #,&& (-

1 # ' && '%( " # '' $%&& '( # ' '%( / # '' (

" " # '' $%&& '(

(60)

'

)# '(

? # (

(61)

Thierry Lecroq – Université de Rouen - 61

J

%

# ( 8 )# '( # ( " $% )# ( " "

(62)

'

)# '(

# (

(63)

Thierry Lecroq – Université de Rouen - 63

J

)

# ( 1 )# '( # ( 8 )# ( " % * # (

" # # ((

(64)

'

)# '(

# (

(65)

Thierry Lecroq – Université de Rouen - 65

J

D

# ( H )# '( # ( 8 )# ( " % *)# '(

" # )# '((

(66)

'

)# '(

# (

(67)

Thierry Lecroq – Université de Rouen - 67

J

J

# ( " )# '(

(68)

'

)# '(

# (

(69)

Thierry Lecroq – Université de Rouen - 69

* * U

) #* X U %VYO(

D R ) #@ X! .%VVQ(

(70)

Références

Références

Documents relatifs

Comme l'instrument permet de tracer des parallèles à une droite donnée passant par des points donnés, on est donc en mesure de transférer le rapport (1 5 )/2 sur n'importe

[r]

Reconnaissance de lettres : Colle les lettres manquantes pour écrire le

Entoure en rouge les animaux qui se dirigent vers

[r]

Illustrer avec des images découpées, le texte de l'histoire utilisant un vocabulaire spatial Associer chaque image au texte correspondant à la direction surveillée. e place les

[r]

Il n’est pas d’objet plus profond, plus mystérieux, plus fécond, plus ténébreux, plus éblouissant qu’une fenêtre éclairée d’une chandelle. Ce qu’on peut voir au