PDFprof.com Search Engine



Complexité dun algorithme

PDF
Images
List Docs
  • Comment déterminer la complexité d'un algorithme ?

    La complexité de cet algorithme est dite quadratique.
    Ce sera le cas de tous les algorithmes avec T(n)=an2+bn+c T ( n ) = a n 2 + b n + c où a , b et c sont des réels.

  • Qu'est-ce que la complexité en informatique ?

    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.

  • Comment calculer la complexité d'un programme ?

    La complexité linéaire
    Sa technique est simple : il tourne la molette du premier chiffre jusqu'à entendre un "clic".
    Il sait alors que le chiffre est bon et passe au suivant.
    Il peut donc trouver les bons chiffres un par un, sans avoir à se soucier des autres.

  • 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.
L'analyse de la complexité d'un algorithme consiste en l'étude formelle de la quantité de ressources (par exemple de temps ou d'espace) nécessaire à l'exécution de cet algorithme.

Complexité dun algorithme
Notion de complexité algorithmique
Algorithmes et complexité
Conception dalgorithmes Principes et 150 exercices non corrigés
ANALYSE DALGORITHMES
MEC6405-Analyse Expérimentale des contraintes
Module  Contraintes & Déformations
Méthodologie danalyse des contraintes résiduelles par diffraction
Analyse des contraintes résiduelles par diffraction des rayons X
Cours de résistance des matériaux
Resistance des materiaux de base
Next PDF List

Complexité dun algorithme

Chapter 5Complexit´e d"un algorithme?Important :Ce chapitre est beaucoup plus de l"informatique que des math´ematiques etse prˆete mal `a des notes succinctes comme le reste du cours.

En cons´equence une partie desconsid´erations du coursne sont pas pr´esentes ci-dessous.5.

1) IntroductionD´efinition 1(Algorithme)Unalgorithmeest un proc´ed´e automatique pour r´esoudre unprobl`eme en un nombre fini d"´etapes.?Le but de ce chapitre est de donner des outils pour comparer diff´erentes solutions algorith-miques `a un probl`eme donn´e.?Pour quantifier les performances d"un algorithme on doit se munir d"une notion detaillesur les entr´ees.?Lacomplexit´ed"un algorithme est la quantit´e de ressources n´ecessaires pour traiter desentr´ees.

On la voit comme une fonction den, la taille de l"entr´ee.?Les principales ressources mesur´ees sont letemps(nombre d"instructions utilis´ees) etl"espace(quantit´e d"espace m´emoire n´ecessaire).?On distingue plusieurs types d"analyses de complexit´e : l"analyse dans lemeilleur des cas,lepire des caseten moyenne.

Pour ce cours on ´etudie exclusivement le pire des cas.

DoncsiT(A) est le nombre d"instructions n´ecessaires pour que l"algorithme fasse ses calculs surl"entr´eeA, on s"int´eresse `a la suite (tn)n?Nd´efinie partn= max|A|=nT(A),o`u|A|est la taille de l"entr´eeA.?Il n"est souvent pas pertinent d"essayer de quantifier trop pr´ecis´ementtn, vu qu"on raisonneau niveau de l"algorithme et non d"une implatation.

On se contente donc d"estimertnavecun ordre de grandeur en Θ ouO. Un r´esultat typique : la complexit´e de l"algorithme de tripar insertion est enO(n2).12CHAPTER 5. COMPLEXIT´E D"UN ALGORITHME5.

2) Principes g´en´eraux?(ligne la plus effectu´ee)La fa¸con la plus simple d´evaluer la complexit´e d"un algorithmeest la suivante : un programme est constitu´e d"un nombre fini de lignes.

Appelons-les?1`a?k.Soitn1 nkle nombre de fois qu"elles sont effectu´ees. La complexit´e de l"algo est??ini.Soit?jl"une des lignes qui est effectu´ee le plus souvent.

Si toutes les lignes s"effectuent entempsO(1), la complexit´e de l"algorithme est major´ee parknjO(1) soitO(nj).?Attention aux instructions qui appellent d"autres fonctions et qui ne s"´ex´ecutent pas entemps constant.?Quand le programme contient une ou plusieurs boucles imbriqu´ees, on se retrouve `a estimerdes sommes.

On peut souvent utiliser le th´eor`eme suivant.Th´eor`eme 2(Sommation)Soit(fn)n≥0et(gn)n≥0deux suites positives, avecfn? O(gn).On suppose de plus que?ni=0gin"est pas toujours nul.

Alorsn?i=0fi=O?n?i=0gi?.Plus g´en´eralement, siα:N→Nest une application croissante qui tend vers l"infini eta?N:α(n)?i=afi=O((α(n)?i=agi)).?On en d´eduit le r´esultat suivant qui est tr`es utilis´e en pratique, vu que les complexit´es ontsouvent cette forme :Th´eor`eme 3(nalnbn)Soit(fn)n≥0une suite telle quefn? O(nalnbn)aveca,b?R+.Alors?ni=0fi? O(na+1lnbn).

Le r´esultat est encore vrai si on remplace lesOpar desΘ.5.

3) Classes de complexit´es classiquesOn voit souvent apparaˆıtre les complexit´es suivantes :• O(logn) Ce sont des algorithmes tr`es rapides.

Exemples typiques : recherche di-chotomique, exponentiation rapide,etc.• O(n) (on ditlin´eaire).

Typiquement quand on parcourt un tableau ou une liste unnombre born´e de fois : recherche dans un tableau, minimum d"une liste,etc.• O(nlogn).

Vous l"avez principalement vu pour les algorithmes efficaces de tri : trirapide, tri fusion, tri par tas,etc.Cette complexit´e apparaˆıt r´eguli`erement lorsque l"on faitdu "diviser pour r´egner".• O(n2) (on ditquadratique).

Quand on manipule des tableaux `a deux dimensions, ouqu"on effectue un assez grand nombre de calculs sur un tableau `a une dimension : somme dedeux matrices, transpos´ee d"une matrice, tri insertion, tri bulle, tri selection,etc.5.4.

TROIS EXEMPLES IMPORTANTS35. 4) Trois exemples importants5.4.

1) Dichotomie?On veut chercher si un entierxest dans un tableau tri´eTde taillen.int dicho(int *t, int n, int x) {int a,b,mid;a = 0; b = n;while(a <= b) {mid = (b+a)/2;if (t[mid] == x)return 1;if (t[mid] < x)a = mid + 1;elseb = mid - 1;}return 0;}Th´eor`eme 4La complexit´e de l"algorithmedichoest enO(logn).5.4.

2) Exponentiation rapide?On veut calculerxn, o`un?Nmesure la taille de l"entr´ee.float puissance(float x,int n) {if (n==0)return 1;if (n&1)return x*puissance(x,n-1);return puissance(x*x,n/2);}Th´eor`eme 5La complexit´e de l"algorithmepuissanceest enO(logn).5.4.

3) Sch´ema de H

orner?On veut calculerP(x), o`uxest un r´eel (float) etPest un polynˆome de degr´en, r´epr´esent´epar un tableau : siP(X) =a0+a1X+ +anXn, alors pour touti? {0, ,n}on aP[i] =ai.float Horner(float P[], int n, float x) {int i; float r = P[n];for(i=n-1;i>=0;i--)r = (r*x)+P[i];return r;}4CHAPTER 5.

COMPLEXIT´E D"UN ALGORITHMETh´eor`eme 6La complexit´e de l"algorithmeHornerest enO(n).