Ajout d'informations concernant les instructions élémentaires

master
Rémi LAVERGNE 11 months ago
parent 99ad5da598
commit 3d42c3e186
No known key found for this signature in database
GPG Key ID: CA264B55E97FD220

@ -78,6 +78,11 @@ Les variables d'intérêt pour l'analyse de la complexité sont généralement l
Ce sont des opérations de base, comme l'addition, l'affectation, la comparaison, etc., qui ont un coût constant, noté \( O(1) \). Ce sont des opérations de base, comme l'addition, l'affectation, la comparaison, etc., qui ont un coût constant, noté \( O(1) \).
Dans le calcul, on suppose que le coût de chaque instruction élémentaire est le même. Elles ont un réel impact lorsqu'elles sont exécutées un grand nombre de fois, comme dans les **boucles** *(for, while)* ou les **appels récursifs**. Dans le calcul, on suppose que le coût de chaque instruction élémentaire est le même. Elles ont un réel impact lorsqu'elles sont exécutées un grand nombre de fois, comme dans les **boucles** *(for, while)* ou les **appels récursifs**.
Il peut s'agir des opérateurs d'**affectation** (=) ou d'**opération** (+ - * / > >= <= < and or), ainsi que les fonctions natives comme len ou range. Celles-ci compte **+1** à chaque apparition.
> +0 pour def, for, while, if, else ou return
> +2 pour les opérateurs comme +=, -=, etc...
Ne pas oublié de prendre en compte si certaines instructions sont incluses dans des boucles !
## Calcul de la Complexité ## Calcul de la Complexité
@ -94,8 +99,8 @@ Dans le calcul, on suppose que le coût de chaque instruction élémentaire est
```python ```python
def triBulles(T): def triBulles(T):
for i in range(len(T)-1, 0, -1): # Boucle extérieure for i in range(len(T)-1, 0, -1): # Boucle extérieure (+2)
for j in range(i): # Boucle intérieure for j in range(i): # Boucle intérieure (+1)
if T[j+1] < T[j]: # Comparaison +4 (car 2 accès à un tableau, une comparaison et une addition) if T[j+1] < T[j]: # Comparaison +4 (car 2 accès à un tableau, une comparaison et une addition)
tmp = T[j] # Affectation +2 (un accès et une affectation "=") tmp = T[j] # Affectation +2 (un accès et une affectation "=")
T[j] = T[j+1] # Affectation +4 (2 accès, une affectation et une addition) T[j] = T[j+1] # Affectation +4 (2 accès, une affectation et une addition)
@ -119,7 +124,7 @@ En réalité le calcul nous donne:
> Car on ne s'intéresse qu'au terme dominant, c'est-à-dire le terme qui croît le plus rapidement en fonction de la taille de l'entrée. Les autres termes sont négligés car ils deviennent insignifiants lorsque la taille de l'entrée devient grande. > Car on ne s'intéresse qu'au terme dominant, c'est-à-dire le terme qui croît le plus rapidement en fonction de la taille de l'entrée. Les autres termes sont négligés car ils deviennent insignifiants lorsque la taille de l'entrée devient grande.
Au final la représentation avec matplotib donne quasiment la même chose: Au final la représentation avec matplotib donne quasiment la même chose:
![Tri à Bulles](bubble-sort.png) ![Tri à Bulles](all-sorts.png)
<br> <br>

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Loading…
Cancel
Save