Problème :
données : données en entrée, encodées selon un schéma manipulable par l'ordinateur (format informatique)
question : question sur les données
Objectif : concevoir un algorithme répondant (correctement) à la question.
Une instance d'un problème est définie en fixant un jeu de données en particulier.
Un algorithme produit (plus ou moins efficacement) une réponse à une instance du problème.
La complexité du problème complexité d'un algorithme qui résoud le problème.
La complexité du problème coïncide avec la complexité de son algorithme de résolution le plus efficace.
Pour certains problèmes, on peut trouver la borne inférieure de tout algorithme qui pourra le résoudre.
Exemple : tout algorithme qui recherche l'élément maximum dans un tableau à éléments devra comparer chaque élément
au moins une fois avec un autre. Si un élément échappe à une comparaison, il est potentiellement l'élément maximum et ne
pourra être renvoyé par l'agorithme qui sera faux.
On peut trouver la borne inférieure de tout algorithme de classement qui repose sur des comparaisons binaires.
Étant donné un tableau de éléments distincts : il y a permutations de ces éléments, et une seule permutation
correspondau tableau ordonné.
L'algorithme doit collecter suffisamment d'information en comaprant des paires d'éléments pour trouver cette permutation.
Supposons que l'algorithme ait effectué comparaisons : il ne peut pas discerner plus que cas, puisque les éléments
sont distincts et le résultat de la comparaison est binaire.
Il faut donc que : pour espérer classer le tableau.
En prenant les logarithmes : , soit d'après la formule de Stirling .
On a donc la borne inférieure de la complexité d'un algorithme de classement.
L'existence d'algorithmes comme celui du tri fusion nous fournit la borne supérieure.
On peut donc dire que le problème du tri a une complexité asymptotique en .
1 / 21 100%