Compte Rendu (TAARABTI Imane) FINAL2

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 17

Université Abdelmalek Essaâdi

Faculté des Sciences et Techniques d’Al-Hoceima


Filière : MST-SER – S3
Année universitaire 2020/2021

Module : Algorithmique Avancée et HPC

Compte rendu de travaux pratique :Python

Réalisé par : Encadré par :


TAARABTI Imane Prof. EL Ghalbzouri Mohammed

2020/2021
Sommaire
Liste des Figures..............................................................................................................................3
Introduction......................................................................................................................................5
I. Le langage python.................................................................................................................5
1. Défintion...........................................................................................................................5
2. Utilisation de python.........................................................................................................5
3. Module de temps sous Python..........................................................................................5
II. Travaux Pratiques.................................................................................................................7
1. Puissance...........................................................................................................................7
2. La différence entre tri par insertion et tri à bulles (Insertion sort vs Bubble Sort).........14
A. Tri à bulles......................................................................................................................14
B. Tri par insertion...............................................................................................................15
C. La rapidité:.....................................................................................................................16
Conclusion.....................................................................................................................................17

2
Liste des Figures

Figure 1: Programme de fonction time......................................................................7


Figure 2:Programme de fonction clock()..................................................................8
Figure 3:fonction range.............................................................................................9
Figure 4:Programme de T1........................................................................................9
Figure 5:Programme de T2........................................................................................9
Figure 6:compteur de la complexité linéaire...........................................................10
Figure 7:compteur de la complexité algorithme binaire..........................................11
Figure 8:compteur de la complexité linéaire...........................................................11
Figure 9:compteur de la complexité algorithme binaire..........................................12
Figure 10:le temps de calcul pourn=10(O(n)).........................................................13
Figure 11::le temps de calcul pourn=1 (O(log(n))).................................................13
Figure 12:programme tri à bulles............................................................................15
Figure 13: programme tri par insertion...................................................................16
Figure 14:: programme tri par à bulles et tri par insertion(temps de réponse)........16
Remerciements

Au terme de ce travail je tiens à exprimer mes remerciements à Mr. GHABZOURI


qui nous a présenté cette opportunité pour améliorer notre connaissance dans le
domaine d'informatique.
Introduction :

Les instruction suivantes permettent, en faisant appeler la fonction time() (ou clock()) du module
time sous python, de retourner et d’afficher le temps d’exécution (la complexité temporelle) d’un
programme en secondes et du type float.

I. Le langage python :

1. Défintion

C'est un langage objet, de nouvelle génération, pseudo-interprété, portable. Il est libre, ouvert,
gratuit. De nombreuses “ bibliothèques ” sont disponibles sur internet. L'auteur de ce langage est
Guido van Rossum. Son aspect proche de l'algorithmique fait qu'il a été choisi en de nombreux
endroits pour l'enseignement. Mais Python est aussi utilisé dans le « monde réel » pour des
applications : moteur de recherche Google, Youtube, laboratoires de recherche (CNRS, INRIA,
Universités…), agences spatiales (NASA…), jeux vidéo, cinéma, fnance, etc. Il est entre autres
utilisé dans de nombreuses entreprises pour de l'informatique d'instrumentation (collecte et
analyse de données).

2. Utilisation de python

On peut utiliser python depuis une fenêtre de terminal (ou console) ou bien, on peut passer par
un environnement de développement (IDE - Interactive Développement Environnent) c'est à dire
un éditeur de texte muni de différentes fonctions pour faciliter la programmation.

3. Module de temps sous Python :

Le module time Python offre la possibilité de lire, Représenter et réinitialiser les informations de
temps de nombreuses façons.

Fonction de module time :

a. Temps temps() :

 time()=> nombre en virgule flottante.


 Retourne l'heure actuelle en secondes depuis l'époque.
 Des fractions de seconde peuvent être présentes si l'horloge système les fournit.
b. Time clock() :
 La méthode clock () renvoie le temps processeur actuel sous forme de nombre virgule
flottante exprimé en secondes sous Unix.
 Sous Windows, cette fonction renvoie le nombre de secondes écoulées depuis le
premier appel de cette fonction sous forme de nombre virgule flottante, basé sur la
fonction Win32 QueryPerformanceCounter.

6
II. Travaux Pratiques :

1. Puissance :

Q1.Tester la syntaxe ci-contre pour différentes valeurs de factoriel :


For n = 970 :

 time() :

Figure 1: Programme de fonction time


 clock() :

Figure 2:Programme de fonction clock().

 la fonction Clock () et plus rapide que la fonction time ()


Q2. la complexité des deux programmes :
La complexité de 1 ére programme et :
T(n)= 0.001994609832763672
La complexité de 2 éme programme et :
T(n)= 0.001439199999936136
Q3 .La Comparaison des deux complexités T1(n) et T2(n)
 Code :

Figure 3:fonction range.

 La complexité de T1(n) :
 Code :

Figure 4:Programme de T1.

 La complexité de T2(n) :

Figure 5:Programme de T2.

On observe que le temps d’exécution de T1(n) est très grand par rapport à T2(n).
Q4 : Que fait programme à chaque passage pour exécuter le cas : x=3 et n=11 :
Puissance1(3,11) Puissance2(3,11)
Passage1 3*311-1 3* 311/2*311/2
Passage2 3*310-1 3*3*35/2*3*35/2*35/2
Passage3 3*39-1 3* 3*3*32/2*32/2*3*32/2*32/2
*3*3*32/2*32/2*3*32/2*32/2
Passage4 3*38-1 3*3*3*3*3 *31/2*3*31/2*31/2*3*3*31/2*31/2*3*31/2*
1/2

31/2*3*3*3*31/231/2*3*31/2
*31/2*3*3*31/2*31/2*3*31/2*31/2

Passage5 3*37-1
Passage6 3*36-1
Passage7 3*35-1
Passage8 3*34-1
Passage9 3*33-1
Passage10 3*32-1
Passage11 3*31-1
Passage12 3*31-0

Q5 : les nombres d’opérations effectuées dans chaque programme :


 Pour la complexité linéaire O (n), on a 12 opérations.
 Pour la complexité binaire O (log n), on a 5 opérations.
Q6. On Vérifie les résultats en utilisant un compteur :
 La complexité linéaire
Le programme on utilisant un compteur :

 La complexité binaire Figure 6:compteur de la complexité linéaire.


:

Le programme on utilisant un compteur :


Figure 7:compteur de la complexité algorithme binaire.

Le nombre d’opérations effectuées pour x=2 et n=263 en utilisant ce même compteur :


Compteur de la complexité linéaire :

Figure 8:compteur de la complexité linéaire.

Le nombre d’opération début de 1 jusqu’à 264.


 Compteur de la complexité algorithme binaire :

Figure 9:compteur de la complexité algorithme binaire.

Q7. Soit x=10, mesurez pour chaque programme le temps de calcul pour les valeurs de n
ci-dessous :

 Programme de O(n)

Exemple de n=10 :
Figure 10:le temps de calcul pourn=10(O(n)).

 Programme de O (log(n)) :
Exemple de n=1 :

Figure 11::le temps de calcul pourn=1 (O(log(n))).

Les résultats dépendent de l'ordinateur sur lequel ces fonctions sont testées.
Q8 On Tracer sous Excel les deux courbes de complexités associées à chaque algorithme :
La courbe de Complexité :

Q9. On remarque que : les courbes de 2ème programme (puissance 2) est presque
linéaire et plus grand ou majore le 1er programme (puissance 1).

Q10. La différence entre la complexité étudié au cours et cette complexité


expérimentale c’est que la complexité du cour c’est l’évaluation de nombre d’opérations
effectué par un algorithme, c’est une complexité temporelle et n’est pas précise on calcule
une valeur proche à la complexité seulement, au pire et au meilleur cas par contre la
complexité expérimentale nous donne le cout par rapport le temps effectué et même
l’espace mémoire utilisé et la largeur du bande passante et nous donne la valeur exacte.
Pour moi je préfère la dernière parce qu’il est facile à trouver et elle ne prend pas du
temps.

2. La différence entre tri par insertion et tri à bulles (Insertion sort vs Bubble Sort) :

A.Tri à bulles :

Le tri à bulles est un algorithme de tri très simple dont le principe est de faire remonter à
chaque étape le plus grand élément du tableau à trier, comme les bulles d’air remontent à la
surface de l’eau (d’où le nom de l’algorithme).
Figure 12:programme tri à bulles.

B.Tri par insertion :

Le principe est très simple : c’est l’algorithme qu’utilise naturellement l’être humain pour
trier des objets comme par exemple des cartes à jouer.

On procède en plusieurs étapes. On suppose qu’à l’étape ii, les éléments d’indice 0 à i−1 du
tableau sont déjà triés et on insère alors l’élément d’indice ii à sa place parmi les éléments
précédents.

L’algorithme du tri par insertion n’est utile que pour les petits éléments, car elle nécessite
plus de temps pour trier un grand nombre d’éléments.
Figure 13: programme tri par insertion.

C. La rapidité:

le tri par insertion est deux fois plus rapide que le tri par bulles.

Figure 14:: programme tri par à bulles et tri par insertion(temps de réponse)..
CONCLUSION

Ce travail nous a permis d’appliquer une diversité d’outil que nous avons déjà eu l’occasion de
voir dans le cours, ce qui nous a permis d’évaluer nos acquis théoriques et avoir ’expérience dans
la conception d’algorithmes précisément le calcul de complexité.

Vous aimerez peut-être aussi