Files
CONTROLE_DEV51_kara-mosr/reponses.txt

92 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

----------------------------------------EX2---------------------------------------
1-
racineCarree : Temps : 0.09s et on a 10 008 appels. Ca fait donc un temps moyen d'appel de 0.01ms
racineCarreeTab : avec grpof on nous dit que son temps d'execution est de 0s. On a 3 appels qui correspondent aux deux petits tableaux de test que j'ai dans mon main et au tableau
avec 10 000 elements tous plus grand que 1 000 000. Si son temps d'execution est aussi cours c'est parce qu'on appelle racineCarree. Si on prend cela en compte on voit que
racineCarreeTab s'execute sur 30s environ.
On a donc racineCarreeTab qui appel 10 006 fois racineCarree et les 2 autres sont dans le main avec les deux petits test que j'ai mis.
Pour resume on a racineCarreeTab qui ne consomme presque rien car tout est delegue a racineCareeTab qui est appele en boucle pour parcourir le tableau.
2-
Complexite cyclomatioque :
de racineCarree est de 5 car :
1 "if (n < 0)"
2 "if (n == 0 || n == 1) "
3 "while (i <= n / i)"
4 "if ((n % i == 0) && (i == n / i))"
de racineCareeTab est de 2 car on a que la boucle for :
La boucle "for (k = 0; k < size; ++k)"
Complexite Algorithmique :
---------de racineCarree : O(√n)-------------
Si n nest pas un carré parfait : on ne retourne pas avant la fin. Donc la boucle fait exactement ⌊√n⌋ itérations, puis on sort et on renvoie -1
Si n est un carré parfait : on retourne à i = √n donc la boucle fait √n itérations (la dernière est celle qui trouve la racine)
Dans tous les cas, le nombre ditérations est proportionnel à √n
-------- de racineCarreeTab dépend ----------
du nombre déléments dans le tableau qu'on note m
du temps dexécution de racineCarree() pour chaque élément
Et Puisque racineCarreeTab appelle racineCarree() m fois (une fois par élément du tableau) le coût total est la somme des coûts de chaque appel :
On va regarder le pire, c'est celui ou tous les elements du tableau sont proche de l'element le plus grand. Par exemple dans notre exemple avec des valeurs > 1 000 000.
On peut dire que toutes les valeurs sont proches de la plus grandes car a cette echelle de grandeur la difference est minim. On peut donc dire que dans le pire des cas
la complexite est dependante du max (la plus grande valeurs) et du nombre d'appels a la fonction racineCarree
on a comme complexite : O(m * √max)
----------------------------EX4--------------------------------
La complexite cyclomatique de TriSpecial :
1 : if (!in || !out || n == 0)
2 : if (!roots)
3 : for (...) (branche !roots)
4 : if (r == -1) (branche !roots)
5 : for (...) (branche else)
6 : if (r == -1) (branche else)
7 : if (pair)
8 : for (...) (branche pair)
9 : if (i % 2 == 0) (branche pair)
10 : for (...) (branche impair)
11 : if (i % 2 == 0) (branche impair)
Donc on a une complexite de 12 pour TriSpecial
La complexite cyclomatique de TriSpecial :
C'est le meme principe que racineCarreeTab et ca depend du nombre d'appel et de l'element le plus grand
On a O(N * √M) ou est M est le plus grand nombre et N le nombre d'appel.