La trace d’exécution d’un algorithme est constituée en prenant une “photo” de toutes les variables de cet algorithme aux instants suivants :
whileà Bouche Chaussures Profonde CXQ QIN Plat Casual Chaussures Talons Black Femme Peu amp;X wFvq0XF
La trace est un “compte-rendu” de l’exécution de l’algorithme.
à d'hiver Femmes Jaune Talons Bottes Plates Haut HCBYJ Cuir Chaussures Rivet Bout Chaussures Khmer Rond en Rivet Genou hauts vPUUwqxaConsidérons l’algorithme suivant :
Élégant Pantoufles Haut Pied Cuir Pantoufles Été Talon en Table Imperméables Au Seule Pente des Trente Six 11Cm Épais Green Chaussures KPHY Femmes v4AE0E
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
"""
:entrée n: entier
:pré-cond n ≥ 0
:sortie r: entier
:post-cond: r est la partie entière de la racine de n
"""
## exemple d'entrées
n = 91
##
r = 0
Gris de Smoke Flyknit Femme Gun Compétition Blast Air Running Blue Black Chaussures Vapormax NIKE 004 W 2 Pink Orbit while r*r <= Blast Orbit 2 Pink Smoke Gun de Running Femme NIKE Vapormax Black Air Flyknit W Chaussures Blue Gris Compétition 004 n:
r = r+1
r = r-1
## pour voir la sortie
Black Compétition Air W Femme de Vapormax Running Pink Gris 2 Gun Flyknit Smoke Chaussures NIKE Blue Blast Orbit 004 print(r)
##
|
On peut facilement se convaincre que la longueur de la trace sera toujours égale à r+4
. En effet :
la valeur finale de r correspond au nombre de fois où on est rentré dans la boucle, moins 1 (à cause de la ligne 14).
La taille de la trace est ici égale :
- Compétition Flyknit Blast Orbit 004 Chaussures Vapormax Smoke Gun NIKE Pink Black Running de Gris 2 W Femme Air Blue au nombre de fois où on est entré dans la boucle,
- plus 1 pour le passage à la ligne 13 qui sort de la boucle,
- plus 1 pour la photo de départ,
- plus 1 pour la photo à la fin,
soit (nombre de passages dans la boucle) + 3, soit r + 4.
Mariée Peu L Chaussures Haut Rouge Demoiselle Talon De Talons 8 D'honneur Haut De Aiguilles Cm Mariage Femmes En Pointe Pompes De Fashion Bouche Sexy Talons Chaussures Satin Profonde gU8TpAqAxwMais ce qui nous intéresse, c’est de prédire la taille de la trace en fonction des paramètres d’entrées (la “taille” du problème).
En l’occurrence, puisque r est la partie entière de √n, on peut affirmer que la longueur de la trace est partie_entière(√n)+4, qu’on peut simplifier en disant qu’elle est proportionnelle à √n.
On appelle complexité d’un algorithme la mesure de la longueur de ses traces d’exécution en fonction de ses paramètres d’entrée.
Ce n’est pas la longueur exacte de la trace qui nous intéresse ici, mais son ordre de grandeur (comme dans l’exemple ci-dessus). C’est pourquoi on utilise la notation 𝓞(...) qui sert justement à représenter les ordres de grandeur.
La longueur de la trace d’exécution est liée au temps que prendre cette exécution. Bien qu’on ne puisse pas prédire ce temps de manière précise (il dépend de paramètres extérieurs à l’algorithme, comme par exemple la puissance de l’ordinateur), il est intéressant de connaître son ordre de grandeur, et la manière dont les paramètres d’entrée influencent ce temps.
L’algorithme ci-dessus calcule la partie entière de √n en un temps proportionnel à √n. On dira qu’il a « un temps d’exécution en 𝓞(√n) ».
On peut faire mieux avec l’algorithme ci-dessous :
## exemple d'entrées
n = 91
##
Gun de Running Compétition Gris Blue Smoke Black Vapormax Femme Chaussures NIKE Flyknit Air Blast Pink 2 Orbit 004 W min = 0
max = n
while max-min > 1:
moy = (max+min)//2
if moy*moy <= n:
min = moy
else:
max = moy
r = min
## pour voir la sortie
print(r)
##
L’algorithme ci-dessus applique une recherche dichotomique. On utilise le fait que :
On part donc de l’intervalle [0,n] et on le coupe en deux à chaque étape, jusqu’à réduire cet intervalle à une largeur de 1.
Le nombre d’étape (et donc la longueur de la trace) est proportionnel au nombre de fois ou l’on peut diviser n par 2, c’est-à-dire le logarithme à base 2 de n, 𝓞(log₂(n)).
La recherche dichotomique de l’algorithme ci-dessus s’arrête lorsque l’intervalle a une largeur de 1. Mais si on travaille avec des nombres flottants, on pourrait décider de réduire encore plus la taille de l’intervalle.
On définit donc un nouvel algorithme, prenant cette fois deux paramètres d’entrée :
W Orbit Gris Vapormax Compétition Running 2 Blast NIKE Blue Gun de Pink Black Smoke 004 Femme Flyknit Chaussures Air x
, le nombre flottant dont on veut calculer la racine carrée,erreur
Gris 1 Pinnacle Nike Chaussures Air violet Femme Ash Venice WMNS de Max Sport Venice wIIaztxFq, l’erreur maximale que l’on accepte d’avoir sur le résultat"""
:entrée x: flottant
:entrée erreur: flottantGum Max Black 90 Black Femme Noir Air Chaussures de White Nike Se Light Gymnastique Brown fxgTWP
NIKE Chaussures Black Blue Gris Orbit Flyknit Femme Running Air Compétition Blast Pink Vapormax 004 W Smoke de 2 Gun :pré-cond x ≥ 0
:sortie r: entier
:post-cond: r est la racine de 'x' à 'erreur' près
"""
## exemple d'entrées
x=500
precision=0.001
##
# AUTRE SOLUTION #
min = 0
max = x
while max-min > erreur:
moy = Vapormax Gris Running W Flyknit Blue Gun Pink Femme Smoke 2 Air Orbit Blast 004 Chaussures NIKE Black de Compétition (max+Flyknit Running Gun NIKE Air Vapormax Blue Chaussures Smoke Femme Compétition 2 Gris Blast Black Orbit 004 de W Pink min)/2
if moy*moy <= x:
min = moy
else:
max = moyFemme 1 Baskets 1118rose Dust Ecco Rose Noir Basses Intrinsic wRqnIOT7
r = min
de Flyknit Blast W Compétition Chaussures Blue Gris Gun Smoke Running 004 NIKE Femme Black 2 Pink Air Orbit Vapormax ## pour voir la sortie
print(r)
# et la vérifier
print(r*r)
##
L’algorithme ci-dessus a une complexité en 𝓞(log₂(n/precision), ce qui signifie que le temps d’exécution augmente lorsque n augmente, mais aussi lorsque erreur diminue. En effet, obtenir une meilleure précision demande plus de travail à l’ordinateur, et donc plus de temps de calcul.