SlideShare a Scribd company logo
1 of 55
La recherche approchée de motifs :
théorie et applications
République Algérienne Démocratique et Populaire
Ministère de L'Enseignement Supérieur et de la Recherche Scientifique
Université des Sciences et de la Technologie Houari Boumediene
Présentée pour l’obtention du diplôme de DOCTORAT
En : INFORMATIQUE
Par : Chegrane Ibrahim
Mme. Aicha Aissani-Mokhtari Prof USTHB/FEI Président
Mme. Nacéra Bensaou MCA USTHB/FEI Directrice de thèse
M. Thierry Lecroq Prof U. Rouen-Normandie Examinateur
M. Riadh BabaAli Prof USTHB/FEI Examinateur
M. Abdelmajid Boukra Prof USTHB/FEI Examinateur
M. Djamal Belazzougui M.R CERIST Invité
Soutenue publiquement, le 07 /12/ 2016 , devant le jury composé de :
1
Ibra_chegrane@hotmail.com , ibra.chegrane@gmail.com
Plan
Background : la recherche de motifs
• La recherche approchée avec hachage
• La recherche approchée avec Trie et Trie inversé
La recherche approchée
L’auto-complétion approchée
L’alignement multiple
2
La recherche de motifs
3
Exacte ibrahim
ibrahim
Approchée ibrahim
ibrahim
brahim
abraham
ibrahimovich
blahim
Hors-ligne : indexationEn-ligne
La recherche approchée de motifs
 𝑆𝑜𝑖𝑡 𝐷 𝑜𝑢 𝑇 = {𝑥1, 𝑥2, … 𝑥 𝑑} 𝑢𝑛 𝑒𝑛𝑠𝑒𝑚𝑏𝑙𝑒 𝑑𝑒 𝑑 𝑚𝑜𝑡𝑠
𝑑é𝑓𝑖𝑛𝑖𝑠 𝑠𝑢𝑟 𝑢𝑛 𝑎𝑙𝑝ℎ𝑎𝑏𝑒𝑡 𝚺,
 𝑆𝑜𝑖𝑡 𝒒 𝑢𝑛𝑒 𝑟𝑒𝑞𝑢ê𝑡𝑒 𝑑é𝑓𝑖𝑛𝑖𝑒 𝑎𝑢𝑠𝑠𝑖 𝑠𝑢𝑟 𝚺,
 𝑆𝑜𝑖𝑡 𝒌 𝑢𝑛 𝑒𝑛𝑡𝑖𝑒𝑟 𝑝𝑜𝑠𝑖𝑡𝑖𝑓.
𝑂𝑛 𝑣𝑒𝑢𝑡 𝑐𝑜𝑛𝑠𝑡𝑟𝑢𝑖𝑟𝑒 𝑢𝑛𝑒 𝑠𝑡𝑟𝑢𝑐𝑡𝑢𝑟𝑒 𝑑𝑒 𝑑𝑜𝑛𝑛é𝑒𝑠 𝑝𝑜𝑢𝑟 𝑫|𝑻
𝑐𝑎𝑝𝑎𝑏𝑙𝑒 𝑑𝑒 𝑟é𝑝𝑜𝑛𝑑𝑟𝑒 à 𝑙𝑎 𝑟𝑒𝑞𝑢ê𝑡𝑒 𝑠𝑢𝑖𝑣𝑎𝑛𝑡𝑒 ∶
𝑇𝑟𝑜𝑢𝑣𝑒𝑟 𝑡𝑜𝑢𝑠 𝑙𝑒𝑠 𝑚𝑜𝑡𝑠 𝑑𝑒 𝑫|𝑻
𝑑𝑖𝑠𝑡𝑎𝑛𝑡𝑠 𝑑′𝑎𝑢 𝑝𝑙𝑢𝑠 𝒌 𝑒𝑟𝑟𝑒𝑢𝑟𝑠 𝑑𝑒 𝒒.
4
Les fonctions de distance
D. Hamming
D. Levenshtein
D. Levenshtein-
Damerau
Ibrahim
Ibraham
Substitution
Ibrahim
Ibrahimo
Insertion
Ibrahim
brahim
Suppression
Ibrahim
birahim
Transposition
5
Applications
6
Problématique de la recherche approchée
1. Dans quelle position l'erreur se trouve ?
xbrahim, ixrahim, ibxahim, …., ibrahix,…..,pos insertion, …….
2. Quels sont les caractères qui mènent à des solutions possibles
dans une position donnée.
3. Les types des erreurs à considérer ? (sub, insert, sup)
4. K>= 2 , combinaison entre les positions et les types.
-xyrahim, xbyahim, xbryhim, xbrayim, ….
5. L’espace mémoire de SDD.
6. Combiner 1+2+3+4+5. 7
…. ibrxhim ……..
a
b
.
.
.
z
7 + 8 +7 = 22 Cas
K=2 erreurs
20+36+20+….= 228 Cas
Trouver des mots contenants des erreurs
Méthodes de la recherche approchée
Programmation
dynamique
Méthodes de
filtrage
Génération
de voisinage
Indexation
HachageBit-parallélisme
Parallélisme
Méthodes hybrides
8
Ma thèse
Travaux
existants
9
ThéoriePratique
Algorithmes
Validés en
pratique
Très
performants
Compétitifs
Bibliothèques
Développeurs
Chercheurs
La recherche approchée pour k >=2 en
utilisant les tables de hachage**
10
** Belazzougui, D. : Faster and space-optimal edit distance "1" dictionary. In : Combinatorial
Pattern Matching, 20th Annual Symposium, CPM 2009, Lille, France, June 22-24, 2009, Proceedings. (2009) 154 167.
1ère Contribution
La structure de données :
Le dictionnaire exact
L’index[i] stocke les
mots de longueur i+2
Si |mot|< 𝛽.
11
𝒉 𝒙 =
𝒊=𝟏
𝒎
𝒙𝒊 × 𝒕𝒊
𝒎𝒐𝒅 𝑷
L’espace mémoire : 𝑶 𝒏
Donc 𝑶 𝒏 𝐥𝐨𝐠 𝝈 𝒃𝒊𝒕𝒔
Temps de Constr: 𝑶 𝒏
L’ index[𝛽 -2], stocke les
mots >= 𝛽.
𝑃 = 232
− 5, 𝑡 ∈ [1, 𝑃 − 1]
𝐿𝐹 < 1 , 𝛽 = 16
La structure de données :
Dictionnaire des listes de substitution
• D={…,ABCDE,…, ABXDE,….}
– ℎ(𝜙𝐵𝐶𝐷𝐸) stocke 𝐴 .
– ℎ(𝐴𝜙𝐶𝐷𝐸) stocke 𝐵 .
– ℎ(𝐴𝐵𝜙𝐷𝐸) stocke 𝐶 ≡ ℎ(𝐴𝐵𝜙𝐷𝐸) stocke 𝑋
– ℎ(𝐴𝐵𝐶𝜙𝐸) stocke 𝐷 .
– ℎ(𝐴𝐵𝐶𝐷𝜙) stocke 𝐸 .
• C, X sont stockés dans la même position.
D E A C X B
12
L’espace mémoire : 𝑶 𝒏 𝐥𝐨𝐠 𝝈 𝒃𝒊𝒕𝒔
Temps de Constr : 𝑶 𝒏
La vérification des occurrences
• D={…,ABCDE,…, ABXDE,….}
• 𝑞 = 𝐴𝐵𝑦𝐷𝐸
• ℎ(𝐴𝐵𝜙𝐷𝐸)
• 𝐿 = {𝐶, 𝑋}
– ABCDE ℎ(𝐴𝐵𝐶𝐷𝐸)
– ABXDE ℎ(𝐴𝐵X𝐷𝐸)
D E A C X B
vérification
13
Temps de Vérification : 𝑶 𝒎 ×
𝒎 𝒍𝒐𝒈 𝝈
𝒘
Extension à deux erreurs ou plus
D E A C X B
. . . . . . . . . . . .
. . . . . . . . . . . .
𝑘 = 1 ≡ 𝑢1 𝜙 𝑢2
𝑘 = 2 ≡ 𝑢1 𝜙 𝑢2 𝜙 𝑢3
𝑘 = 𝑃 ≡ 𝑢1 𝜙 … 𝜙 𝑢 𝑝+1
.
.
.
Génération Vérification
14
Pour K=2 erreurs
L’espace mémoire : 𝐎 𝐍 𝐥𝐨𝐠 𝝈 𝒃𝒊𝒕𝒔
𝑵 =
𝒊=𝟏
𝒅
𝒏𝒊 𝒏𝒊 − 𝟏
𝟐
Temps de Constr: 𝑶 𝑵
Temps de Vérif : 𝑶 𝒎 𝟐
×
𝒎 𝒍𝒐𝒈 𝝈
𝒘
L'application de l’algorithme pour
l'indexation d’un texte
15
La recherche approchée de motifs
basée sur un
Trie et un Trie inversé (TRT_CI).
16
2ème Contribution
Trie
D={
….
ABCDE
ABDDE
XYADA
XYCDE
XYDAA
XYDDE
XYZDZ
….
}
Recherche exacte
Mot requête : XYDDE
Recherche approchée k=1
Mot requête : XYqDE
A
B
C
D
E
D
D
E
X
Y
C
D
E
D
A
A
D
E
A
D
A
Z
D
Z
Solutions :
1) XYDDE
2) XYCDE 17
L’espace mémoire : 𝜽 𝒏
Temps de Constr : 𝑶 𝒏
Temps Rech exact : 𝑶 𝒎
Temps Rech approchée : 𝑶 𝒌 × 𝒏
L’idée de base de cette approche TRT_CI
• Soit 𝑃 = 𝑃1 𝜙 𝑃2 mot requête
• Soit 𝑃′ = 𝑃1 𝑎 𝑃2 mot solution
𝑃1
𝑎
𝑒1
𝑒2
𝑃2
𝑐1 𝑎
𝑐2𝑎, 𝑒1, 𝑒2 ∩ 𝑐1, 𝑎, 𝑐2 = {𝑎}
𝑃1 𝑎 𝑃2
Trie Trie inversé
18
Temps de Vérif pire cas : 𝑶 𝝈𝒎 𝟐
T de Vérif cas moy : 𝑶(𝒎 𝟐
) si 𝒎 ≥
𝒍𝒐𝒈 𝒅
𝒍𝒐𝒈 𝝈
𝑶(𝒎 + 𝒎. 𝒐𝒄𝒄𝒓𝒔) si 𝒎 ≥
𝒍𝒐𝒈 𝒅
𝒍𝒐𝒈 𝝈
+
𝒍𝒐𝒈 𝒎
𝒍𝒐𝒈 𝝈
La Méthode TRT_CI avec exemple
D={
….
ABCDE
ABDDE
XYADA
XYCDE
XYDAA
XYDDE
XYZDZ
….
}
A
B
C
D
E
D
D
E
X
Y
C
D
E
D
A
A
D
E
A
D
A
Z
D
Z
Trie
𝐷={
….
EDCBA
EDDBC
ADAYX
EDCYX
AADYX
EDDYX
ZDZYX
….
}
A
A
D
Y
D
A
Y
E
D
B
A
D
B
C
Y
X
C
Y
X
Trie
inversé
X X
X
3) {A,C,D,Z} ∩ {CD} = {𝑪𝑫}
Mot requête : XYqDE
1) Chercher « XY » dans le Trie  {A,C,D,Z}
2) Chercher « ED » dans le Trie inversé {CD}
Solutions : XYCDE
XYDDE
4) Continuer la recherche
dans les branches {𝑪𝑫}
19
TRT_C pour k erreurs
– 𝑓𝑖𝑙𝑠(𝑃1) ∩ 𝑓𝑖𝑙𝑠(𝑃2) 𝑃1 𝑐𝑖 𝑃2
– 𝑓𝑖𝑙𝑠(𝑃1 𝑐𝑖 𝑃2) ∩ 𝑓𝑖𝑙𝑠(𝑃3) 𝑃1 𝑐𝑖 𝑃2 𝑐𝑗 𝑃3
𝑃′ = 𝑃1 𝑎 𝑃2 𝑏 𝑃3
GSTree inversé
𝑃2
𝑐1 𝑏 𝑐2
𝑃1
𝑎 𝑒1
𝑒2
𝑃3
GSTree
GSTree inverséGSTree
𝑃 = 𝑃1 𝜙 𝑃2 𝜙 𝑃3
20
L'application de TRT_CI pour
l'indexation de texte
• La recherche des occurrences des mots :
– Ajouter un champ dans chaque feuille du Trie qui
pointe vers une liste de toutes les positions des
mots dans le texte.
• La recherche des facteurs dans un texte :
– Utiliser un arbre des suffixes.
21
L’auto-complétion approchée
AppacoLib
Approximate auto-complete Library
22
3ème Contribution
Auto-complétion
23
Auto complétion approchée
Xaut
No Results
Xaut
Autocomplete
Autocomplete jquery
Automobile
Autour
Autolib
Autisme
Tolérer un certain
nombre d'erreurs dans
le préfixe tapé.
Erreur
24
Top-k auto complétion
Rapporter les k suggestions les plus hautement classées.
Aut
……
……
……
……
……
……
……
…….
…….
K éléments.
25
La structure de données
Root
B
A
C
D
C
A
D
B
C
B
C
D
D
E
5
0
5
0
4
0
5
0
5
0 8
1
0
1
1
1
3
ABCD #50
ADBC #40
AC #10
ABDE #8
BA #11
CD #131) Trie compact avec
un système de classement
2) La file de priorité
3) Tableau de hachage
26
La méthode de recherche
• Étape 1: Trouver les nœuds
– Nœud : une solution exacte
– Nœuds : des solutions approchées (avec une recherche naïve)
• Étape 2: la liste du top-k complétion.
Temps Rech approchée (Algo naïf) : 𝑶 𝒏 27
Réduire le nombre de branches
sortantes testées.
Choisir la bonne branche dans l'arbre.
28
Réduire le nombre de branches
sortantes testées.
ABxCDZZZ
H(AB?CD)%n =3
x y ………..
AByXY
0 1 2 3 4 5 .........
n
Mot requête = ABzCD
H(AB?CD)%n=3 , tab[3]=x
AB
x
CD
D={…
…}
Long des préfixes limitée (exemple: 5)
29Temps de Vérification , cas moyenne : 𝑶(𝒎 𝟐)
Méthode hybride :
Liste de substitutions + méthode naïve
30
Trie
Liste de substitutions
Naïve
Alignement multiple
d’ADN
DiaWay
4ème Contribution
31
Introduction
• Alignement : consiste à trouver des similitudes
entre deux ou plusieurs séquences et
déterminer leurs homologies possibles.
- G C T G A T A T A G C T
| | | | | | | | | |
G G G T G A T - T A G C T
32
- G C T G A T A T A G C T
| | | | | | | | | |
G G G T G A T - T A G C T
| | | | | |
- G C T - A T - - C G C -
| | | |
A G C G G A - A C A C C T
L’alignement multiple
33
L’approche DiaWay
Basé sur l’algorithme DiAlign**
** Morgenstren, B., Dress, A., Werner, T. : Multiple DNA and protein sequence alignment
based on segment-to-segment comparison. 93(October) (1996) 1209812103 34
DiaWay: l'extraction des diagonales
• La Matrice Dot plot:
• S1 : ATTCCGACT
• S2 : AATTCGCGT
M [i]
[M[i][j]= =
1: Si Match
0: Sinon
A T T C C G A C T
A 1 0 0 0 0 0 1 0 0
A 1 0 0 0 0 0 1 0 0
T 0 1 1 0 0 0 0 0 1
T 0 1 1 0 0 0 0 0 1
C 0 0 0 1 1 0 0 1 0
G 0 0 0 0 0 1 0 0 0
C 0 0 0 1 1 0 0 1 0
G 0 0 0 0 0 1 0 0 0
T 0 1 1 0 0 0 0 0 1
d1 : TT
AA
d2 : ATTCCG
ATTCGC
d3 : CCGA
GCGT
>Tri des diagonales
D={d2, d3, d1}
>>Indexation de D.
35
DiaWay: l'inconsistance
• Inconsistance simple:
S1:
s2:
• Inconsistance complexe:
S1:
S2:
S3:
chevauchement
NP-complet **
** Subramanian, A.R., Kaufmann, M., Morgenstern, B. : DIALIGN-TX : greedy and
progressive approaches for segment-based multiple sequence alignment. Algorithms
for molecular biology : AMB 3 (January 2008) 36
DiaWay: la résolution de l’inconsistance
1) Inconsistance
chemin
2) Inconsistance
Avec chemin
Trouvé dans (1)
3) Inconsistance
simple
37
DiaWay : l'étape finale de l'alignement
1) Mettre
les fragments
ensemble
2) insérer
les gaps (-).
Un ensemble consistant de diagonales D'= {}
Un ensemble trié D’’={d0, d1, d2, d4, d3, d6, d5}
38
Expérimentations
𝒆𝒕
Résultats pratiques
39
Les Dictionnaires
Mobydick 37 milles mots
Town 47 milles mots
Anglais 213 milles mots
WikiTitle 1,8 millions mots
40
R.A. avec Hachage
Dictionnaire WikiTitle (Wi) pour une erreurDictionnaire Anglais (En) pour une erreur
Dictionnaire WikiTitle (Wi) pour 2 erreursDictionnaire Anglais (En) pour 2 erreurs
Le temps d'insertion dans l'index
41
TRT_CI
42
TRT_CI
Aleksander Cislak et Szymon Grabowski
Avec la distance de Hamming.
TRT_CI : 3 fois plus rapide , et stable
Aleksander Cislak et Szymon
Grabowski
TRT_CI
Distance Hamming = 1 Type d’erreur Edit Distance = 3 Types d’erreurs
Temps 0< t <1 Temps : 0< t <1
Changement de temps / la taille de
Dic
Augmente Stable
43
La 2ème méthode
TRT_CI
La 1ère Méthode
RA hachage
TRT_CI
𝑇𝑅𝑇_𝐶𝐼 ≈ 167 𝑙𝑎 𝑟𝑒𝑐ℎ𝑒𝑟𝑐ℎ𝑒 𝑒𝑥𝑎𝑐𝑡𝑒
La recherche exacte est l’opération de référence qui
donne le temps d'exécution optimal.
44
Auto-complétion : Coté serveur, C/C++
Requête + top-k (en millisecondes) sur l'anglais (En) et sur les titres Wiki
(Wi).
Construction du Trie En : 177 ms , Wi : 980 ms.
45
Auto-complétion : Coté serveur, liste
de substitutions
Les listes de substitutions (SL) augmentent la taille de l’index de 0,7 Mo pour
Anglais (En), et de 5 Mo pour Wiki (Wi).
Temps de requête avec et sans l'utilisation des listes de
substitutions.
46
Auto-complétion : Coté serveur, La
méthode Hybride.
47
Auto-complétion : Coté Client,
JavaScript
Navigateur Chrome.
Construction du Trie
En : 2.7 seconds
Wi : 13 seconds.
Navigateur Internet Explorer.
Construction du Trie
En : 30 s.
Wi : 150 s.
48
Les diagonales
initiales
Le nombre des diagonales consistantes est inférieur à 1%
de l'ensemble des diagonales initiales.
DiaWay
49
Les diagonales
consistantes.
Tests avec 10 séquences biologiques
DiaWay
50
DiaWay
Tests avec 2 séquences biologiques de grande taille.
51
Conclusion
• Chegrane, I., Belazzougui, D.
Simple, compact and robust approximate string dictionary.
Journal of Discrete Algorithms 28(0) (2014) 49 60 StringMasters 2012 & 2013 Special Issue (Volume 1).
• Chegrane, I., Belazzougui, D., Raffinot, M.
Jquery ui like approximate autocomplete.
International Symposium on Web Algorithms. (2015).
• Chegrane, I, c., Athmane, s., Chahrazed, i., Aicha, b.
Diagonal consistency problem resolution in dialign algorithm.
Bioinformatics (2015) 225 231, Lisbon, Portugal.
• Athmane, S., Chegrane, I., Chahrazed, I.
DNA multiple alignment problem with the new diaway algorithm.
ISPS 2015 (2015).
• Beloucif, M , Chegrane, I .
State of the art about Approximate Pattern Matching.
META’12 Tunis 27-31.
• Chegrane, I. Hadj Ameur, M.S. , Bensaou, N.
Fast approximate string matching in dictionary using Trie and reverse Trie.
in progress.
52
1) Les publications
Conclusion
• https://github.com/chegrane/compact-approximate-string-
dictionary
– Langage C Nb ligne code : 5766
• https://github.com/chegrane/TrieRTrie
– Langage C Nb ligne code : 4444
• https://github.com/AppacoLib/api.appacoLib
– Langage C Nb ligne code : 7593
– JavaScript Nb ligne code : 3884
• https://github.com/chegrane/DiaWay_2.0
– C/C++ (Qt) Nb ligne code : 5453
53
2) Les librairies
Perspectives
1. Des solutions efficaces en pratique pour 𝑘 ≥ 2.
2. Utiliser les caractéristiques de chaque langue
afin de proposer des solutions spécifiques.
3. Utiliser le parallélisme.
4. Utiliser les techniques de intelligence artificiel.
54
Thesis defense
55
Jury
Questions
IbraMa thèse
Les erreurs

More Related Content

What's hot

Approximate Bayesian Computation (ABC)
Approximate Bayesian Computation (ABC)Approximate Bayesian Computation (ABC)
Approximate Bayesian Computation (ABC)Robin Ryder
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximationWael Ismail
 
Dérivation et Intégration numériques
Dérivation et Intégration numériquesDérivation et Intégration numériques
Dérivation et Intégration numériquesJaouad Dabounou
 
Théorie de l'information
Théorie de l'informationThéorie de l'information
Théorie de l'informationRichardTerrat1
 

What's hot (7)

Approximate Bayesian Computation (ABC)
Approximate Bayesian Computation (ABC)Approximate Bayesian Computation (ABC)
Approximate Bayesian Computation (ABC)
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximation
 
Em
EmEm
Em
 
Dérivation et Intégration numériques
Dérivation et Intégration numériquesDérivation et Intégration numériques
Dérivation et Intégration numériques
 
Ch18 25
Ch18 25Ch18 25
Ch18 25
 
Théorie de l'information
Théorie de l'informationThéorie de l'information
Théorie de l'information
 
Exercice intégrales
Exercice intégralesExercice intégrales
Exercice intégrales
 

Similar to La recherche approchée de motifs : théorie et applications

La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmiqueHajer Trabelsi
 
Modèles numériques coûteux : de la quantification des incertitudes la planifi...
Modèles numériques coûteux : de la quantification des incertitudes la planifi...Modèles numériques coûteux : de la quantification des incertitudes la planifi...
Modèles numériques coûteux : de la quantification des incertitudes la planifi...Julien Bect
 
toaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdf
toaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdftoaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdf
toaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdfPenielLoyi
 
La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)Aline Figoureux
 
Fonctions trigonometriques h12
Fonctions trigonometriques h12Fonctions trigonometriques h12
Fonctions trigonometriques h12Mehdi Charifi
 
Planification et analyse d'expériences numériques: approche bayésienne
Planification et analyse d'expériences numériques: approche bayésiennePlanification et analyse d'expériences numériques: approche bayésienne
Planification et analyse d'expériences numériques: approche bayésienneJulien Bect
 
Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfrezgui10
 
Les vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptxLes vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptxrezgui10
 
EUSIPCO_2017__10349172xthsfvtvhmwx_.pdf
EUSIPCO_2017__10349172xthsfvtvhmwx_.pdfEUSIPCO_2017__10349172xthsfvtvhmwx_.pdf
EUSIPCO_2017__10349172xthsfvtvhmwx_.pdfAmine Hadj-Youcef
 
Algebre_lineaire_GEOLOGIE-S1.pdf
Algebre_lineaire_GEOLOGIE-S1.pdfAlgebre_lineaire_GEOLOGIE-S1.pdf
Algebre_lineaire_GEOLOGIE-S1.pdfThierrySam1
 
Chapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisChapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisMohamed Lahby
 
Intro_DeepLearning.pdf
Intro_DeepLearning.pdfIntro_DeepLearning.pdf
Intro_DeepLearning.pdfAmou5
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
optimisation cours.pdf
optimisation cours.pdfoptimisation cours.pdf
optimisation cours.pdfMouloudi1
 

Similar to La recherche approchée de motifs : théorie et applications (20)

Cours cluster si2e
Cours cluster si2eCours cluster si2e
Cours cluster si2e
 
La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmique
 
Algorithme knn
Algorithme knnAlgorithme knn
Algorithme knn
 
Modèles numériques coûteux : de la quantification des incertitudes la planifi...
Modèles numériques coûteux : de la quantification des incertitudes la planifi...Modèles numériques coûteux : de la quantification des incertitudes la planifi...
Modèles numériques coûteux : de la quantification des incertitudes la planifi...
 
toaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdf
toaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdftoaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdf
toaz.info-clustering-1-pr_7c021feec2e58f2cfdcdf6fe5c0cfc03.pdf
 
La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)
 
Fonctions trigonometriques h12
Fonctions trigonometriques h12Fonctions trigonometriques h12
Fonctions trigonometriques h12
 
La mesure logicielle
La mesure logicielleLa mesure logicielle
La mesure logicielle
 
Planification et analyse d'expériences numériques: approche bayésienne
Planification et analyse d'expériences numériques: approche bayésiennePlanification et analyse d'expériences numériques: approche bayésienne
Planification et analyse d'expériences numériques: approche bayésienne
 
Slide matlab
Slide matlab Slide matlab
Slide matlab
 
Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdf
 
algo-imsi-2.pdf
algo-imsi-2.pdfalgo-imsi-2.pdf
algo-imsi-2.pdf
 
Les vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptxLes vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptx
 
EUSIPCO_2017__10349172xthsfvtvhmwx_.pdf
EUSIPCO_2017__10349172xthsfvtvhmwx_.pdfEUSIPCO_2017__10349172xthsfvtvhmwx_.pdf
EUSIPCO_2017__10349172xthsfvtvhmwx_.pdf
 
Algebre_lineaire_GEOLOGIE-S1.pdf
Algebre_lineaire_GEOLOGIE-S1.pdfAlgebre_lineaire_GEOLOGIE-S1.pdf
Algebre_lineaire_GEOLOGIE-S1.pdf
 
Chapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisChapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de tris
 
Lmo05.ppt
Lmo05.pptLmo05.ppt
Lmo05.ppt
 
Intro_DeepLearning.pdf
Intro_DeepLearning.pdfIntro_DeepLearning.pdf
Intro_DeepLearning.pdf
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
optimisation cours.pdf
optimisation cours.pdfoptimisation cours.pdf
optimisation cours.pdf
 

La recherche approchée de motifs : théorie et applications

  • 1. La recherche approchée de motifs : théorie et applications République Algérienne Démocratique et Populaire Ministère de L'Enseignement Supérieur et de la Recherche Scientifique Université des Sciences et de la Technologie Houari Boumediene Présentée pour l’obtention du diplôme de DOCTORAT En : INFORMATIQUE Par : Chegrane Ibrahim Mme. Aicha Aissani-Mokhtari Prof USTHB/FEI Président Mme. Nacéra Bensaou MCA USTHB/FEI Directrice de thèse M. Thierry Lecroq Prof U. Rouen-Normandie Examinateur M. Riadh BabaAli Prof USTHB/FEI Examinateur M. Abdelmajid Boukra Prof USTHB/FEI Examinateur M. Djamal Belazzougui M.R CERIST Invité Soutenue publiquement, le 07 /12/ 2016 , devant le jury composé de : 1 Ibra_chegrane@hotmail.com , ibra.chegrane@gmail.com
  • 2. Plan Background : la recherche de motifs • La recherche approchée avec hachage • La recherche approchée avec Trie et Trie inversé La recherche approchée L’auto-complétion approchée L’alignement multiple 2
  • 3. La recherche de motifs 3 Exacte ibrahim ibrahim Approchée ibrahim ibrahim brahim abraham ibrahimovich blahim Hors-ligne : indexationEn-ligne
  • 4. La recherche approchée de motifs  𝑆𝑜𝑖𝑡 𝐷 𝑜𝑢 𝑇 = {𝑥1, 𝑥2, … 𝑥 𝑑} 𝑢𝑛 𝑒𝑛𝑠𝑒𝑚𝑏𝑙𝑒 𝑑𝑒 𝑑 𝑚𝑜𝑡𝑠 𝑑é𝑓𝑖𝑛𝑖𝑠 𝑠𝑢𝑟 𝑢𝑛 𝑎𝑙𝑝ℎ𝑎𝑏𝑒𝑡 𝚺,  𝑆𝑜𝑖𝑡 𝒒 𝑢𝑛𝑒 𝑟𝑒𝑞𝑢ê𝑡𝑒 𝑑é𝑓𝑖𝑛𝑖𝑒 𝑎𝑢𝑠𝑠𝑖 𝑠𝑢𝑟 𝚺,  𝑆𝑜𝑖𝑡 𝒌 𝑢𝑛 𝑒𝑛𝑡𝑖𝑒𝑟 𝑝𝑜𝑠𝑖𝑡𝑖𝑓. 𝑂𝑛 𝑣𝑒𝑢𝑡 𝑐𝑜𝑛𝑠𝑡𝑟𝑢𝑖𝑟𝑒 𝑢𝑛𝑒 𝑠𝑡𝑟𝑢𝑐𝑡𝑢𝑟𝑒 𝑑𝑒 𝑑𝑜𝑛𝑛é𝑒𝑠 𝑝𝑜𝑢𝑟 𝑫|𝑻 𝑐𝑎𝑝𝑎𝑏𝑙𝑒 𝑑𝑒 𝑟é𝑝𝑜𝑛𝑑𝑟𝑒 à 𝑙𝑎 𝑟𝑒𝑞𝑢ê𝑡𝑒 𝑠𝑢𝑖𝑣𝑎𝑛𝑡𝑒 ∶ 𝑇𝑟𝑜𝑢𝑣𝑒𝑟 𝑡𝑜𝑢𝑠 𝑙𝑒𝑠 𝑚𝑜𝑡𝑠 𝑑𝑒 𝑫|𝑻 𝑑𝑖𝑠𝑡𝑎𝑛𝑡𝑠 𝑑′𝑎𝑢 𝑝𝑙𝑢𝑠 𝒌 𝑒𝑟𝑟𝑒𝑢𝑟𝑠 𝑑𝑒 𝒒. 4
  • 5. Les fonctions de distance D. Hamming D. Levenshtein D. Levenshtein- Damerau Ibrahim Ibraham Substitution Ibrahim Ibrahimo Insertion Ibrahim brahim Suppression Ibrahim birahim Transposition 5
  • 7. Problématique de la recherche approchée 1. Dans quelle position l'erreur se trouve ? xbrahim, ixrahim, ibxahim, …., ibrahix,…..,pos insertion, ……. 2. Quels sont les caractères qui mènent à des solutions possibles dans une position donnée. 3. Les types des erreurs à considérer ? (sub, insert, sup) 4. K>= 2 , combinaison entre les positions et les types. -xyrahim, xbyahim, xbryhim, xbrayim, …. 5. L’espace mémoire de SDD. 6. Combiner 1+2+3+4+5. 7 …. ibrxhim …….. a b . . . z 7 + 8 +7 = 22 Cas K=2 erreurs 20+36+20+….= 228 Cas Trouver des mots contenants des erreurs
  • 8. Méthodes de la recherche approchée Programmation dynamique Méthodes de filtrage Génération de voisinage Indexation HachageBit-parallélisme Parallélisme Méthodes hybrides 8
  • 10. La recherche approchée pour k >=2 en utilisant les tables de hachage** 10 ** Belazzougui, D. : Faster and space-optimal edit distance "1" dictionary. In : Combinatorial Pattern Matching, 20th Annual Symposium, CPM 2009, Lille, France, June 22-24, 2009, Proceedings. (2009) 154 167. 1ère Contribution
  • 11. La structure de données : Le dictionnaire exact L’index[i] stocke les mots de longueur i+2 Si |mot|< 𝛽. 11 𝒉 𝒙 = 𝒊=𝟏 𝒎 𝒙𝒊 × 𝒕𝒊 𝒎𝒐𝒅 𝑷 L’espace mémoire : 𝑶 𝒏 Donc 𝑶 𝒏 𝐥𝐨𝐠 𝝈 𝒃𝒊𝒕𝒔 Temps de Constr: 𝑶 𝒏 L’ index[𝛽 -2], stocke les mots >= 𝛽. 𝑃 = 232 − 5, 𝑡 ∈ [1, 𝑃 − 1] 𝐿𝐹 < 1 , 𝛽 = 16
  • 12. La structure de données : Dictionnaire des listes de substitution • D={…,ABCDE,…, ABXDE,….} – ℎ(𝜙𝐵𝐶𝐷𝐸) stocke 𝐴 . – ℎ(𝐴𝜙𝐶𝐷𝐸) stocke 𝐵 . – ℎ(𝐴𝐵𝜙𝐷𝐸) stocke 𝐶 ≡ ℎ(𝐴𝐵𝜙𝐷𝐸) stocke 𝑋 – ℎ(𝐴𝐵𝐶𝜙𝐸) stocke 𝐷 . – ℎ(𝐴𝐵𝐶𝐷𝜙) stocke 𝐸 . • C, X sont stockés dans la même position. D E A C X B 12 L’espace mémoire : 𝑶 𝒏 𝐥𝐨𝐠 𝝈 𝒃𝒊𝒕𝒔 Temps de Constr : 𝑶 𝒏
  • 13. La vérification des occurrences • D={…,ABCDE,…, ABXDE,….} • 𝑞 = 𝐴𝐵𝑦𝐷𝐸 • ℎ(𝐴𝐵𝜙𝐷𝐸) • 𝐿 = {𝐶, 𝑋} – ABCDE ℎ(𝐴𝐵𝐶𝐷𝐸) – ABXDE ℎ(𝐴𝐵X𝐷𝐸) D E A C X B vérification 13 Temps de Vérification : 𝑶 𝒎 × 𝒎 𝒍𝒐𝒈 𝝈 𝒘
  • 14. Extension à deux erreurs ou plus D E A C X B . . . . . . . . . . . . . . . . . . . . . . . . 𝑘 = 1 ≡ 𝑢1 𝜙 𝑢2 𝑘 = 2 ≡ 𝑢1 𝜙 𝑢2 𝜙 𝑢3 𝑘 = 𝑃 ≡ 𝑢1 𝜙 … 𝜙 𝑢 𝑝+1 . . . Génération Vérification 14 Pour K=2 erreurs L’espace mémoire : 𝐎 𝐍 𝐥𝐨𝐠 𝝈 𝒃𝒊𝒕𝒔 𝑵 = 𝒊=𝟏 𝒅 𝒏𝒊 𝒏𝒊 − 𝟏 𝟐 Temps de Constr: 𝑶 𝑵 Temps de Vérif : 𝑶 𝒎 𝟐 × 𝒎 𝒍𝒐𝒈 𝝈 𝒘
  • 15. L'application de l’algorithme pour l'indexation d’un texte 15
  • 16. La recherche approchée de motifs basée sur un Trie et un Trie inversé (TRT_CI). 16 2ème Contribution
  • 17. Trie D={ …. ABCDE ABDDE XYADA XYCDE XYDAA XYDDE XYZDZ …. } Recherche exacte Mot requête : XYDDE Recherche approchée k=1 Mot requête : XYqDE A B C D E D D E X Y C D E D A A D E A D A Z D Z Solutions : 1) XYDDE 2) XYCDE 17 L’espace mémoire : 𝜽 𝒏 Temps de Constr : 𝑶 𝒏 Temps Rech exact : 𝑶 𝒎 Temps Rech approchée : 𝑶 𝒌 × 𝒏
  • 18. L’idée de base de cette approche TRT_CI • Soit 𝑃 = 𝑃1 𝜙 𝑃2 mot requête • Soit 𝑃′ = 𝑃1 𝑎 𝑃2 mot solution 𝑃1 𝑎 𝑒1 𝑒2 𝑃2 𝑐1 𝑎 𝑐2𝑎, 𝑒1, 𝑒2 ∩ 𝑐1, 𝑎, 𝑐2 = {𝑎} 𝑃1 𝑎 𝑃2 Trie Trie inversé 18 Temps de Vérif pire cas : 𝑶 𝝈𝒎 𝟐 T de Vérif cas moy : 𝑶(𝒎 𝟐 ) si 𝒎 ≥ 𝒍𝒐𝒈 𝒅 𝒍𝒐𝒈 𝝈 𝑶(𝒎 + 𝒎. 𝒐𝒄𝒄𝒓𝒔) si 𝒎 ≥ 𝒍𝒐𝒈 𝒅 𝒍𝒐𝒈 𝝈 + 𝒍𝒐𝒈 𝒎 𝒍𝒐𝒈 𝝈
  • 19. La Méthode TRT_CI avec exemple D={ …. ABCDE ABDDE XYADA XYCDE XYDAA XYDDE XYZDZ …. } A B C D E D D E X Y C D E D A A D E A D A Z D Z Trie 𝐷={ …. EDCBA EDDBC ADAYX EDCYX AADYX EDDYX ZDZYX …. } A A D Y D A Y E D B A D B C Y X C Y X Trie inversé X X X 3) {A,C,D,Z} ∩ {CD} = {𝑪𝑫} Mot requête : XYqDE 1) Chercher « XY » dans le Trie  {A,C,D,Z} 2) Chercher « ED » dans le Trie inversé {CD} Solutions : XYCDE XYDDE 4) Continuer la recherche dans les branches {𝑪𝑫} 19
  • 20. TRT_C pour k erreurs – 𝑓𝑖𝑙𝑠(𝑃1) ∩ 𝑓𝑖𝑙𝑠(𝑃2) 𝑃1 𝑐𝑖 𝑃2 – 𝑓𝑖𝑙𝑠(𝑃1 𝑐𝑖 𝑃2) ∩ 𝑓𝑖𝑙𝑠(𝑃3) 𝑃1 𝑐𝑖 𝑃2 𝑐𝑗 𝑃3 𝑃′ = 𝑃1 𝑎 𝑃2 𝑏 𝑃3 GSTree inversé 𝑃2 𝑐1 𝑏 𝑐2 𝑃1 𝑎 𝑒1 𝑒2 𝑃3 GSTree GSTree inverséGSTree 𝑃 = 𝑃1 𝜙 𝑃2 𝜙 𝑃3 20
  • 21. L'application de TRT_CI pour l'indexation de texte • La recherche des occurrences des mots : – Ajouter un champ dans chaque feuille du Trie qui pointe vers une liste de toutes les positions des mots dans le texte. • La recherche des facteurs dans un texte : – Utiliser un arbre des suffixes. 21
  • 24. Auto complétion approchée Xaut No Results Xaut Autocomplete Autocomplete jquery Automobile Autour Autolib Autisme Tolérer un certain nombre d'erreurs dans le préfixe tapé. Erreur 24
  • 25. Top-k auto complétion Rapporter les k suggestions les plus hautement classées. Aut …… …… …… …… …… …… …… ……. ……. K éléments. 25
  • 26. La structure de données Root B A C D C A D B C B C D D E 5 0 5 0 4 0 5 0 5 0 8 1 0 1 1 1 3 ABCD #50 ADBC #40 AC #10 ABDE #8 BA #11 CD #131) Trie compact avec un système de classement 2) La file de priorité 3) Tableau de hachage 26
  • 27. La méthode de recherche • Étape 1: Trouver les nœuds – Nœud : une solution exacte – Nœuds : des solutions approchées (avec une recherche naïve) • Étape 2: la liste du top-k complétion. Temps Rech approchée (Algo naïf) : 𝑶 𝒏 27
  • 28. Réduire le nombre de branches sortantes testées. Choisir la bonne branche dans l'arbre. 28
  • 29. Réduire le nombre de branches sortantes testées. ABxCDZZZ H(AB?CD)%n =3 x y ……….. AByXY 0 1 2 3 4 5 ......... n Mot requête = ABzCD H(AB?CD)%n=3 , tab[3]=x AB x CD D={… …} Long des préfixes limitée (exemple: 5) 29Temps de Vérification , cas moyenne : 𝑶(𝒎 𝟐)
  • 30. Méthode hybride : Liste de substitutions + méthode naïve 30 Trie Liste de substitutions Naïve
  • 32. Introduction • Alignement : consiste à trouver des similitudes entre deux ou plusieurs séquences et déterminer leurs homologies possibles. - G C T G A T A T A G C T | | | | | | | | | | G G G T G A T - T A G C T 32
  • 33. - G C T G A T A T A G C T | | | | | | | | | | G G G T G A T - T A G C T | | | | | | - G C T - A T - - C G C - | | | | A G C G G A - A C A C C T L’alignement multiple 33
  • 34. L’approche DiaWay Basé sur l’algorithme DiAlign** ** Morgenstren, B., Dress, A., Werner, T. : Multiple DNA and protein sequence alignment based on segment-to-segment comparison. 93(October) (1996) 1209812103 34
  • 35. DiaWay: l'extraction des diagonales • La Matrice Dot plot: • S1 : ATTCCGACT • S2 : AATTCGCGT M [i] [M[i][j]= = 1: Si Match 0: Sinon A T T C C G A C T A 1 0 0 0 0 0 1 0 0 A 1 0 0 0 0 0 1 0 0 T 0 1 1 0 0 0 0 0 1 T 0 1 1 0 0 0 0 0 1 C 0 0 0 1 1 0 0 1 0 G 0 0 0 0 0 1 0 0 0 C 0 0 0 1 1 0 0 1 0 G 0 0 0 0 0 1 0 0 0 T 0 1 1 0 0 0 0 0 1 d1 : TT AA d2 : ATTCCG ATTCGC d3 : CCGA GCGT >Tri des diagonales D={d2, d3, d1} >>Indexation de D. 35
  • 36. DiaWay: l'inconsistance • Inconsistance simple: S1: s2: • Inconsistance complexe: S1: S2: S3: chevauchement NP-complet ** ** Subramanian, A.R., Kaufmann, M., Morgenstern, B. : DIALIGN-TX : greedy and progressive approaches for segment-based multiple sequence alignment. Algorithms for molecular biology : AMB 3 (January 2008) 36
  • 37. DiaWay: la résolution de l’inconsistance 1) Inconsistance chemin 2) Inconsistance Avec chemin Trouvé dans (1) 3) Inconsistance simple 37
  • 38. DiaWay : l'étape finale de l'alignement 1) Mettre les fragments ensemble 2) insérer les gaps (-). Un ensemble consistant de diagonales D'= {} Un ensemble trié D’’={d0, d1, d2, d4, d3, d6, d5} 38
  • 40. Les Dictionnaires Mobydick 37 milles mots Town 47 milles mots Anglais 213 milles mots WikiTitle 1,8 millions mots 40
  • 41. R.A. avec Hachage Dictionnaire WikiTitle (Wi) pour une erreurDictionnaire Anglais (En) pour une erreur Dictionnaire WikiTitle (Wi) pour 2 erreursDictionnaire Anglais (En) pour 2 erreurs Le temps d'insertion dans l'index 41
  • 43. TRT_CI Aleksander Cislak et Szymon Grabowski Avec la distance de Hamming. TRT_CI : 3 fois plus rapide , et stable Aleksander Cislak et Szymon Grabowski TRT_CI Distance Hamming = 1 Type d’erreur Edit Distance = 3 Types d’erreurs Temps 0< t <1 Temps : 0< t <1 Changement de temps / la taille de Dic Augmente Stable 43 La 2ème méthode TRT_CI La 1ère Méthode RA hachage
  • 44. TRT_CI 𝑇𝑅𝑇_𝐶𝐼 ≈ 167 𝑙𝑎 𝑟𝑒𝑐ℎ𝑒𝑟𝑐ℎ𝑒 𝑒𝑥𝑎𝑐𝑡𝑒 La recherche exacte est l’opération de référence qui donne le temps d'exécution optimal. 44
  • 45. Auto-complétion : Coté serveur, C/C++ Requête + top-k (en millisecondes) sur l'anglais (En) et sur les titres Wiki (Wi). Construction du Trie En : 177 ms , Wi : 980 ms. 45
  • 46. Auto-complétion : Coté serveur, liste de substitutions Les listes de substitutions (SL) augmentent la taille de l’index de 0,7 Mo pour Anglais (En), et de 5 Mo pour Wiki (Wi). Temps de requête avec et sans l'utilisation des listes de substitutions. 46
  • 47. Auto-complétion : Coté serveur, La méthode Hybride. 47
  • 48. Auto-complétion : Coté Client, JavaScript Navigateur Chrome. Construction du Trie En : 2.7 seconds Wi : 13 seconds. Navigateur Internet Explorer. Construction du Trie En : 30 s. Wi : 150 s. 48
  • 49. Les diagonales initiales Le nombre des diagonales consistantes est inférieur à 1% de l'ensemble des diagonales initiales. DiaWay 49 Les diagonales consistantes.
  • 50. Tests avec 10 séquences biologiques DiaWay 50
  • 51. DiaWay Tests avec 2 séquences biologiques de grande taille. 51
  • 52. Conclusion • Chegrane, I., Belazzougui, D. Simple, compact and robust approximate string dictionary. Journal of Discrete Algorithms 28(0) (2014) 49 60 StringMasters 2012 & 2013 Special Issue (Volume 1). • Chegrane, I., Belazzougui, D., Raffinot, M. Jquery ui like approximate autocomplete. International Symposium on Web Algorithms. (2015). • Chegrane, I, c., Athmane, s., Chahrazed, i., Aicha, b. Diagonal consistency problem resolution in dialign algorithm. Bioinformatics (2015) 225 231, Lisbon, Portugal. • Athmane, S., Chegrane, I., Chahrazed, I. DNA multiple alignment problem with the new diaway algorithm. ISPS 2015 (2015). • Beloucif, M , Chegrane, I . State of the art about Approximate Pattern Matching. META’12 Tunis 27-31. • Chegrane, I. Hadj Ameur, M.S. , Bensaou, N. Fast approximate string matching in dictionary using Trie and reverse Trie. in progress. 52 1) Les publications
  • 53. Conclusion • https://github.com/chegrane/compact-approximate-string- dictionary – Langage C Nb ligne code : 5766 • https://github.com/chegrane/TrieRTrie – Langage C Nb ligne code : 4444 • https://github.com/AppacoLib/api.appacoLib – Langage C Nb ligne code : 7593 – JavaScript Nb ligne code : 3884 • https://github.com/chegrane/DiaWay_2.0 – C/C++ (Qt) Nb ligne code : 5453 53 2) Les librairies
  • 54. Perspectives 1. Des solutions efficaces en pratique pour 𝑘 ≥ 2. 2. Utiliser les caractéristiques de chaque langue afin de proposer des solutions spécifiques. 3. Utiliser le parallélisme. 4. Utiliser les techniques de intelligence artificiel. 54