Cours 8: Quelques algorithmes en bioinformatique Alignement de 2 séquences, programmation dynamique Alignement de k séquences, NP-complétude Alignement de k séquences, algorithme approché Construction d arbres d évolution 1-1
Distance d édition et alignement de séquences Données: Deux mots u, v sur un alphabet A (par ex. {A, C, G, T }) et une fonction de dissimilarité des lettres δ : (A { }) 2 R +. Problème: trouver l alignement (U, V ) qui minimise P i δ(u i, V i ). u = GAT GCAT v = T AGCAT δ A T C G A 0 1 3 3 5 T 1 0 3 3 5 C 3 3 0 1 5 G 3 3 1 0 5 5 5 5 5 0 U G A T G C A T V T A C G A T δ(u, V ) = 5 + 1 + 1 + 5 + 0 + 5 + 0 + 0 où la fonction δ a été étendue aux couples de mots de même longueur Hypothèse: δ(x, y) d autant plus petit que x et y se ressemblent: la valeur d alignement optimale d(u, v) est vue comme distance sur les mots. Distance d édition: en informatique on travaille souvent avec la distance d édition: nombre d opérations de type insertion, effacement, mutation pour passer d un mot à l autre. C est un cas particulier du modèle ci-dessus. 2-1
Alignement de séquences et programmation dynamique Récurrence: pour S i,j = meilleur alignement de u 1... u i avec v 1... v j. On calcule S u, v à partir de S 0,0 = 0 et de la récurrence 8 < S i 1,j 1 + δ(u i, v j ) si i > 0 et j > 0 S i,j = min S i 1,j + δ(u i, ) si i > 0 : S i,j 1 + δ(, v j ) si j > 0 Si u = m, v = n, table de taille O(nm) calculée en temps O(nm). Une fois la table calculée on retrouve l alignement en temps linéaire: on construit un chemin de (m, n) à (0, 0) dans la table en retrouvant à chaque étape à la case qui a donné le min. Dans certains contextes la limitation est la taille de la mémoire. Pour calculer les (S i,j ) 0 i m pour j donné, on a besoin que des (S i,j 1 ) 0 i m on peut se contenter d un espace linéaire. Mais dans ce cas on ne retrouve plus facilement l alignement. 3-1
Alignement de séquences en espace linéaire On peut trouver le meilleur alignement en espace linéaire par une approche diviser pour régner. Soit i 0 = m/2, on calcule le score a j = S i0,j pour tout j ainsi que b j = S i 0,j score du meilleur alignement de la 2ème moitié de u avec v j+1... v n pour tout j: espace linéaire. On choisit k = argmin j (a j 1 + b j+1 + δ(u i0, v j ), a j 1 + b j + δ(u i0, )) on aligne a i0 avec b k (ou un espace) et on recommence dans les 2 parties. Complexité: on veut montrer que cela ne coute que 2 fois plus cher en temps que l algo direct: C(m, n) 2mn. C(m, n) mn/2 + mn/2 + C(m/2, k) + C(m/2, n k) C(m, n) mn/2 + mn/2 + mk + m(n k) = 2mn 4-1
Alignement de k séquences Données: k mots u 1,..., u k sur un alphabet A et une fonction de dissimilarité des lettres δ : (A { }) 2 R +. Problème Alignement-Multiple: trouver l alignement (U 1,.. X., U k ) qui minimise δ(u i, U j ). 1 i<j k Programmation dynamique: par programmation dynamique on doit aligner des préfixes de chacuns des k mots table en O(n k )... exponentiel avec k. 5-1
Alignement de k séquences: NP-complétude Théorème: Le problème de décision de l existence d un alignement multiple de valeur au plus S pour des séquences u 1,..., u k et une fonction de dissimilarité δ est NP-complet. Le problème Alignement-multiple est clairement dans NP: le calcul de la valeur d un alignement se fait en temps O(k 2 n). Preuve: réduction de Vertex-cover à Alignement multiple. 6-1
7-1 Alignement de k séquences: NP-complétude Preuve: réduction de Vertex-cover à Alignement multiple. Considérons une instance de VertexCover: G un graphe à n sommets, m arêtes, et k l objectif. Existe-t-il un ensemble d au plus k sommets qui couvrent toutes les arêtes? On y associe une instance de AlignementMultiple: à l arête {x i, x j }, i < j, on associe le mot de longueur 3n + 3 u ij = a 3i ba 3(j i) 2 ba 3(n j)+3 avec des b en positions 3i + 1 et 3j. on ajoute p copies du mot t = c(001) n 00c de longueur 3n + 4 et q copies de v = cd k c de longueur k + 2. Coûts: si x y, dans {a, b, 0, 1}, δ(x, y) = 1 sauf δ(0, 1) = 2 si y {c, d}, δ(x, y) = 2 sauf δ(a, c)=δ(, c)=δ(1, d)=δ(b, d)=1. On peut aligner un b de chaque u ij avec des d ssi G possède une couverture avec k sommets, et ce cas donne l alignement min.
Alignement de k séquences: algorithme approché Données: k mots u 1,..., u k sur un alphabet A et une fonction de dissimilarité des lettres δ : (A { }) 2 R +. On suppose que δ est une distance: δ(i, j) δ(i, l) + δ(l, j), alors d l est aussi. Algorithme: calculer d(u i, u j ) pour tout i, j Soit u le mot u i qui minimise P j i d(u i, u j ) Supposons u 1 = u et posons U 1 := u 1. Pour i de 2 à k faire: Aligner u i et U 1 avec l algo pour 2 séquences Construire ainsi U i et modifier U 1 par insertion de blancs. Mettre à jour les U j, 2 j < i par insertion de ces blancs. Remarque: cet algorithme fonctionne en O(k 2 n 2 ), il est polynomial 8-1
Alignement de k séquences: algorithme approché Analyse: Valeur de l alignement constuit: X δ(u i, U j ) X δ(u i, U 1 ) + δ(u 1, U j ) (k 1) X δ(u i, U 1 ) i<j i<j i = (k 1) X d(u i, u ) i Valeur de l alignement optimal: X δ(ui, Uj ) X d(u i, u j ) = 1 X X d(u i, u j ) k 2 2 i<j i<j i j i Théorème: L algorithme est approché à un facteur 2. X i d(u i, u 1 ) 9-1
Reconstruction d arbres d évolution Données: Pour n espèces, la matrice des temps écoulés d(i, j) depuis la divergence des espèces i et j. Problème. Retrouver l arbre de l évolution: espèces aux feuilles, noeuds = divergence entre 2 ou plus branches, hauteur = temps; le premier ancêtre commun de i et j doit être à hauteur d(i, j). Théorème: L arbre existe ssi d est une ultramétrique: pour tout i, j, k, max(d(i, j), d(j, k), d(i, k)) est atteint au moins 2 fois. Preuve: 3 feuilles dans un arbre d évolution max 2 Réciproque par récurrence: on reconstruit la branche de l espèce n, en partitionnant les {1,..., n 1} suivant les valeurs de d(i, n), et en traitant récursivement les sous-arbres. 10-1