Jérôme nous parlera de son nouveau framework open source qui permet d’effectuer des recherche plus ou moins permissive selon l’algorithme choisi dans des listes de données et ainsi de retourner à vos utilisateurs des résultats qui leur seront plus pertinents.
3. PermissiveResearch
Contexte :
• Application de GED (application de gestion de documents),
• Recherche dans PDF,
• Recherche dans des objets CoreData,
• Recherche dans les plist.
Pourquoi ce composant ?
4. PermissiveResearch
Les problèmes :
• Recherche dans un objet, il faut une ou plusieurs propriétés.
• Recherche dans des objets hétérogènes, il faut prévoir des
méthodes de recherche spécifiques par type d’objet.
• La recherche est exacte, mais ne pourrait - elle pas m’autoriser
quelques fautes ?
• Taille du clavier, sur iPhone j’ai parfois l’impression d’avoir des gros
doigts.
Pourquoi ce composant ?
8. PermissiveResearch
Un algorithme de Smith et Waterman (1981)
http://fr.wikipedia.org/wiki/Algorithme_de_Smith-Waterman
L'algorithme de Smith-Waterman est un algorithme optimal
qui donne un alignement correspondant au meilleur score
possible de correspondance entre les acides aminés ou les
nucléotides des deux séquences.
Le calcul de ce score repose sur l'utilisation de matrices de
similarité ou matrices de substitution.
9. PermissiveResearch
Un algorithme de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
Séquence 1 : FATCATY
Séquence 2 : CATFAST
Alignement 1
Séquence 1 : FATCA-TY
Séquence 2 : CATFAST
Alignement 2
Séquence 1 : FATCATY———
Séquence 2 : ———CATFAST
Alignement 3
Thréonine
Sérine
Tyrosine
Phénylalanine
Pour trouver le meilleur alignement, il faut trouver le
bien comprendre ce que l’on peut substituer.
12. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C
A
G
S
F
A
13. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A
G
S
F
A
Pour chaque cellule, on maximise le score
14. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G
S
F
A
Pour chaque cellule, on maximise le score
15. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G
S
F
A
Pour chaque cellule, on maximise le score
16. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G
S
F
A
Pour chaque cellule, on maximise le score
17. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G
S
F
A
Pour chaque cellule, on maximise le score
18. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G 0 0 2 2 12 16 10
S
F
A
19. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G 0 0 2 2 12 16 10
S 0 0 5 1 6 17 14
F
A
20. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G 0 0 2 2 12 16 10
S 0 0 5 1 6 17 14
F 6 0 0 3 0 11 20
A
21. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G 0 0 2 2 12 16 10
S 0 0 5 1 6 17 14
F 6 0 0 3 0 11 20
A 0 10 4 0 7 5 14
22. PermissiveResearch
Un algorithm de Smith et Waterman (1981)
Séquence 1 : FATCATY
Séquence 2 : CATFAST
F A T C A T Y
T 0 0 5 0 0 5 0
C 0 0 0 14 8 2 3
A 0 4 0 8 18 12 6
G 0 0 2 2 12 16 10
S 0 0 5 1 6 17 14
F 6 0 0 3 0 11 20
A 0 10 4 0 7 5 14
23. PermissiveResearch
Performance (iPhone 4)
Données NSPredicate Permissive Research
5272 villes 250ms 1s
52720 villes 2,5s 8s
PermissiveResearch Vs NSPredicate : l’algorithme de
PermissiveResearch à une plus grande complexité
algorithmique.
24. PermissiveResearch
Performance (iPhone 4)
Données NSPredicate Permissive Research
5272 villes 250ms 1s
52720 villes 2,5s 8s
Les 2 algorithmes ont une complexité temps
~linéaire : f(nombre de données)
25. PermissiveResearch
Optimisation : Commençons par une heuristique
Une heuristique est une méthode de calcul qui fournit
rapidement une solution réalisable, pas nécessairement
optimale ou exacte, pour un problème d'optimisation
difficile.
http://fr.wikipedia.org/wiki/Heuristique_(mathématiques)
30. PermissiveResearch
Optimisation : Heuristique
Données NSPredicate
Permissive Research
(heuristique)
5272 villes 250ms 30ms
52720 villes 2,5s 0,6s
C’est rapide … mais : c’est moins précis, la
complexité espace augmente (les segments)
et on ne tolère d’erreur.
31. PermissiveResearch
Les problèmes :
• Recherche dans un objet, il faut une ou plusieurs propriétés,
• Recherche dans des objets hétérogènes, il faut prévoir des
méthodes de recherche spécifiques par type d’objet,
• La recherche est exacte, mais ne pourrait - elle pas m’autoriser
quelques fautes ?
• Taille du clavier, sur iPhone j’ai parfois l’impression d’avoir des gros
doigts.
Pourquoi ce composant ?
32. PermissiveResearch
Optimisation : Heurexacte (Heuristique + Exacte)
Données
Heuristique rapide, on supprime 90% des données.
On garde les objets qui ont un maximum fragments communs.
Sous-ensemble de données
On analyse finement les objets restants
Sous-sous-ensemble de données
Retour des résultats
33. PermissiveResearch
Optimisation : Heuristique
Données NSPredicate
Permissive
Research
(heuristique)
Permissive
Research
(heurexact)
5272 villes 250ms 30ms 300ms
52720
villes
2,5s 0,6s 2,4s
On conserve la performance, on a une bonne
approximation, et on autorise des erreurs :)