• Aucun résultat trouvé

V - M´ethodes num´eriques, algorithmes vectoriels

N/A
N/A
Protected

Academic year: 2022

Partager "V - M´ethodes num´eriques, algorithmes vectoriels"

Copied!
12
0
0

Texte intégral

(1)

V - M´ethodes num´eriques, algorithmes vectoriels Bas´ees sur une repr´esentation en bits des ´etats de la recherche.

Dans ce cas, une approche naive est consid´er´ee, et rendue rapide grˆace `a la capacit´e des langages de programmation `a manipuler les mots machine (op´erations logiques et arithm´etiques simples) Algorithme vectoriel: Algorithme qui trouve un vecteur de sortie en appliquant un nb d’op´erations sur les vecteurs d’entr´ee,

ind´ependant de la longueur des vecteurs.

Mot machine: Vecteur binaire de 16, 32, 64 bits 0110001101001110

Op´erations unitaires sur les mots machine: x∨y,x∧y,¬x,x << a (d´eplacement ver la gauche),x >> a(d´eplacement vers la droite).

(2)

Recherche avec mismatchs - Algorithme Shift-Add:

(Baeza-Yates-Gonnet, 1992)

Recherche deP dansT avec au pluskmismatch.

Pour toute pos. j deT, vecteurEj de taillemtel queEj[i]

contient le nombre d’erreurs entreP[1..i] etT[j−i+ 1..j].

Occurrence de P finissant `a la positionj ssiEj[m]≤k.

Phase de pr´etraitement: Pour touta∈Σ, calculer le vecteurSa:

Pour touti, 1≤i≤m, Sa[i] =

0 sia=pi

1 sinon Alors,Ej+1[i] =Ej[i−1] + Stj+1[i]

(3)

a b

a b b a c a b b a b b a a

a b d a b b a b b

5 6

T:

E[5]: 2 4 2 0 1

a b a b b a b b a a

4 2 0 1 0 +1 1 0 0 1

5 3 0 1 1 E[6]:

a b a b b a b b a

a b

b a c a

0 0 1 1 1

S

a b d a b b a b b

5 6

T:

4 2 0 1 0

5 6

T:

0

a b d a b b a b b 4 2 0 1

b

P:

(4)

b: Nombre de bits n´ecessaires pour repr´esenter chaque ´etat individuel.

SiEj etSa cod´es chacun sur un mot machine:

Ej+1 = (Ej << b) + Stj+1

Valeurs possibles deEj[i]: 1,· · ·, m=⇒b=⌈log2(m+ 1)⌉

En fait, il suffit de repr´esenter les valeurs de 1 `ak+ 1

=⇒b=⌈log2(k+ 1)⌉+ 1

Un vecteur suppl´ementaireRj pour les “retenues” des additions est n´ecessaire.

(5)

SoitM le vecteur dem.bbits: 2b2b · · ·2b.

A chaque position` j dansT, les vecteursEj+1etRj+1sont calcul´es

`

a partir deEj etRj de la fa¸con suivante:

• Ej+1= (Ej << b) +Stj+1;

• I =Ej+1 ∧ M;

• Ej+1=Ej+1 ∧ ¬I;

• Rj+1= (Rj << b)∨ I

(6)

Exemple:

Σ ={a, b, c, d},P =abbacetk= 1.

Alorsb=⌈log2(2)⌉+ 1 = 2. TableS:

x a b c d

Sx 10110 11001 01111 11111

Etats successifs lors de la recherche de´ P dans le texte T =abdabbabbac:

T a b d a b b a b b a c

Ej 10110 10101 10101 11100 00001 11011 00000 11001 01011 00000 01111 Rj 22220 22200 22020 20220 22200 22000 20220 02200 22000 20220 02200

* *

(7)

Complexit´e:

|Σ|=c.

O(⌈mbω ⌉): temps n´ecessaire pour effectuer un nombre constant d’op´erations sur un ´etat de longueurmbrepr´esent´e sur un mot machine de longueurω.

• Calcul deS: tempsO ⌈mbω ⌉(m+c)

et espace O(⌈mbω ⌉c).

• Phase de recherche: temps dans le pire des cas et en moyenne enO(⌈mbω ⌉n)

Lorsquemb≤ω, complexit´e totale en temps enO(n+m+c)et complexit´e en espace enO(c)

Lorsque le nombre de mots machine utilis´e n’est pas trop grand, Shift-Add reste efficace en pratique.

(8)

Algorithme Shift-Or pour la recherche exacte:

Pour touti, 1≤i≤m, Ej[i] =

0 siP[1 :i] =T[j−i+ 1 :j]

1 sinon

Alors: Ej+1= (Ej << b) ∨ Stj+1

Sim≤w (32 ou 63), complexit´eO(n) en tempsetO(1) en espace.

(9)

Algorithme Shift-And pour la recherche avec erreurs:

Utilis´e dans le programmeagrepde UNIX.

Phase de pr´etraitement: Pour touta∈Σ, calculerCa: inverse (voir Hirschberg) du vecteur caract´eristique deadansP.

Exemple: SiP=abbac, alorsCa= 01001,Cb= 00110,Cc= 10000 et Cd= 00000.

Phase de recherche: Utilisek+ 1 vecteursEj0, E1j,· · ·Ekj:

Pour touti, Ejd[i] =

1 siP[1 :i] =T[j−i+ 1 :j] `aderreurs pr`es 0 sinon

Exemple:SiT=abcbcabbaetP=abbac, alorsE1

5= 00001 etE2

5= 10111

Initialisation: Pour toutd,Ed0= 0m−d1d

(10)

Pour queP[1..i] s’aligne avecT[j−i+ 2..j+ 1] `aderreurs pr`es, 4 cas possibles:

j−i+2

i 1 i−1

j+1

m j

T:

P:

• P[1..i−1] s’aligne avecT[j−i+ 2..j] avec au plusderreurs, et Pi=Tj+1−→Ej+1d =Ejd << 1 ∧ CTj+1

• P[1..i−1] s’aligne avecT[j−i+ 2..j] avec au plusd−1 erreurs (cas d’un match ou d’un mismatch)−→Ej+1d =Ejd−1 << 1

• Suppression dePi: P[1..i−1] s’aligne avecT[j−i+ 2..j+ 1]

avec au plusd−1 erreurs−→Ej+1d =Ej+1d1 << 1

• Insertion deTj+1: P[1..i] s’aligne avecT[j−i+ 2..j] avec au plusd−1 erreurs−→Ej+1d =Ejd−1

(11)

Et donc, pour toutd >0:

Ej+1d = Edj << 1

∧ Ctj+1

∨ Ed−j 1 << 1

∨ Ej+1d−1 << 1

∨ Ejd−1

= Edj << 1

∧ CTj+1

Ed−j 1 ∨ Ej+1d−1

<< 1

∨ Ejd−1

Pour d= 0:

Ej+10 = Ej0 << 1

∧ CTj+1

Complexit´e: La phase de recherche prend un temps enO(⌈mω⌉kn) Lorsquem≤ω, temps total de Shift-And enO(kn+m+c)et complexit´e en espace enO(c).

(12)

Exemple:

On rechercheannualdans le texteannealing`ak= 2 erreurs pr`es.

Au d´epart: E0= 000000,E1= 000001,E2= 000011.

E6 0 0 0 0 0 0 0 0 0 0 1 1 : 1

E6 1

E6 2: 1 0 0 1 1 1

P:

a n n u a l a n n u a n n u a a n n a a n T: a n n e a l i n g

6 7

:

P:

a n n u a n n u a a n n a a n

T: 6 7

1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0

a n n e a l i n g

n n u l a

a 0

0 0 0 0 0 Si E0

7=(000000 << 1) & 000000 = 000000 E1

7=((100011 << 1) & 000000) | (000000 << 1) | (000000 << 1)

| 000000 = 000001

E2

7=((100111 << 1) & 000000) | (100011 << 1) | (000001 << 1)

Références

Documents relatifs

Un circuit combinatoire est un arrangement de portes logiques interconnect´ ees qui impl´ ementent une relation entre une variable de n entr´ ees et une variable de m sorties Un

Si l’on souhaite qu’une variable x d’une fonction soit la même qu’une variable définie en dehors de celle-ci, il faut ajouter dans la définition de la fonction la ligne de

Nous avons pr´esent´e dans cette partie la construction des mod`eles de Markov permettant l’extraction des champs num´eriques dans un document sans reconnaissance chiffre

´ Ecrire une fonction qui teste si deux arbres sont ´ egaux ` a rotation pr` es (on pourra dans un premier temps le faire dans le cas o` u tout noeud interne a exactement 2

Sur l'écran, un point est l'équivalent d'un pixel localisé dans la fenêtre de visualisation par deux axes de coordonnées, x et y.. correspondant respectivement à la largeur

VRAI ou FAUX ? Les applications suivantes sont des formes lin´ eaires sur un espace vectoriel :.. 1. Montrer que φ est

puisqu’on sait faire des combinaisons lin´ eaires de matrices, on sait d´ efinir les relations lin´ eaires entre matrices... Syst` emes libres

Un formulaire manuscrit d’une feuille A4 recto-verso est autoris´ e. Les calculatrices scientifiques de base sont