Adloun

Complexité des programmes

Cours · algorithmique (école d'ingénieur), chapitre 10 · école d'ingénieur, informatique · le début du chapitre, la suite sur Adloun

Objectifs du chapitre

  • Exprimer le temps de calcul d'un programme en fonction de la taille du problème, dans le pire cas.
  • Connaître les notations , et et les principales classes de complexité.
  • Savoir compter : boucles simples, boucles imbriquées, sommes, fonctions récursives.
  • Retrouver la complexité des programmes de programmation dynamique de la première partie.

Dans la première partie, nous avons souvent conclu un calcul par une phrase comme « le temps de calcul est de la forme ». Ce chapitre précise ce que cela veut dire, et pourquoi c'est la bonne façon de comparer des algorithmes.

10.1 Mesurer un algorithme, pas une machine

Le temps d'exécution d'un programme, mesuré en secondes, dépend de beaucoup de choses : la machine, le langage, le compilateur, la charge du système… et bien sûr les données. Pour comparer des algorithmes, on fait abstraction de la machine.

Définition 10.1Taille d'un problème

La taille d'une instance d'un problème est un (ou plusieurs) entier(s) qui mesure(nt) la quantité de données : le nombre de cases d'un tableau, le nombre d'objets et la contenance d'un sac, le nombre de sommets et d'arcs d'un graphe, le nombre de chiffres d'un entier…

On suppose que chaque instruction élémentaire (affectation, comparaison, opération arithmétique sur des int, accès à une case de tableau, appel de fonction) s'exécute en un temps borné par une constante. Le temps de calcul est alors proportionnel au nombre d'instructions élémentaires exécutées.

Définition 10.2Complexité dans le pire cas

Le temps de calcul dans le pire cas d'un programme est la fonction qui, à chaque taille , associe le plus grand temps de calcul du programme parmi toutes les instances de taille .

La complexité du programme est la forme du terme dominant de , constantes multiplicatives oubliées.

Exemple 10.3tri par insertion

Le tri par insertion (chapitre 14) d'un tableau de cases a, dans le pire cas (tableau trié à l'envers), un temps de calcul de la forme

Pour grand, et sont négligeables devant : le terme dominant est . On dit que la complexité est quadratique, et l'on écrit qu'elle est en .

Pourquoi le pire cas ? Parce qu'il donne une garantie : quelles que soient les données, le programme ne sera jamais plus lent. Le cas moyen est parfois plus représentatif (chapitre 14, tri rapide), mais il suppose une hypothèse sur la distribution des données, et il est plus difficile à calculer.

Attention

Le pire cas est le pire à taille fixée. Dire « le pire cas est » n'a aucun sens : on cherche, pour chaque , la plus mauvaise instance de taille .

10.2 Les notations , et

Les fonctions considérées vont des entiers naturels dans les réels positifs.

Définition 10.4Notations asymptotiques

Soient et deux fonctions de dans .

  • s'il existe une constante et un rang tels que ( croît au plus comme ) ;
  • s'il existe et tels que ( croît au moins comme ) ;
  • si et : il existe et tels que ( croît exactement comme ).

L'usage est d'écrire plutôt que , c'est un abus d'écriture.

Exemple 10.5un calcul de

Montrons que est en .

  • Pour tout : . Donc avec , .
  • Pour tout : . Donc avec .
Proposition 10.6Règles de calcul
  • Un polynôme de degré à coefficient dominant strictement positif est en .
  • Les constantes multiplicatives disparaissent : pour .
  • Somme : . C'est la règle « le terme dominant l'emporte ».
  • Produit : .
  • La base du logarithme est sans importance : , donc . On écrit simplement .

Attention

n'est qu'une majoration. Il est vrai que la recherche séquentielle est en … mais c'est une information sans intérêt. Dans ce livre, nous donnons toujours la complexité exacte dans le pire cas, avec .

10.3 Les classes de complexité usuelles

ComplexitéNomExemple
constanteaccès à une case de tableau
logarithmiquerecherche dichotomique (chapitre 12)
linéairemaximum d'un tableau, Zébulon
quasi-linéairetri fusion (chapitre 14)
quadratiquetri par insertion
cubiquearbre binaire de recherche de coût minimum
exponentielleénumération de tous les sous-ensembles

La suite du cours est sur Adloun

Le chapitre en entier, formules et figures comprises, avec le tuteur, les fiches, les QCM et les exercices.

Lire la suite du cours

En accès libre, sans inscription.

Exercices corrigés de ce chapitre

Lire la suite du cours →