Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Eléments d'algèbre linéaire
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : B arbres
Structures de données avancées : Principales structures de données
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Structures de données avancées : MTH ( Multidimensional trie hashing )
Chap. 4 Recherche en Table
D. E ZEGOUR Institut National d ’Informatique
DECONVOLUTION ET AUTRES

Sensibilisation à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
UMLV 1 Problème G = (S, A) graphe (orienté) Calculer H = (S, B) où B est la clôture réflexive et transitive de A. Note : (s,t) B ssi il existe un chemin.
Lecture et Ecriture.
Chapitre VI. Arbres (définition, parcours, représentation)
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Chapitre V. Tables de hachage

Algorithmes Branch & Bound
Bibliothèque standard du C++
Examen partiel #2 Mercredi le 15 novembre de 13h30 à 15h20
Bases de données lexicales
Alignement de séquences (suite)
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
LES ARBRES IUP 2 Génie Informatique
Récursivité Définition récursive d’un problème. Critère d’arrêt et convergence. Performance des algorithmes récursifs. Résolution d’un problème à l’aide.
Rappel... Caractérisation des matrices inversibles: Matrices bloc.
Structures de données IFT-2000
IFT Complexité et NP-complétude
Visualisation de surfaces décrites analytiquement
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.






Algorithmes d ’approximation
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,

326 UMLV Méthodes de classement destinées à de grandes masses de données Applicables à des fichiers séquentiels Complexité : évaluée surtout en nombre.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.
1 Organisations unidimentionnelles : indexage et hachage  Sélection basée sur une clé d'accès  recherche associative  Ex: Chercher le plant dont le.
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.

Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Optimisation de requêtes
Algorithmes Branch & Bound
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
B.Shishedjiev - Modèle relationnel
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Programmation dynamique

1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : LH* D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : MLH (Multidimensional linear hashing) D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Introduction D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Principales structures de données
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Transcription de la présentation:

mot = suite sur l’alphabet A UMLV ã Sous-mots mot = suite sur l’alphabet A sous-mot = sous-suite m é d i t e r r a n é e m e r u = u0u1…uk-1 sous-mot de x = x0x1…xm-1 si x = v0u0v1u1… vkuk-1vk avec v0, v1, …, vk  A* « sous-mot de » : relation d'ordre sur A* SC(x, y) = {u sous-mot de x et de y} Problème 1 : Calculer PLSC(x, y) = max { | u | / u Î SC(x, y) } Problème 2 Déterminer un mot u Î SC(x, y) tel que | u | = PLSC(x, y)

UMLV ã Distance Comparaison de mots par distance d(x, y) = | x | + | y | - 2.PLCS(x, y) d est une distance - d(x, y)  0 - d(x, y) = 0 ssi x = y - d(x, y) = d(y, x) - inégalité triangulaire ? u = un plcs de x et z v = un plcs de z et y k = nombre d'occurrences de lettres de z communes à u et v d(x, z) + d(z, y) = (|x| + |z| - 2.|u|) + (|z| + |y| - 2.|v|) = |x| + |y| + (|z| - |u|) + (|z| - |v|) - |u| - |v|  |x| + |y| + (|v| - k) + (|u| - k) - |u| - |v| = |x| + |y| - 2k  d(x, y) s o u s - s u i t e x s u b s e q u e n c e z u b u e s q u e y k = 3

diff UMLV ã Comparaison de fichiers lettre = ligne > cat A Belle Marquise, vos beaux yeux me font mourir d'amour > cat B D'amour mourir me font, > diff A B 0 a 1 > D'amour mourir me font, 3 d 3 < me font mourir d'amour Applications gestion de versions compression par stockage de différences restauration avec "ed" , "sed", . . .

Alignement UMLV ã A T A A G C T A A A A A C G Comparaisons de séquences moléculaires lettre = nucléotide A T A A G C T A A A A A C G Transformation de x en y par : insertions, suppressions, remplacements Chaque opération possède un coût Problème : calculer le coût minimal de la transformation (distance d’alignement) un alignement correspondant Distance d'édition

Par énumération de sous-mots temps exponentiel UMLV ã Calcul de PLSC Par énumération de sous-mots temps exponentiel Par "programmation dynamique" temps O(| x | x | y |) Par automate même temps

et u0u1…uk-2 plsc de x0x1…xm -2 et y0y1…yn -2 UMLV ã Propriété x = x0x1…xm-1 y = y0y1…yn-1 u = u0u1…uk-1 un plcs de x et y Proposition xm-1 = yn-1 Þ uk-1 = xm-1 = yn-1 et u0u1…uk-2 plsc de x0x1…xm -2 et y0y1…yn -2 xm-1 ¹ yn-1 et uk-1 ¹ xm-1 Þ u plsc de x0x1…xm -2 et y xm-1 ¹ yn-1 et uk-1 ¹ yn-1 Þ u plsc de x et y0y1…yn -2 a b a c a c b c a c a a

Algorithme UMLV ã entier PLSC(mot x, longueur m, mot y, longueur n){ si (m = 0 ou n = 0) alors retour 0 ; sinon si (x[m-1] = y[n-1]) alors retour PLSC(x,m-1,y,n-1)+1 sinon retour max{PLSC(x,m,y,n-1),PLSC(x,m-1,y,n)} } Stupidement exponentiel !

Programmation dynamique UMLV ã Programmation dynamique Problème décomposable en nombre fini de sous-problèmes mais chevauchement des sous-problèmes Méthode : mémoriser les résultats intermédiaires y0 y1 … yj yn-1 x0 x1 . xi xm-1

L( i, j ) = PLSC ( x0x1…xi , y0y1…yj ) UMLV ã Récurrence L( i, j ) = PLSC ( x0x1…xi , y0y1…yj ) L( i, j ) = 0 si i = -1 ou j = -1 L( i -1, j -1 ) + 1 sinon si xi = yj max(L( i, j -1), L( i -1, j )) sinon L( i -1, j -1 ) L( i -1, j ) L( i, j -1 ) L( i, j )

Exemple UMLV ã PLCS( a b c d b b , c b a c b a a b a ) = 4 -1 0 0 0 0 0 0 0 0 0 0 0 a 0 0 0 1 1 1 1 1 1 1 1 b 0 0 1 1 1 2 2 2 2 2 2 c 0 1 1 1 2 2 2 2 2 2 3 d 0 1 1 1 2 2 2 2 2 2 4 b 0 1 2 2 2 3 3 3 3 3 5 b 0 1 2 2 2 3 3 3 4 4 PLCS( a b c d b b , c b a c b a a b a ) = 4

Algorithme UMLV ã entier PLSC(mot x, longueur m, mot y, longueur n){ pour i  -1 à m-1 faire L[i,0]  0 ; pour j  -1 à n-1 faire L[0,j]  0 ; pour i  0 à m-1 faire pour j  0 à n-1 faire si x[i] = y[j] alors{ L[i,j]  L[i-1,j-1]+1 ; P[i,j]  '\' ; }sinon si L[i-1,j]  L[i,j-1] alors{ L[i,j]  L[i-1,j] ; P[i,j]  '' ; }sinon{ L[i,j]  L[i,j-1] ; P[i,j]  '' ; } retour L[m-1,n-1] ;

Exemple (suite) UMLV ã UMLV ã PLCS( abcdbb , cbacbaaba ) = 4 -1 0 0 0 0 0 0 0 0 0 0 0 a 0 0 0 1 1 1 1 1 1 1 1 b 0 0 1 1 1 2 2 2 2 2 2 c 0 1 1 1 2 2 2 2 2 2 3 d 0 1 1 1 2 2 2 2 2 2 4 b 0 1 2 2 2 3 3 3 3 3 5 b 0 1 2 2 2 3 3 3 4 4 PLCS( abcdbb , cbacbaaba ) = 4 acbb est un plcs P -1 0 1 2 3 4 5 6 7 8 c b a c b a a b a -1 0 0 0 0 0 0 0 0 0 0 0 a 0   \   \ \  \ 1 b 0  \   \   \  2 c 0 \   \      3 d 0          4 b 0  \   \   \  5 b 0  \   \   \ 

calcul de PLSC en temps < O(n2 / log n) Variantes UMLV ã Variantes Problème ouvert calcul de PLSC en temps < O(n2 / log n) Variantes - calcul de PLSC en espace linéaire [une ligne de L suffit] - calcul d’un plsc en espace linéaire [algorithme de Hirschberg] - utilisation des « dominants » - algorithme rapide en pratique bien que temps maximal = O(n2 log n) dans certaines implantations de diff [algorithme de Hunt et Szymanski]

Algorithme de Hunt & Szymanski UMLV ã Algorithme de Hunt & Szymanski Calcul de la matrice L par ligne c b a c b a a b a a -1 0 1 2 3 4 5 6 7 8 0 1 b -1 0 1 2 3 4 5 6 7 8 0 1 2 c -1 0 1 2 3 4 5 6 7 8 0 1 2

2 Comme un boulier 1 -1 3 4 5 6 7 8 UMLV ã c b a c b a a b a de ab à 1 -1 2 3 4 5 6 7 8 de ab à abc c b a c b a a b a

Algorithme UMLV ã x = x0x1…xm-1 y = y0y1…yn-1 Pos[ a ] = { j | yj = a } pour a  A Pour i fixé : J [ k ] = { j | PLSC(x0x1…xi, y0y1…yj) = k } entier PLSC(mot x, longueur m, mot y, longueur n){ J[-1]  {-1,0,1,…,n-1}; pour k  0 à n-1 faire J[k]   ; pour i  0 à m-1 faire pour chaque p  Pos[x[i]] en décroissant faire{ k  CLASSE(p); si k = CLASSE(p-1) alors{ (J[k],X)  PARTAGE(J[k],p); J[k+1]  UNION(X,J[k+1]); } retour CLASSE(n-1);

Type abstrait "PARTAGE/FUSION" UMLV ã Type abstrait "PARTAGE/FUSION" Ensemble de base suites (E0, E1, ... , En ) d'ensembles disjoints telles que E0 È E1 È ... È En = { 0, 1, ... , n } Opérations Initialisation CLASSE : élément ® ensemble CLASSE( p ) = k tel que p Î Ek PARTAGE : élément x ensemble ® ensemble x ensemble PARTAGE( E, p ) = ( S, T ) S = { q Î E | q < p }, T = { q Î E | q  p } UNION : ensemble x ensemble ® ensemble Implémentations possibles listes, arbres, ... Si les Ek sont des intervalles : B-arbres, 2-3-arbres, ...

Temps : si Pos listes pré-calculées sur y UMLV ã Temps de calcul de PLSC 2-3-arbres pour les Jk initialisation O ( n ) CLASSE( p ) O ( log n ) PARTAGE( J, p ) O ( log n ) UNION ( X, J ) O ( log n ) Temps : si Pos listes pré-calculées sur y O( log n . S (| Pos ( xi ) | i = 0, 1, …, n -1) = O( log n . card { ( i, j ) / xi = yj } | ) = O( n . m . log n ) En pratique, sur fichiers : O (n. log n ) Pré-calcul de Pos | y | = n ® O( n ) si fichiers de n lignes, par hachage O( n ) en moyenne

. . . Utilisation des 2-3 arbres Numéro de classe à la racine UMLV ã Utilisation des 2-3 arbres -1 0 1 2 3 4 5 6 7 8 . 1 2 -1 0 1 2 3 4 5 6 7 8 Numéro de classe à la racine Pointeurs sur feuilles CLASSE : par liens « père »  PARTAGE : en descendant, duplication, et restructuration UNION : rattachement au bon niveau, et restructuration 2 4 6 3 5 7 8 . . 3 5 7 8 4 6