12
Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1. Concevoir un algorithme facile à comprendre, coder et déboguer. 2. Concevoir un algorithme qui utilise de façon efficace les ressources de l’ordinateur.

Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Embed Size (px)

Citation preview

Page 1: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Efficacité des algorithmes

Comment choisir parmi les différentes approches pour résoudre un problème?

2 objectifs à atteindre:1. Concevoir un algorithme facile à

comprendre, coder et déboguer.2. Concevoir un algorithme qui utilise de

façon efficace les ressources de l’ordinateur.

Page 2: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Efficacité des algorithmes(suite)

Objectif (1): concerne le génie logiciel

Objectif (2): Algorithmes et structures de données.

Lorsque l’objectif (2) est important, comment peut-on mesurer l’efficacité d’un algorithme?

Page 3: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Comment mesurer l’efficacité?

1. Comparaison empirique: coder et exécuter le programme

2. Analyse théorique (asymptotique)

Ressources critiques: temps, espace mémoire,...

Facteurs affectant le temps d’exécution:machine, language, programmeur, compilateur, algorithme et structure de données.

En général, le temps d’exécution dépend de la longueur de l’entrée.

Ce temps est une fonction positive T(n) où n est la longueur de l’entrée.

Page 4: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Analyse théorique

On compte le nombre d’opérations élémentaires en fonction de la longueur de l’entrée.

Exemple:

Problème Op. élémentaire

Trouver x dans un tableau Comparaison de x avec les éléments du tableau

Multiplier 2 matrices Multiplication scalaire

Trier un tableau Comparaison entre deux éléments du tableau

Parcourir un arbre Visiter un noeud

Page 5: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Analyse théorique

La longueur de l’entrée dépend du problème.

Exemple:

Problème Longueur

Trier un tableau Nombre d’éléments dans le tableau

Multiplier deux matrices Dimension des matrices

Parcourir un arbre binaire Nombre de noeuds

Résoudre un système d’équations linéaires

Nombre d’inconnues ou d’équations

Résoudre un problème de graphe

Nombre de nœuds et/ou nombre d’arêtes

Page 6: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Exemples

Exemple 1.

// Retourne l’indice du plus grand élément

int PlusGrand(int T[], int n) { int max = 0; for (int i=1; i<n; i++) if (T[max] < T[i]) max = i; return max; }

Page 7: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Exemples (suite)

Exemple 2: int médiane(int T[], int n) { return T(n/2);

}

Exemple 3: sum = 0;for (i=1; i<=n; i++)

for (j=1; j<=n; j++) sum++;

Page 8: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Meilleur algorithme ou ordinateur?

On suppose que l’ordinateur utilisé peut effectuer 106 opérations à la seconde

Page 9: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Taux de croissance

Page 10: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Pire cas, meilleur cas et cas moyen

Toutes les entrées d’une longueur donnée ne nécessitent pas le même temps d’exécution.

Exemple: Recherche séquentielle dans un tableau de taille n: On commence au début du tableau et regarde chaque élément jusqu’à ce que l’élément cherché soit trouvé.

Meilleur cas: 1 comparaison

Pire cas: n comparaisons

Cas moyen: n/2 comparaisons

Page 11: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme
Page 12: Efficacité des algorithmes Comment choisir parmi les différentes approches pour résoudre un problème? 2 objectifs à atteindre: 1.Concevoir un algorithme

Compromis espace-temps

Deux situations:

1) Lorsqu'on peut réduire le temps de calcul en utilisant plus d'espace mémoire:

Exemple: table de conversion (look-up table).

1) Lorsqu'on peut réduire l'espace mémoire au prix d'un temps d'exécution plus long:

Exemple: compression de données