RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.

"Complexité" en informatique

15 juin 2002

(cf. "Complexité et complication") 

En informatique, on dit qu’une opération est « complexe » si elle est logiquement possible mais en pratique irréalisable.

Une première forme de « complexité » informatique provient de la représentation des nombres dans la mémoire de l’ordinateur. Celle-ci ne pouvant contenir qu’une quantité limitée de chiffres, les calculs informatisés portent sur un sous-ensemble des nombres rationnels, approximations des nombres réels. La précision des calculs est donc limitée même si le nombre de chiffres que contient la mémoire est élevé. Il en résulte de grandes difficultés mathématiques ([Knuth] vol 2 p. 229).

Une deuxième forme de « complexité » informatique est liée au nombre de calculs élémentaires que nécessite une opération. En notant n le cardinal de l’ensemble sur lequel on travaille, on dira que la « complexité » est linéaire si elle demande de l’ordre de n calculs élémentaires, quadratique si elle en demande de l’ordre de n2, « exponentielle » si elle en demande de l’ordre de en ou, pire, de nn.

Si par exemple il faut réaliser le calcul élémentaire sur chaque couple d’éléments de l’ensemble, la « complexité » est quadratique car le nombre des couples est égal à n(n – 1)/2. S’il faut calculer sur chacune des parties de l’ensemble, la « complexité » est exponentielle car le nombre des parties est égal à 2n. Enfin, si l’on doit calculer sur chacune des permutations des éléments de l’ensemble, leur nombre est n ! (factorielle de n) et la « complexité » est alors de l'ordre de nn car n! ~ (2πn)½(n/e)n (formule de Stirling, [Knuth] vol 1 p. 45).

Certains problèmes à la formulation simple peuvent exiger une durée de calcul de l’ordre de l’âge de l’univers : c’est le cas du « problème du commis voyageur » dès que n atteint quelques dizaines[1] (pour trouver l’itinéraire optimal passant par plusieurs villes il faut calculer la longueur de n! itinéraires).

La « complexité » permet d’évaluer la faisabilité d’un calcul : si n dépasse quelques centaines (c’est le cas de la plupart des bases de données d’une entreprise), un calcul linéaire sera facile, un calcul quadratique difficile et un calcul exponentiel impossible. L’informatique rencontre ici une limite (les traitements impossibles). Le programmeur qualifié arrive parfois à rendre possible un traitement qui, programmé de façon sommaire, aurait été impossible ou difficile : s’il s’agit par exemple de faire un tri, un calcul rustique sera quadratique mais un calcul bien conçu sera d’ordre nLog(n) seulement.

Une troisième forme de « complexité » informatique provient des limites de la logique elle-même : comme l'a démontré Gödel, aucun système logique ne peut contenir la démonstration de toutes les vérités logiques. Le domaine de la pensée pure est donc lui aussi complexe, puisque aucun système fini ne peut en rendre compte (cf. petit résumé du théorème de Gödel : il résulte de ce théorème qu'il est impossible de mettre au point un programme qui serait capable de vérifier tous les programmes). 

*

*  *

La « complexité » informatique n’a rien à voir avec la complexité du réel (sauf sous la dernière des trois formes de « complexité » ci-dessus). En effet, même si l’opération qui consiste à répéter un grand nombre de fois un calcul élémentaire demande un temps très long, elle n’est pas au plan logique plus complexe que le calcul élémentaire lui-même, et celui-ci est aussi simple que l’idée qui a guidé sa conception. Il en est de même pour les difficultés mathématiques liées à la représentation des nombres réels par des nombres rationnels. La « complexité » informatique est un homonyme de la complexité du réel. C’est pourquoi nous avons utilisé les guillemets pour la noter.

Retour à "Sortir de l'embarras"


[1] Si l’ordinateur fait mille calculs par seconde il faudrait une durée égale à l’âge de l’univers (12 milliards d'années) pour trouver, en calculant tous les itinéraires possibles, le meilleur itinéraire entre 22 villes. Si l’ordinateur fait un million de millions (1012) de calculs par seconde, il faudrait cette même durée pour trouver le meilleur itinéraire entre 28 villes.