Qu'est-ce que la complexité algorithmique ? La complexité algorithmique est un concept très important qui permet de comparer les algorithmes afin de trouver celui qui est le plus efficace.
Il existe une notation standard qui s'appelle big O et qui permet de mesurer la performance d'un algorithme.
La complexité d'un algorithme est une mesure du temps[1] requis par l'algorithme pour accomplir sa tâche, en fonction de la taille[2] de l'échantillon à traiter.
On dira d'un problème qu'il est aussi complexe que le meilleur algorithme connu pour le résoudre.
Réponse algorithmique
Pour mesurer le temps d'exécution d'un algorithme, on définit la complexité en temps qui représente le nombre d'étapes qui sont nécessaires pour résoudre le problème pour une entrée de taille donnée.
1 de 27AlgorithmiqueNotion de complexitéFlorent HivertMél :Florent.Hivert@lri.frAdresse universelle :http://www-igm.univ-mlv.fr/˜hivertOutils mathématiques2 de 27Outils mathématiques : analyse élémentaire(Uk)k2Nsuite de terme généralUk,k2N(Uk)k2Kfamille d"indexKN; suite extraite de(Uk)k2NqXk=pUksomme des termesUkoùkvérifiepkq(entiers);lorsquep>q, la somme estvideet vaut 0qYk=pUkproduit des termesUkoùkvérifiepkq(entiers);lorsquep>q, le produit estvideet vaut 1Outils mathématiques3 de 27Identité sur les sommes et produitsqXk=pUk=0@q1Xk=pUk1A+Uq=Up+0@qXk=p+1Uk1APlus généralement, siP(n)est un prédicat :qXk=pUk=qXk=pP(k)est vraiUk+qXk=pP(k)est fauxUkUn exemple très courant :nXk=1Uk=nXk=1kest pairUk+nXk=1kest impairUkIdem pour les produits.Outils mathématiques4 de 27Outils mathématiques : arithmétiqueopérateurs usuels :+ =
Onécrit ainsi "f(n)2X(g(n))» plutôt que "f2X(g)», oùXsignifieO,ou.Par commodité toujours, on écrit souvent " est » plutôt que "2»et on dit souvent " est » plutôt que " appartient ».Exemplenotations asymptotiques (1/2)n2O(n)n2(n)n2(n)7+1=n2O(1)7+1=n2(1)7+1=n2(1)log2n2O(logn)log2n2(logn)log2n2(logn)n+lnn2O(n)n+lnn2(n)n+lnn2(n)n2+3n2O(n3)n2+3n=2(n3)n2+3n=2(n3)Outils mathématiques20 de 27Par commodité, les expressions " image » des fonctions sontsouvent utilisées dans les notations plutôt que leurs symboles.
Onécrit ainsi "f(n)2X(g(n))» plutôt que "f2X(g)», oùXsignifieO,ou.Par commodité toujours, on écrit souvent " est » plutôt que "2»et on dit souvent " est » plutôt que " appartient ».Exemplenotations asymptotiques (1/2)n2O(n)n2(n)n2(n)7+1=n2O(1)7+1=n2(1)7+1=n2(1)log2n2O(logn)log2n2(logn)log2n2(logn)n+lnn2O(n)n+lnn2(n)n+lnn2(n)n2+3n2O(n3)n2+3n=2(n3)n2+3n=2(n3)Outils mathématiques21 de 27On cherche toujours à exprimer toute notation asymptotique àl"aide de fonctions de référence : constante, somme, produit,puissance, logarithme, minimum, maximum Définitions (désignations des complexités courantes)notation désignation(1)constante(logn)logarithmique(pn)racinaire(n)linéaire(nlogn)quasi-linéairenotation désignation(n2)quadratique(n3)cubique(nk), k2N;k2polynomiale(an), a>1exponentielle(n!)factorielleExempleSuite aux résultats précédents, on peut énoncer que le problème ducalcul du plus grand diviseur peut se résoudre en temps au plusracinaire avec un espace constant.Outils mathématiques21 de 27On cherche toujours à exprimer toute notation asymptotique àl"aide de fonctions de référence : constante, somme, produit,puissance, logarithme, minimum, maximum Définitions (désignations des complexités courantes)notation désignation(1)constante(logn)logarithmique(pn)racinaire(n)linéaire(nlogn)quasi-linéairenotation désignation(n2)quadratique(n3)cubique(nk), k2N;k2polynomiale(an), a>1exponentielle(n!)factorielleExempleSuite aux résultats précédents, on peut énoncer que le problème ducalcul du plus grand diviseur peut se résoudre en temps au plusracinaire avec un espace constant.Outils mathématiques21 de 27On cherche toujours à exprimer toute notation asymptotique àl"aide de fonctions de référence : constante, somme, produit,puissance, logarithme, minimum, maximum Définitions (désignations des complexités courantes)notation désignation(1)constante(logn)logarithmique(pn)racinaire(n)linéaire(nlogn)quasi-linéairenotation désignation(n2)quadratique(n3)cubique(nk), k2N;k2polynomiale(an), a>1exponentielle(n!)factorielleExempleSuite aux résultats précédents, on peut énoncer que le problème ducalcul du plus grand diviseur peut se résoudre en temps au plusracinaire avec un espace constant.Outils mathématiques22 de 27Aucun progrès technologique (modèle de machine standard) nepermet à un algorithme de changer de classe de complexité.Exemple (tyranie de la complexité)Effets de la multiplication de la puissance d"une machine par 10,100 et 1000 sur la taille maximale N des problèmes que peuventtraiter des algorithmes de complexité donnée :Outils mathématiques22 de 27Aucun progrès technologique (modèle de machine standard) nepermet à un algorithme de changer de classe de complexité.Exemple (tyranie de la complexité)Effets de la multiplication de la puissance d"une machine par 10,100 et 1000 sur la taille maximale N des problèmes que peuventtraiter des algorithmes de complexité donnée :complexité101001000(logn)N10N100N1000(pn)102N104N106N(n)10N100N1000N(nlogn)<10N<100N<1000N(n2)'3N10N'32N(n3)'2N'5N10N(2n)'N+3'N+7'N+10Outils mathématiques23 de 27Propriétés des notations asymptotiquesPropositionSoient f;g;h;l des fonctions positives et a;b2R+.X désigne n"importe lequel des opérateur O;ouSi f2X(g)et g2X(h)alors f2X(h);Si f;g2X(h)alors af+bg2X(h);Si f2X(h)et g2X(l)alors fg2X(hl);Si f2(h)alors pour tout g on a af+bg2(h);Outils mathématiques24 de 27Cas des polynômesPropositionUn polynôme est de l"ordre de son degré.
Plus précisément siP=dXi=0cixiavec cd6=0(c"est-à-dire que d est le degré de P) alorsP2(xd).Par exemple, 5x3+3x2+100x+122(x3):Outils mathématiques25 de 27RécapitulatifComplexité Vitesse Temps Formulation ExempleFactorielle très lent proportionnelàNNN!Résolution par recherche exhaus-tive du problème du voyageur decommerce.Exponentielle lent proportionnelà uneconstanteà la puissanceNKNRésolution par recherche exhaus-tive du Rubik"s Cube.Polynomiale moyen proportionnelàNà unepuissancedonnéeNKTris par comparaison, comme le trià bulle (N2).Quasi-linéaire assez rapide intermédiaireentre linéaireet polynomialNlog(N)Tris quasi-linéaires, comme leQuicksort.Linéaire rapide proportionnelàNNItération sur un tableau.Logarithmique très rapide proportionnelau logarithmedeNlog(N)Recherche dans un arbre binaire.Constante le plus rapide indépendantde la donnée1 recherche par index dans un ta-bleau.Outils mathématiques26 de 27Calcul de complexité dans les structures de contrôleInstructions élémentaires (affectations, comparaisons) sont entemps constant, soit en(1).Tests : sia2O(A),b2O(B)etc2O(C)alors(ifathenbelsec)2O(A+max(B;C))Tests : sia2(A),b2(B)etc2(C)alors(ifathenbelsec)2(A+min(B;C))Outils mathématiques27 de 27Cas des boucles imbriquéesBoucles siai2O(Ai)(idem;) alors(forifrom1tondoai)2OnXi=1(Ai)!LorsqueAiest constant égal àA, on a(forifrom1tondoai)2nO(A)Retenir (Boucles imbriqués)Cas particulier important : si Ai2O(ik)(idem;) alors(forifrom1tondoai)2O(nk+1)