Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Tris.
Chapitre annexe. Récursivité
Initiation à la programmation et algorithmique cours 2
Algorithmes et structures de données avancés
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Les Algorithmes de tri.
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Exercice Notre programme s'exécute en 10 secondes sur A, qui dispose d'une horloge à 100Mhz. Nous tentons d'aider un concepteur à construire une machine.
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Chap. 1 Structures séquentielles : listes linéaires
Stabilité des systèmes linéaires continus
Stabilité des systèmes linéaires continus
5. Les structures répétitives
8. Les tableaux P. Costamagna – ISEN N1.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Section VI Structures répétitives (suite)
Utilisation des tableaux
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Conception et analyse des algorithmes
Structures de données linéaires
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Les éléments de base de l’algorithmique
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Python La structure itérative
Methode de Tri efficace
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
Algo-Prog en Ada TD1 2 IMACS Romaric GUILLERM
FICHIERS : Définition : Algorithme général:
Algorithme de Bellman-Ford
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Architecture et technologie des ordinateurs II
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
8PRO107 Éléments de programmation
Efficacité des algorithmes
Les Algorithmes de Tri Introduction Tri par Sélection
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
ASI 3 Méthodes numériques pour l’ingénieur
Programmation linéaire en nombres entiers : les méthodes de troncature
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Animateur : Med HAIJOUBI
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
La géométrie tropicale
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
ITI1520 Lab #8: Récursivité Gilbert Arbez, Mohamad Eid, Daniel Amyot, Sylvia Boyd, Diana Inkpen et Alan Williams.
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Algorithmes de tri et de recherche
Programmation linéaire en nombres entiers
Cours 4 - Trois algorithmes de recherche dans un tableau
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Cours LCS N°4 Présenté par Mr: LALLALI
Les fonctions de référence
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Cours 5 - Trois algorithmes de tri d'un tableau
Post-optimisation, analyse de sensibilité et paramétrage
Exemple d’utilisation de l’outil de profilage prof La commande prof de Unix.
CSI2510 Structures de données et algorithmes Analyse des algorithmes
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmique Boucles et Itérations
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage proposées sont utilisées. On compile le programme de testes et mesures,puis on insère les procédures de tri ainsi transformées dans leurs endroits indiqués et on fait les changements nécessaires pour que le programme tient compte des procédures insérées et puisse les mesurer. Après l’avoir compiler on exécute le programme,ce dernier nous permet de choisir la procédure a mesurer et il propose en suite d ’effectuer des mesures selon la taille du tableau,on choisit alors les tailles 100,200,..,1000, et aussi selon la forme des données, on choisit 1 mesure pour chaque forme possible. Les résultats sont sauvegarder dans un fichier de notre choit. Pour pouvoir comparer ces procédures pour chaque procédure et chaque forme de tableau correspondante on trace le graphe comprenant toutes les courbes où chaque courbe représente le nombre d’opération comptabilisées par un compteur en fonction de la taille du tableau ainsi que le nombre total de ses opérations. Pour la procédure Tri_comptage certains compteurs ne sont pas insérés, la courbe représentant le total dans ce cas n ’est alors pas signifiante de point de vu avec les autres. On obtient ainsi les graphes suivants :

On ne s’intéressera qu’aux deux tri suivant : -Tri_bulle -Tri_extraction qui semblent intéressants par leurs façon de traiter les données et surtout par leurs temps d ’exécution qui peuvent varier de façon proportionnelle ou pas par rapport à la taille des éléments à trier.

D ’après les courbes visualisés, pour le Tri_bulle,dans le cas ou tous les éléments sont identiques ou en ordre croissant,les courbes sont linéaires avec un temps d ’exécution (7 000 pour une taille de 1000) négligeable devant le cas où les éléments sont en ordre décroissant ou quelconque ( pour une taille de 1000 dans le cas décroissant et pour une taille de 1000 dans le cas quelconque) où les courbes sont plutôt de forme exponentielle. Par contre pour le Tri_extraction, les courbes sont de forme exponentielle pour chaque forme des données et le temps d ’exécution et le même pour chaque cas. ANALISE Pour le Tri_bulle, quant les élément sont identiques ou en ordre croissant le tableau est trié, la procédure compare chaque deux éléments successifs qui sont tous en ordre,donc aucun changement n ’est fait, la variable echange reste de valeur faux, par conséquent le corps de la boucle est exécuté une seule fois, ce qui explique le faible temps d’exécution. On a pour un tableau à n élément : coût Tri_bulle = coût repeter + tappel =1(taff + top + coût for ) + tappel =taff + top + tappel +2 taff +tcomp (n-1) * (taff + 2top + tcomp + tcompelem + 2 tacc_tab + coût si) coût si =0 car le tableau est trié. Donc coût tri_bulle < 7 t +(n-1)(7 t) <7 t n (on retrouve bien l ’équation de la droite du total visualisée dans le graphe ) Cette fonction appartient a O(n) ce qui explique sa linéarité.

Tandis que pour un tableau non trié,on passe par la boucle REPEAT plusieurs fois car à chaque fois le tableau est juste trié partiellement, le nombre de fois que REPEAT est exécuté nb varie proportionnellement avec le nombre d ’éléments n. donc coût Tri_bulle = (6 t + (7t +c ))+t avec c dans {0,10}. Cette formule contient une somme d’une somme, elle permet donc d ’expliquer la forme exponentielle des courbes et le temps d ’exécution très élevé. On peut donc dire que Tri_bulle est efficace seulement quant le tableau est suffisamment arrangé. Quant à Tri_extraction, elle utilise deux boucles FOR imbriquées, le nombre de fois qu ’on passe par chaque procédure est déjà déterminé donc il reste constant pour chaque tri; d’après l ’instruction‘ For j := 1 to fin ’on déduit qu’on passe par la première n fois (avec n = nombre d ’éléments), à chaque fois j est augmenté de 1, donc d ’après l ’instruction ‘ For i:=(j+1) to fin ’ on déduit que le coût est de la forme : coût Tri_extraction = 4t + (9t + c j t + (5t+c ’ i t)) avec c j dans {0,7} selon la condition (j<>indmin) et c ’ i dans{0,1} selon la condition (tab[i] < tab[indmin]). Cette formule montre bien que le temps d ’exécution varie plus vite que n ’importe quelle fonction linéaire car elle contient deux sommes imbriquées; ce qui explique la forme des courbes.

D ’autre part on peut considérer que c j et c i sont constantes car chacune d ’elle est égale à deux valeurs possibles relativement proches.Donc le coût de Tri_extraction est le même quelque soit la forme des données pour un même tableau, ce qui explique la presque égalité des courbes dans chaque cas. Le temps de Tri_extraction ( pour 1000 éléments)est largement inférieur au temps que Tri_bulle aurait mis pour des élément en ordre croissant ( pour 1000 éléments)ou en ordre quelconque ( pour 1000 éléments). De points de vu de la taille des procédures, Tri_bulle et Tri_extraction occupent à peu près le même espace mémoire, on peut aussi remarquer qu ’ils ont une même complexité car chacune d ’elles utilise deux boucles imbriquées avec des simples opérations sur des entiers, booléens, et les éléments d’un tableau.

La procédure Tri_bulle n’est efficace que pour des données arrangées,tandis que pour des données brutes ou arrangées de façon ‘ vicieuse ’!!,c ’est le Tri_extraction qui se montre le plus intéressant avec son temps d’exécution stable dans chaque cas.