Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1574 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Les paramètres de la complexité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Les paramètres de la complexité

n°1966474
msedirim
Posté le 16-02-2010 à 12:24:24  profilanswer
 


Bonjour,
 
Pou évaluer la complexité théorique d'un algorithme, est ce que on utilise seulement les paramètres qui sont les entrées de l'algorithme ?
 
Est ce que on peut trouver dans la valeur de la complexité des paramètres qui sont calculés dans l'algorithme ?
 
En général, comment on évalue la complexité théorique d'un algorithme?
 
Merci.

mood
Publicité
Posté le 16-02-2010 à 12:24:24  profilanswer
 

n°1974720
leo++
Chef de file indienne
Posté le 17-03-2010 à 18:37:59  profilanswer
 

Salut
 

msedirim a écrit :


Pou évaluer la complexité théorique d'un algorithme, est ce que on utilise seulement les paramètres qui sont les entrées de l'algorithme ?


 
Qu'est ce que tu entends par ça ? Tu veux parler d'algorithmes avec effets de bord ?
 

msedirim a écrit :


Est ce que on peut trouver dans la valeur de la complexité des paramètres qui sont calculés dans l'algorithme ?


 
A priori je dirai non, mais je crois que je ne comprend pas bien ta question. (c'est quoi ce que tu appelles la complexité ? et c'est quoi ta définition d'un paramètre calculé ?)
 

msedirim a écrit :


En général, comment on évalue la complexité théorique d'un algorithme?


 
Un outil très utilisé en algorithmique est l'ordre de l'algorithme. Il vise à déterminer le temps de calcul (en nombre d'opération) d'un algorithme en fonction de ses arguments. Pour déterminer l'ordre d'un algorithme, on construit à partir de son code le polynome de coût correspondant et on en prend le terme le plus élevé.
 
Par exemple, pour le code:

Code :
  1. int sum(int upBound) {
  2.     int result = 0;
  3.     for(int i = 1; i <= upBound; i++)
  4.         result += i;
  5. }


 
On détermine la complexité en calculant le nombre d'itérations réalisées: il y en a upBound
Opérations = upBound
C'est un polynome de degrés 1, on dit qu'il est d'ordre O(x)
 
Maintenant, si je rajoute une boucle imbriquée,  

Code :
  1. int sum2(int upBound) {
  2.     int result = 0;
  3.     for(int i = 1; i <= upBound; i++)
  4.         for(int j = 1; j <= upBound; j++)
  5.             result += i;
  6. }


 
On obtient un nombre d'opérations = upBound^2, on dit qu'il est d'ordre O(x^2)
 
A partir de ces deux fonctions, je peux calculer la complexité de l'algorithme qui consiste à exécuter sum suivi de sum2; le nombre d'opération effecté est la somme du nombre d'opérations effectuées dans chaque fonction = upBound + upBound^2
La complexité est alors d'ordre O(x^2). On écarte le terme en O(x) car il est négligeable devant le terme en O(x^2) lorsque x tend vers l'infini.
 
Enfin, je peux directement déduire de ces valeurs la complexité du calcul sum(sum2(upBound)), c'est le produit des complexités des deux algorithmes:
Le nombre d'opérations = upBound * upBound^2 = upBound^3
On a donc un algorithme d'ordre O(x^3)
 
C'est une méthode qui donne un bon aperçu de la performance d'un algorithme pour des valeurs infinies.  
En effet, si tu prends des valeurs de taille finie, il sera sans doutes préférable d'avoir un algorithme effectuant x + 0.00001x^5 opérations (ordre O(x^5)) qu'un algorithme "optimisé" effectuant x^2 opérations (ordre O(x^2) ) car le terme en x^5 sera négligeable par rapport au terme en x.

n°1974789
Joel F
Real men use unique_ptr
Posté le 18-03-2010 à 09:31:53  profilanswer
 
n°1974797
leo++
Chef de file indienne
Posté le 18-03-2010 à 09:41:05  profilanswer
 


 

Citation :

Les algorithmes usuels peuvent être classés en un certain nombre de grandes classes de complexité.
 
Les algorithmes sub-linéaires, dont la complexité est en général en O(log n). C'est le cas de la recherche d'un élément dans un ensemble ordonné fini de cardinal n.
 
Les algorithmes linéaires en complexité O(n) ou en O(nlog n) sont considérés comme rapides, comme l'évaluation de la valeur d'une expression composée de n symboles ou les algorithmes optimaux de tri.
 
Plus lents sont les algorithmes de complexité située entre O(n2) et O(n3), c'est le cas de la multiplication des matrices et du parcours dans les graphes.
 
Au delà, les algorithmes polynomiaux en O(nk) pour k > 3 sont considérés comme lents, sans parler des algorithmes exponentiels (dont la complexité est supérieure à tout polynôme en n) que l'on s'accorde à dire impraticables dès que la taille des données est supérieure à quelques dizaines d'unités.
La recherche de l'algorithme ayant la plus faible complexité, pour résoudre un problème donné, fait partie du travail régulier de l'informaticien. Il ne faut toutefois pas tomber dans certains excès, par exemple proposer un algorithme excessivement alambiqué, développant mille astuces et ayant une complexité en O(n1,99), alors qu'il existe un algorithme simple et clair de complexité O(n2). Surtout, si le gain de l'exposant de n s'accompagne d'une perte importante dans la constante multiplicative: passer d'une complexité de l'ordre de n2/2 à une complexité de 1010 n log n n'est pas vraiment une amélioration.


 
Je vois pas trop en quoi ca diffère de ce que j'ai dis  :o

n°2001376
Joel F
Real men use unique_ptr
Posté le 14-06-2010 à 08:28:18  profilanswer
 

leo++ a écrit :


Je vois pas trop en quoi ca diffère de ce que j'ai dis  :o


 
j'ai répondu avant de voir ta réponse, c'ets l'OP qui me faisait saigner des yeux


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Les paramètres de la complexité

 

Sujets relatifs
Le type de la complexitéaide en complexité
Problème de redirection 301 avec paramètresURGENT - Modification des paramètres par défaut d'un graphique croisé
[VBA] Paramêtres cachés mais modifiables[XNA, HLSL][Résolu] Paramètres shader génériques
[Resolu][SOAP][PHP] Utilisation des paramètresComment télécharger ce fichier flash avec des paramètres dans l'url ?
As3 addEventListener + pasage paramètres objet persoWeb Service Axis, inversion paramètres methode
Plus de sujets relatifs à : Les paramètres de la complexité


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR