objectifs du cours d’aujourd’hui - icsam/prjinfosv/slides/cours02.pdf · c epfl 2002–2012...

16
Objectifs Définition Comparaison d’algorithmes Complexité algorithmique Profiling Résolution de problèmes Divide and Conquer Needleman- Wunsch Annexe c EPFL 2002–2012 Jamila Sam ÉCOLE POLYTECHNIQUE DÉRALE DE LAUSANNE Projets en Informatique : Complexité des algorithmes Méthodes de résolution de problèmes Jamila Sam Haroud Laboratoire d’Intelligence Artificielle Faculté I&C Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 1 / 64 Objectifs Définition Comparaison d’algorithmes Complexité algorithmique Profiling Résolution de problèmes Divide and Conquer Needleman- Wunsch Annexe c EPFL 2002–2012 Jamila Sam ÉCOLE POLYTECHNIQUE DÉRALE DE LAUSANNE Objectifs du cours d’aujourd’hui Introduire la notion de complexité algorithmique Vous apprendre à comparer 2 algorithmes Présenter une approche classique l’élaboration d’algorithmes : programmation dynamique Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 2 / 64 Objectifs Définition Comparaison d’algorithmes Complexité algorithmique Profiling Résolution de problèmes Divide and Conquer Needleman- Wunsch Annexe c EPFL 2002–2012 Jamila Sam ÉCOLE POLYTECHNIQUE DÉRALE DE LAUSANNE Qu’est ce qu’un algorithme ? Algorithme ? solution calculatoire/mécanique/itérative/... à un problème « spécification d’un schéma de calcul sous forme d’une suite d’opérations élémentaires obéissant à un enchaînement déterminé » [Encyclopedia Universalis] Exemples : algorithme d’Euclide (PGCD) algorithmes de tri (données non numériques) Rappel schématique : Programme = algorithme + données Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 3 / 64 Objectifs Définition Comparaison d’algorithmes Complexité algorithmique Profiling Résolution de problèmes Divide and Conquer Needleman- Wunsch Annexe c EPFL 2002–2012 Jamila Sam ÉCOLE POLYTECHNIQUE DÉRALE DE LAUSANNE Mais les algorithmes existent depuis bien avant les ordinateurs : déjà dans l’Antiquité Formalisation : dans les années (19)30 par des mathématiciens : Gödel, Turing, Church, Post, ... fonctions « calculables » et machines de Turing : abstraction mathématique des notions de traitement (suite d’opérations élémentaires), de problème et d’algorithme. algorithme = composition d’un ensemble fini d’opérations élémentaires bien définies (déterministes) opérant sur un nombre fini de données (éventuellement nul) et effectuant un traitement bien défini : suite finie de règles à appliquer, dans un ordre déterminé, à un nombre fini de données, se terminant (i.e. arriver, en un nombre fini d’étapes, à un résultat, et cela quelles que soient les données traitées). Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 4 / 64

Upload: duongxuyen

Post on 06-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Projets en Informatique :

Complexité des algorithmesMéthodes de résolution de problèmes

Jamila Sam Haroud

Laboratoire d’Intelligence ArtificielleFaculté I&C

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 1 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Objectifs du cours d’aujourd’hui

◮ Introduire la notion de complexité algorithmique◮ Vous apprendre à comparer 2 algorithmes◮ Présenter une approche classique l’élaboration

d’algorithmes :◮ programmation dynamique

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 2 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Qu’est ce qu’un algorithme ?

Algorithme ?☞ solution calculatoire/mécanique/itérative/... à un problème

« spécification d’un schéma de calcul sous forme d’une suited’opérations élémentaires obéissant à un enchaînementdéterminé »

[Encyclopedia Universalis]

Exemples :◮ algorithme d’Euclide (PGCD)◮ algorithmes de tri (données non numériques)

Rappel schématique :

Programme = algorithme + données

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 3 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Mais les algorithmes existent depuis bien avant les ordinateurs :déjà dans l’Antiquité

Formalisation : dans les années (19)30 par des mathématiciens :Gödel, Turing, Church, Post, ...

☞ fonctions « calculables » et machines de Turing : abstractionmathématique des notions de traitement (suite d’opérationsélémentaires), de problème et d’algorithme .

algorithme = composition d’un ensemble fini d’opérationsélémentaires bien définies (déterministes) opérant sur un nombrefini de données (éventuellement nul) et effectuant un traitementbien défini :

◮ suite finie de règles à appliquer,◮ dans un ordre déterminé,◮ à un nombre fini de données,◮ se terminant (i.e. arriver, en un nombre fini d’étapes, à un

résultat, et cela quelles que soient les données traitées).

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 4 / 64

Page 2: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Algorithme 6= Programme

Un algorithme est indépendant du langage de programmationdans lequel on va l’exprimer et de l’ordinateur utilisé pour le fairetourner.

C’est une description abstraite des étapes conduisant à la solutiond’un problème.

algorithme = partie conceptuelle d’un programme (indépendantedu langage)

programme = implémentation (réalisation) de l’algorithme , dansun langage de programmation donné, sur une architecturespécifique et sur un système particulier.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 5 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Qualité d’un algorithme ?

Qu’est-ce qu’un bon algorithme ?Y en a-t-il des meilleurs que d’autres ?En clair :Comment comparer différents algorithmes (résolvant le mêmeproblème) ?

2 points de vue :◮ rapidité : combien de temps ?◮ taille des ressources : combien de place mémoire ?

Mais peut-on comparer objectivement ?c’est-à-dire indépendemment de la réalisation de l’algorithme surune machine donnée dans un langage donné ?(puisque justement on a dit qu’un algorithme ne dépendait pas deces éléments)on veut comparer des algorithmes, pas des programmes

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 6 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Notion de complexité : introduction

La complexité d’un algorithme est une fonction qui mesure :

◮ le temps d’exécution (complexité temporelle , la plusutilisée),

◮ ou encore la quantité de mémoire (complexité spatiale ),

requis(e) pour la mise en œuvre de cet algorithme sur un certainjeu de données (variable).La complexité est donc fonction de la taille n du jeu de données.

On distigue de plus la complexité pire cas (la plus utilisée) de lacomplexité moyenne.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 7 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Mesure de la complexité temporelle (1/2)

Il est possible de déterminer la complexité (temporelle ou spatiale)d’un algorithme de façon théorique

☞ Machine de Turing

Les machines de Turing sont des automates abstraits quiconstituent une notion centrale en informatique, car ellespermettent de donner :

1. une définition précise à la notion informelle d’algorithme

2. une base théorique solide aux notions importantes que sontla calculabilité , la décidabilité et la complexité .

Dans la pratique, cette machine de Turing est rarementdisponible...

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 8 / 64

Page 3: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Mesure de la complexité temporelle (2/2)

En pratique l’on mesure donc la complexité par le nombred’instructions élémentaires nécessaires à l’exécution del’algorithme.

Par instruction élémentaire, nous entendrons ici toute instructionpour laquelle il a été prouvé au moyen d’une machine de Turingqu’elle peut-être utilisé en un nombre d’opération borné par uneconstante connue a priori.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 9 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

instructions élémentaires

Exemples d’instructions élémentaires :◮ écrire un caractère à l’écran◮ lire un caractère dans un fichier◮ affecter une valeur atomique (un caractère, un entier, un réel,

...) à une variable(mais l’affectation d’une valeur composée peut ne pascorrespondre à un nombre constant de déplacements en casde dépendance par rapport au nombre d’éléments constituantla valeur composée)

◮ (parfois : réaliser une opération arithmétique sur des valeursatomiques)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 10 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Complexité: notation O(...)

Pour comparer des algorithmes, ce qui nous intéresse c’est desavoir comment leur complexité évolue en fonction de la taille desdonnées en entrée.

Pour cela on effectue des comparaisons sur les ordres degrandeur asymptotiques (quand la taille des données en entréetend vers l’infini)Ces ordres de grandeur sont généralement notés en utilisant lanotation de Landau O(...)

Pour deux fonctions f et g de R dans R, on écrit :

f = O(g)

si et seulement si

∃c > 0;∃x0|∀x > x0; |f (x)| ≤ c · |g(x)|

Dans ce cas, on dit que f est « en grand O » de g.Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 11 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Comparaison

1

10

100

1000

10000

100000

10 100 1000

2**xx*x*x

x*xx*log(x)

xlog(x)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 12 / 64

Page 4: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Notation « grand O » : exemple

f (n) = n2 +100n+ logn+1000

n f (n) n2 100n logn 1000valeur % valeur % valeur % valeur %

1 1’101 1 0.1 100 9.1 0 0 1000 90.8210 2’101 100 4.8 1’000 47.6 1 0.0 1000 47.6

100 21’002 10’000 47.6 10’000 47.6 2 0.0 1000 4.8103 1’101’003 106 90.8 105 9.1 3 0.0 1000 0.1104 101’001’004 108 99.0 106 1.0 4 0.0 1000 0.0

...

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 13 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Notation « grand O » : exemple (suite)

f (n) = n2 +100n+ logn+1000

1

10

100

1000

10000

100000

1e+06

1e+07

1e+08

1 10 100 1000 10000

f(x)x*x

100*xlog(x)1000

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 14 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Comparaison d’algorithmes

En pratique pour mesurer la complexité d’un algorithme on utiliseévidemment le plus petit des « grands O » possibles

Exemples :

n est O(n2) mais n est aussi O(n)12 est O(n2), O(n), mais surtout O(1)

Différentes classes de complexité permettent alors de caractériserles algorithmes (n représentant la taille d’entrée) :

◮ complexité constante O(1) : le nombre d’éléments n’a pasd’influence sur l’algorithme

◮ complexité logarithmique O(logn)◮ complexité linéaire O(n)◮ complexité quasi-linéaire O(n log(n))◮ complexité polynomiale O(n2), ... O(nk )◮ complexité exponentielle O(2n)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 15 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Calcul (pratique) de la complexité

◮ le coût d’instructions en séquence est la somme des coûts dechacune des instructions

C(I1; I2) = C(I1)+C(I2)

◮ d’où le coût d’une boucle (for ou while ) :

C(boucle q fois B(i)) =q

∑i=1

C(B(i))

où B(i) est un bloc d’instructions correspondant à la ièmeitération de la boucle

Dans les cas les plus simples, c’est le produit du coût du blocrépété par le nombre de fois que se fait la boucle

☞ une des difficultés principales (à part dans les cas triviaux) estde trouver combien de fois s’éxecute la boucle

◮ Pour les appels récursifs : on écrit l’équation de récurrence àpartir des règles ci-dessus.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 16 / 64

Page 5: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Analyse de complexité : exemple

Exemple : recherche d’un élément dans une liste triée

Soit l’algorithme suivant :appartient1entrée : x, Esortie : x ∈ E ?

tailleentrée : Esortie : t

Pour i de 0 à tSi x = E [i]

x ∈ Ex 6∈ E

Par exemple implémenté en C++comme cela :

bool appartient1(type x, Liste E) {for (int i(0); i < taille(E); ++i) {

if (x==E[i]) return true; }return false;

}

Quelle est la complexité de l’algorithme « appartient1 » ?

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 17 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Analyse de complexité : exemple

Analyse de la complexité de appartient1(x,E) :

Taille des entrées : les entrées sont constituées d’un élément x etd’une liste E de m=taille(E) éléments du même type que x .La taille d’un codage binaire de la séquence d’entrée pourra êtrede la forme : K · (m+1) et l’on pourra donc prendre mcommemesure de référence.

Instructions élémentaires utilisées ici :

1. l’affectation d’une valeur à une variable entière ;

2. le calcul de la taille d’une liste d’entiers ;

3. la comparaison de deux valeurs entières (avec < et ==) ;

4. l’incrément d’une valeur entière ;

5. l’accès au i-ème élément d’une liste ;

6. le renvoi d’une valeur booléenne.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 18 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Analyse de la complexité : exemple (2)

Remarques à propos des instructions élémentaires :◮ Pour des entiers codés sur un nombre fixe de bits, les

instructions (1), (3), (4) et (6) peuvent être réalisées en unnombre constant de déplacements d’une machine de Turing.

☞ Ces instructions pourront donc être associées à un coût unitélors du calcul de complexité.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 19 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

◮ Par contre, pour les instructions (2) et (5), la situation est pluscompliquée, car dépendante de la représentation qui estutilisée pour la liste E :

◮ En effet, selon que cette représentation contient ou non defaçon explicite l’indication de la taille, le calcul de cette dernièrepourra être réalisé :

◮ soit en un nombre constant d’étapes (e.g. mémorisation explicitede la taille)

◮ soit en un nombre d’étapes dépendant du nombre d’éléments dela liste (e.g. parcours + sommation)

◮ De même, selon que la liste est représentée ou non par unestructure de données permettant un accès direct à seséléments (tableau, vecteur), l’accès au i-ème élément pourra sefaire:

◮ soit en un nombre constant d’étapes (accès direct)◮ soit à nouveau en un nombre d’étapes dépendant du nombre

d’éléments de la liste (parcours).

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 20 / 64

Page 6: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Analyse de la complexité : exemple (3)Dans le cas où la liste E est représentée par une structure dedonnées permettant le calcul de la taille de E et l’accès à soni-ème élément en un temps constant, l’analyse de la complexitéde appartient1(x,E) est la suivante :

1 affectation de la valeur 0 à la variable i 1 instruction2 calcul de la taille de E et vérification de

la condition (i<taille(E) )2 instructions

3 accès au i-ème élément de E et com-paraison de cet élément avec x

2 instructions

4 décrément (de 1) de i et retour en 2 1 instruction

Par construction de l’algorithme, les étapes 2, 3 et 4 seront faitesau plus autant de fois qu’il y a d’éléments dans E, donc mfois. SiC1(m) est le nombre d’instructions élémentaires nécessaires pourréaliser l’algorithme appartient1(x,E) , on a donc :

C1(m) = 1+5m = O(m)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 21 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Analyse de la complexité : exemple (4)

Supposons maintenant que la liste E est représentée par unstructure de données ne permettant pas le calcul de la taille de Een temps constant.

Supposons par exemple que le calcul de taille(E) est en a+b ·minstructions (donc en O(m)).

L’analyse de la complexité de appartient1(x,E) est lasuivante :

pour l’étape 1 : 1 instructionpour l’étape 2 : 1+a+b ·m instructionspour l’étape 3 : 2 instructionspour l’étape 4 : 1 instruction

et on aura :

C1′(m) = 1+m (1+a+bm+3) = O(m2)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 22 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Analyse de la complexité : exemple (5)

Mais si l’on modifie très légèrement l’algorithme de la façonsuivante :

bool appartient2(type x, Liste E) {for (int i(0), j(taille(E)); i<j; ++i) {

if (x == E[i]) return (true); }return (false);

}

Les nombres d’instructions élémentaires pour les étapes seront

alors :

pour l’étape 1 : 1+a+b ·m instructionpour l’étape 2 : 1 instructionpour l’étape 3 : 2 instructionspour l’étape 4 : 1 instruction

et on aura donc:

C2(m) = 1+a+bm+m (1+2+1) = O(m)

☞ algorithme linéaire

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 23 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Autre exemple

Calcul récursif des nombres de Fibonacci

Fibonacci Récursifentrée : nsortie : F (n)

Si n = 0F (n) = 0

Si n = 1F (n) = 1

SinonFibonacci Récursifentrée : n−1sortie : p

Fibonacci Récursifentrée : n−2sortie : q

F (n) = p+q

if (n == 0)return 0;

else if (n == 1)return 1;

elsereturn Fibonacci(n-1)

+ Fibonacci(n-2);

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 24 / 64

Page 7: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Complexité de la version recursive desnombres de Fibonnacci

A coût des tests et B coût de l’addition

C(0) = A

C(1) = A

C(n) = A+C(n−1)+C(n−2)+B

Résolution (voir annexe) :

C(n) =2A+B√

5

(

Φn+1−Φn+1

)

−A−B

avec Φ= 1+√

52 (nombre d’or) et Φ= 1−

√5

2d’où

C(n) = O(Φn)

(notez que |Φ|< 1)

☞ algorithme exponentiel (en n)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 25 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Autre exemple (suite)

Calcul itératif de Fibonacci

Fibonacci Itératifentrée : nsortie : F (n)

y ← 0z← 1Pour i de 1 à n

x ← y +zz← yy ← x

F (n) = x

entier Fn_1(0);entier Fn_2(1);

for (entier i(1); i <= n; ++i) {Fn = Fn_1 + Fn_2;Fn_2 = Fn_1;Fn_1 = Fn;

}return Fn;

C′(n) = 1+1+1+n

∑i=1

(D+5) = (D+5) ·n+3

avec D coût de l’addition

C′(n) = O(n)

☞ algorithme linéaire (en n)Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 26 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Profiling

Le « profiling » est un moyen de déterminer le temps consommépar chacune des parties de votre programme.

Pour réaliser ces mesures de manière automatique, on peutajouter une option de compilation -pg :

c++ -pg programme.cc -o programme

L’exécution de programme produit alors un fichier gmon.outL’utilitaire gprof utilise ce fichier et programme pour donner desstatistiques sur le déroulement du programme :

gprof programme

Exemple :c++ -pg fibonacci.cc -o fibonaccifibonacci(... s’exécute ...)gprof fibonacci

man gprof pour plus de détailsProjets en Informatique – Cours 2 : Complexité et stratégies de résolution – 27 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Profiling

% cumulative self self totaltime seconds seconds calls s/call s/call name89.51 6.70 6.70 1 6.70 6.70 Fibonacci (unsigned)

8.02 7.29 0.60 1 0.60 0.60 FibonacciIteratif (unsigned)2.47 7.48 0.18 1 0.18 0.18 demander_nombre(int, int)0.00 7.48 0.00 1 0.00 0.00 _GLOBAL__I_main0.00 7.48 0.00 1 0.00 0.00 __static_initialization_and_destructio n_0(int,

...

index %time self children called name-----------------------------------------------

331160280 Fibonacci(unsigned) [2]6.70 0.00 1/1 main [1]

[2] 89.5 6.70 0.00 1+331160280 Fibonacci(unsigned) [2]331160280 Fibonacci(unsigned) [2]

-----------------------------------------------0.60 0.00 1/1 main [1]

[3] 8.0 0.60 0.00 1 FibonacciIteratif(unsigned) [3]

Temps total

pourcentagedu temps Temps propre

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 28 / 64

Page 8: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Conception d’algorithmes

Nous venons de voir comment différencier, par le calcul de lacomplexité, les algorithmes efficaces des algorithmes inefficaceset comment comparer deux algorithmes pour un même problème.

Reste la principale question : comment concevoir un algorithmepermettant de résoudre un problème donné ?

Il n’y a malheureusement pas de méthode miracle pour construiredes solutions algorithmiques à un problème donné.

Il existe cependant plusieurs méthodes de résolution ,c’est-à-dire plusieurs schémas d’élaboration de solutionsalgorithmiques à un problème donné.

Plusieurs de ces méthodes suivent ce que l’on appelle uneapproche descendante .

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 29 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Approche descendanteRésoudre un problème par une approche descendante consisteà décomposer le problème général en sous-problèmes plusspécifiques, lesquels seront chacun décomposés en problèmesencore plus spécifiques, etc.

Une telle analyse du problème se fait à l’aide de blocs imbriquéscorrespondant donc à des traitements de plus en plus spécifiques,lesquels sont eux aussi décrits par des algorithmes.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 30 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Divide and Conquer

Parmi les méthodes descendantes, une qui est souvent mise enœuvre s’appelle « diviser pour régner » (divide and conquer).

Pour un problème P portant sur des données d , son schémagénéral est le suivant :

◮ si d est « assez simple », appliquer un algorithme « ad hoc »permettant de résoudre le problème (traitement des castriviaux)

◮ sinon,◮ décomposer d en instances plus petites d1, ..., dn◮ puis pour chacun des di : résoudre P(di ). On obtient alors une

solution yi◮ recombiner les yi pour former la solution Y au problème de

départ.

☞ conduit souvent à des algorithmes récursifs

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 31 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Exemple

Un exemple d’application de « divide and conquer » au problèmede la recherche d’un élément dans une liste ordonnée est lesuivant :

d = {L,e} est une liste ordonnée L et un élément e, P(d) est unevaleur booléenne, « vrai » si e ∈ L et « faux » sinon

Solution « divide and conquer » :◮ si L est vide, la solution est « faux »◮ si L est réduit à un seul élément x , la solution est « vrai » si

x = e et « faux » sinon◮ découper L en deux sous-ensembles non vides et disjoints L1

et L2 (le plus optimal étant au milieu de L)◮ si e ≤max(L1) la solution est la même que P(L1,e), sinon la

solution est la même que P(L2,e)

Cet algorithme s’appelle la recherche par dichotomie

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 32 / 64

Page 9: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Programmation dynamique

La programmation dynamique est une méthode de résolutionpermettant de traiter des problèmes ayant une structureséquentielle répétitive ;

c’est-à-dire des problèmes pour lesquels on doit faire unensemble de choix successifs/prendre des décisions successivespour arriver à une solution. Au fur et à mesure que de nouvellesoptions sont choisies, des sous-problèmes apparaissent (aspect« séquentiel »).

La programmation dynamique s’applique lorsqu’un mêmesous-problème apparait pour plusieurs suites de choix différents.

Le principe est alors de stocker la solution à chaquesous-problème au cas où il réapparaitrait plus tard dans larésolution du problème global :

On évite de calculer plusieurs fois la même chose.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 33 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Programmation dynamique (2)

La programmation dynamique est souvent utilisée lorsque unesolution récursive se révèle inefficace.

Elle permet souvent de changer une algorithme « naïf »exponentiel en un algorithme polynomial .

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 34 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Exemple : plus court chemin dans ungraphe

Le calcul du plus court chemin , par exemple entre toutes lesgares du réseau CFF

Voyons une solution par programmation dynamique : l’Algorithmede Floyd

illustration de l’idée de base :le plus court chemin pour aller de Lausanne àZürich est le minimum entre :

1. le plus court chemin connu pour aller deLausanne à Zürich,

2. le chemin allant de Lausanne à Zürich enpassant par une ville intermédaire nonencore considérée.

Dk (i , j) = min{Dk−1(i , j),Dk−1(i ,k)+Dk−1(k , j)}

Dk−1

(k,j)

Dk−1

(i,j)D

k−1(i,k)

Zürich

Bâle j

k

i

Lausanne

k−1

Berne

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 35 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Exemple (2)

L’algorithme est donc le suivant, pour n gares dans le réseau :Initialisation :Pour i de 1 à n

Pour j de 1 à nD(i , j)← distance directe de i à j , ∞ si i et j ne sont pasdirectement connectés

Déroulement :Pour k de 1 à n

Pour i de 1 à nPour j de 1 à n

D(i , j)←min{D(i , j),D(i ,k)+D(k , j)}

Complexité ?☞ O(n3)

Note : il existe d’autres algorithmes, encore plus efficaces pour cetype de problèmes (Dijkstra, Viterbi)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 36 / 64

Page 10: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Algorithme de FloydExemple

Un exemple simple :

Zürich

Bâle

Lausanne

3

2

1

4

Berne

102

58

45

38

133

(données totalement fictives)

D1 =D0 =

Lausanne Bale Berne Zürich0 133 58 ∞

133 0 45 3858 45 0 102∞ 38 102 0

D2 =

Lausanne Bale Berne Zürich

0 133 58 171133 0 45 38

58 45 0 83

171 38 83 0

D4 =D3 =

Lausanne Bale Berne Zürich

0 103 58 141103 0 45 38

58 45 0 83

141 38 83 0

Note : fonctionne aussi pour des graphes asymétriques (graphesorientés)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 37 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Programmation DynamiqueAlignement de séquences

Un problème que l’on rencontre souvent en biologie est decomparer deux séquences d’ADN. On aimerait par exempledéterminer si les séquences sont similaires, et trouver les motifscommuns.

Exemple: on aimerait aligner la séquence de nucléotides NGAGCATACTavec M GATTACAA.

N : GAGCATAC-TM : GA-- TTACAA

Il faut noter que l’ordre des nucléotides dans les deux séquencesdoit être préservé, mais qu’on a le droit d’introduire des trous.

Dans cet exemple l’alignement n’est pas parfait:◮ on a aligné un A avec un T: il s’agit d’une substitution .◮ on a aligné un Gun avec un trou - : il s’agit d’une insertion .◮ on a aligné un trou - avec un A: il s’agit d’une suppression .

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 38 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesModèle

Comment dire si un alignement donné est mieux qu’un autre?

GAGCATAC-T GAGCATACT GAGCATACT----GA-- TTACAA GATTACA- A GA---T--TACAA

Intuitivement on aimerait minimiser le nombre d’erreurs que l’onfait.

De manière plus rigoureuse, on associe un score à chaquealignement possible:

◮ À toutes les paires de caractères (x ,y) possibles on associeun score de substitution S[x ][y ].

◮ On associe une “pénalité de trou” go pour chaque pairecaractère/trou.

◮ Le score global de l’alignement est la somme des scores desubstitutions et les pénalités de trou.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 39 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesUn modèle simple

Disons par exemple que l’on donne:◮ +1 point pour un paire de caractères identique (Ni = Mj )◮ -1 point pour une substitution incorrecte (Ni 6= Mj )◮ -1 point pour chaque trou

N : GAGCATAC-T GAGCATACT GAGCATACT----M : GA-- TTACAA GATTACA- A GA---T--TACAA

11---111-- 11--1-1-- 11---1--1----0 points -1 points -5 points

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 40 / 64

Page 11: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesMatrice de substitution

Un moyen compact de définir les scores de substitution estd’utiliser une notation matricielle:

A G T CA +1 -1 -1 -1G -1 +1 -1 -1T -1 -1 +1 -1C -1 -1 -1 +1

La pénalité de trou est go =−1.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 41 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesModèle plus compliqué

La matrice de substitution dépend du modèle choisi.Par exemple en biologie, les mutation A↔G (purines) et C↔T(pyrimidines) sont plus probables que les autres mutations.On utilisera alors une autre matrice de substitution, par exemple:

A G T CA +2 +1 -1 -1G +1 +2 -1 -1T -1 -1 +2 +1C -1 -1 +1 +2

La pénalité de trou reste go =−1.

N : GAGCATAC-T GAGCATACT GAGCATACT----M : GA-- TTACAA GATTACA- A GA---T--TACAA

22---222-- 22-1212-- 22---2--2----5 points 7 points -1 points

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 42 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesModèles plus compliqués

Pour l’alignement de protéines, il existe des matrices desubstitution standard, comme par exemple:

◮ Les matrices PAM (“Point accepted mutation”)◮ Les matrices BLOSUM (“Blocks substitution matrix”)

Exemple de la matrice BLOSUM62:

Dans ce qui suit, on suppose que la matrice a déjà été choisie.Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 43 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesAlgorithme

Comment trouve-t-on un alignement qui a le meilleur score(alignement optimal)?

Nous allons nous intéresser à deux aspects :◮ Comment déterminer le meilleur score possible◮ Trouver un alignement qui a ce meilleur score

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 44 / 64

Page 12: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesAlgorithme naïf

Nous allons décrire l’algorithme naïf, qui est récursif:

À chaque étape de la récursion, on essaie :◮ soit de faire une substitution,◮ soit une insertion,◮ soit une suppression,

puis on continue avec ce qu’il reste des chaînes de caractères.

Exemple . . .

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 45 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesAlgorithme naïf

Exemple d’alignement de ACavec GA:

0

-1C

A

substitution

-2AC

GA-2AC

-A

-3-AC

G-A

-2-C

GA

-3A-C

-GA

-1C

-

insertion

0AC

A-

-1-AC

GA-

-2AC

--

-3-AC

A--

-4--AC

GA--

-2-C

A-

-3A-C

GA--3A-C

-A-

-4-A-C

G-A-

-3--C

GA-

-4A--C

-GA-

-1-

A

suppression

-2C-

GA

-3AC-

-GA

-2C-

-A

-3AC-

G-A-3AC-

--A

-4-AC-

G--A

-3-C-

G-A

-4A-C-

-G-A

-2--

GA

-3C--

-GA

-4AC--

--GA

Note: Ici on part de la fin de la séquence pour être en adéquation avec l’algorithme récursif qui suit.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 46 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesAlgorithme naïf (2)

fonction alignementnaif_debut(N, M)retourne alignementnaif(N, M, longueur(N), longueur(M))fonction alignementnaif(N, M, i , j)subs←−∞, ins←−∞, sup←−∞Si i = 0 et j = 0

retourne 0Si i 6= 0 et j 6= 0

subs← alignementnaif (N,M, i−1, j−1)+S[Ni−1,Mj−1]Si i 6= 0

ins← alignementnaif (N,M, i−1, j)+goSi j 6= 0

sup← alignementnaif (N,M, i , j−1)+goretourne max(subs, ins,sup)

N et M sont nos deux séquences à aligner.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 47 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesAlgorithme naïf (3)

L’algorithme naïf est un algorithme exponentiel. Le tempsd’exécution est compris entre O(3n) et O(3n+m), où n et m sontles longueurs respectives de N et M.

☞ L’algorithme naïf ne peut pas être utilisé pour aligner desséquences de plus de 20-30 caractères.

Dans l’algorithme on peut remarquer que:◮ La fonction alignementnaif est une fonction pure (si on

l’appelle avec les mêmes arguments elle donne la mêmevaleur de retour)

◮ On appelle cette fonction plusieurs fois avec les mêmesparamètres.

☞ Nous allons sauvegarder les valeurs que prend cette fonctionafin de ne rien recalculer.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 48 / 64

Page 13: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesProgrammation dynamique (recursive)

fonction alignement_debut(N, M)Tableau T initialisé à ∞ partoutretourne alignement(N, M, longueur(N), longueur(M), T )fonction alignement(N, M, i , j , T )Si T [i][j] 6= ∞

retourne T [i][j]subs←−∞, ins←−∞, sup←−∞Si i = 0 et j = 0

retourne 0Si i 6= 0 et j 6= 0

subs← alignement(N,M, i−1, j−1,T )+S[Ni−1,Mj−1]Si i 6= 0

ins← alignement(N,M, i−1, j ,T )+goSi j 6= 0

sup← alignement(N,M, i , j−1,T )+goT [i][j]←max(subs, ins,sup)retourne T [i][j]

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 49 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesProgrammation dynamique (iterative) :Needleman–Wunsch par l’exemple

On aimerait aligner CATet ACG, en utilisant la deuxième matricede substitution que l’on a vue (slide 42).

◮ La matrice T (table d’édition) sert à trouver le meilleur scorepossible

◮ La matrice H sert à trouver un alignement qui a ce meilleurscore

Initialization:Matrice T:

C A T0 -1 -2 -3

A -1C -2G -3

Matrice H:C A T

fin ⇐ ⇐ ⇐A ⇑C ⇑G ⇑

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 50 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (Exemple)

Pour calculer la valeur d’une case T [i][j]:

T [i−1][j−1] T [i ][j−1]

T [i−1][j ] T [i ][j ]

+S[Ni−1][Nj−1]

+go

+go

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 51 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (Exemple)

Pour calculer la valeur de la case T [1][1]:

0 −1

−1 -1

+S[“C”][“A”] =−1

+go =−1

+go =−1subs = 0−1 =−1ins =−1−1 =−2sup =−1−1 =−2

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 52 / 64

Page 14: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (Exemple)

Pour calculer la valeur de la case T [1][2]:

−1 −1

−2 1

+S[“C”][“C”] = +2

+go =−1

+go =−1subs =−1+2 = 1ins =−2−1 =−3sup =−1−1 =−2

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 53 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (Exemple)

Pour calculer la valeur de la case T [1][3]:

−2 1

−3 0

+S[“C”][“G”] =−1

+go =−1

+go =−1subs =−2−1 =−3ins =−3−1 =−4sup = 1−1 = 0

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 54 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (Exemple)

...et ainsi de suite. Le résultat final:Matrice T:

C A T0 -1 -2 -3

A -1 -1 1 0C -2 1 0 2G -3 0 2 1

Matrice H:C A T

fin ⇐ ⇐ ⇐A ⇑ տ տ ⇐C ⇑ տ ⇐ տG ⇑ ⇑ տ ⇐

Pour retrouver l’alignement on se sert des flèches de la matrice H,en commençant en bas à droite (chemin en rouge).

La reconstruction de l’alignement optimal:

⇐ տ տ ⇑T AT CAT -CAT- G- CG- ACG-

Le score de l’alignement est 1.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 55 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (1)

Pour i de 0 à longueur(N)T [i][0]← go · i , H[i][0]← ”⇐ ”

Pour j de 0 à longueur(M)T [0][j]← go · j , H[0][j]← ” ⇑ ”

Pour i de 1 à longueur(N)Pour j de 1 à longueur(M)

subs← T [i−1][j−1]+S[Ni−1,Mj−1]ins← T [i−1][j]+gosup← T [i][j−1]+goT [i][j]←max(subs, ins,sup)Si T [i][j] = subs

H[i][j]← ”տ ”Sinon si T [i][j] = ins

H[i][j]← ”⇐ ”Sinon

H[i][j]← ” ⇑ ”Suite sur la prochaine diapositive...

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 56 / 64

Page 15: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (2)

Il suffit maintenant de suivre les flèches....suitei ←longueur(N), j ←longueur(M)Chaînes de caractère AN et AMTant que i 6= 0 et j 6= 0

Si H[i][j] = ”տ ”i ← i−1, j ← j−1AN ← Ni +AN, AM ←Mj +AM

Sinon si H[i][j] = ”⇐ ”i ← i−1AN ← Ni +AN, AM ← ”−”+AM

Sinonj ← j−1AN ← ”−”+AN, AM ←Mj +AM

retourne AN et AM et T [longueur(N)][longueur(M)]

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 57 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesProgrammation dynamique

◮ coût des initialisations: O(n)+O(m);◮ coût du remplissage de la table d’édition : O(n ·m)

◮ coût de reconstitution de la séquence optimale O(max(n,m))

L’algorithme tourne donc en temps O(n ·m)

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 58 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (Optimisation)

A t-on besoin de la matrice H?En fait non, car on peut la recalculer à partir de T .Le pseudo-code en dessous de tant que devient alors :

Si T [i][j] = T [i−1][j−1]+S[Ni−1,Mj−1]i ← i−1, j ← j−1AN ← Ni +AN, AM ←Mj +AM

Sinon si T [i][j] = T [i−1][j]+goi ← i−1AN ← Ni +AN, AM ← ”−”+AM

Sinonj ← j−1AN ← ”−”+AN, AM ←Mj +AM

On n’utilise plus que la moitié de la mémoire et le tempsd’exécution ne change presque pas.

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 59 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Alignement de séquencesNeedleman–Wunsch (Pénalité de trou affine)

En biologie, on n’aime pas tellement les trous dans lesalignements (ça décale toute la chaine de nucléotides, ce qui n’estsouvent pas viable).

Par contre des trous plus grands ne devraient pas être pénalisésautant (des insertions/suppressions de domaines entiers dansl’ADN sont probables).

On peut modéliser ceci avec une pénalité de trou affine:

γ(k) = go +(k −1)ge

avec |go|> |ge|.L’algorithme devient un peu plus compliqué (et la matrice H estvraiment nécessaire ici), mais reste O(n ·m).

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 60 / 64

Page 16: Objectifs du cours d’aujourd’hui - icsam/prjinfoSV/slides/cours02.pdf · c EPFL 2002–2012 Jamila Sam ... Objectifs du cours d’aujourd’hui ... 2. une base théorique solide

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Ce que j’ai appris aujourd’hui

◮ Comment comparer des algorithmes : notion de complexitéalgorithmique

◮ Comment analyser le temps d’exécution de monprogramme (profiling)

◮ Deux approches classiques pour constituer des algorithmes :◮ « Divide and Conquer », qui essaie de résoudre le problème en

le décomposant en instances plus simples◮ la « programmation dynamique » qui mémorise les calculs

intermédiaires pour éviter de les effectuer plusieurs fois

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 61 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Annexe mathématique

Résolution de

C(0) = A

C(1) = A

C(n) = A+C(n−1)+C(n−2)+B

C(n)−C(n−1)−C(n−2) = A+B

Équation homogène associée :

C(n)−C(n−1)−C(n−2) = 0

r2− r −1 = 0

r =Φ=1+√

52

ou r =Φ=1−√

52

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 62 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Annexe mathématique (2)

=⇒ C(n) = λ1Φn +λ2Φ

n

Solution particulière de l’équation complète :

C(n) =−A−B

Solution générale :

C(n) = λ1Φn +λ2Φ

n−A−B

Résolution des conditions initiales :

λ1 +λ2−A−B = A

λ1 ·Φ+λ2 ·Φ−A−B = A

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 63 / 64

Objectifs

Définition

Comparaisond’algorithmes

Complexitéalgorithmique

Profiling

Résolution deproblèmes

Divide andConquer

Needleman-Wunsch

Annexe

c©EPFL 2002–2012Jamila Sam

ÉC OL E POL Y T EC H N I Q U EFÉ DÉRA LE D E L A U SAN N E

Annexe mathématique (3)

λ1 =(2A+B)Φ√

5(1)

λ2 = − (2A+B)Φ√5

(2)

et finalement

C(n) =2A+B√

5

(

Φn+1−Φn+1

)

−A−B

Projets en Informatique – Cours 2 : Complexité et stratégies de résolution – 64 / 64