je suis en train de préparer mon rattrapage de complexité, et j'ai un peu de mal à me remettre dans le bain. Je voudrais refaire l'exam de la première session que j'avais à priori raté.
Voici donc le premier exo de cet exam:
Soit l'algo suivant:
- Code: Tout sélectionner
Pour i=1...n faire
Pretraitement(i)
Pour j=1....n faire
Traitement(i,j)
fin pour
fin pour
Cet algorithme repose sur deux procédures. On souhaite étudier sa complexité globale lorsque la complexité de ces deux procédures varient afin de choisir la meilleure combinaison des deux.
On note P(i) la complexité de Prétraitement et T(i,j) la complexité de Traitement.
Plusieurs options:
a-P(i)=i*n et T(i,j)=j
b-P(i)=1 et T(i,j)=i*j
c-P(i)=i et T(i,j)=i+j
d-P(i)=n et T(i,j)= log2(j) (ce qui revient à dire ln(j) sauf erreur de ma part).
Dans chacun des cas ci dessous je dois déterminer la complexité de l'algorithme et donner son ordre de grandeur.
Bien, alors je ne sais plus ce que j'avais fait le jour de l'exam, mais aujourd'hui afin de résoudre le problème je pense que je commencerais par exprimer la complexité en fonction de P et T.
Soit:
- Code: Tout sélectionner
Pour j=1....n faire // n
Traitement(i,j) // T(i,j)
fin pour
On a donc pour cette boucle une complexité C de n*T(i,j)
- Code: Tout sélectionner
Pour i=1...n faire // n
Pretraitement(i) //P(i)
[...] // C
fin pour
Cette programme a donc une complexité générale de C' de n*[P(i)+n*(T(i,j))]
Et donc par la suite pour exprimer la complexité de chacun des cas il suffit de remplacer par les valeurs de P et T données.
Est ce la bonne méthode ? Par ailleurs je ne vois pas ce qui est attendu par ordre de grandeur; pour moi en donnant la complexité on donne l'ordre de grandeur également....
A partir de cela, il faut déterminer quelle est la meilleure solution en terme de complexité.
Il suffit de regarder lequel est le plus petit entre les polynôme fonction de n obtenu Ca Cb Cc Cd
En rappel on me note que somme des i=1 à n de i vaut n(n+1)/2; mais je ne vois pas vraiment ou l'on en a besoin; donc je pense que j'ai un truc qui cloche dans mon raisonnement.
Voilà pour le premier exo, je passerais à la suite lorsque celui ci sera bouclé^^
