450 likes | 623 Views
INFOR 101 Chapitre 3. Marianne Morris. INFOR 101. Algorithmes et Pseudocode Programmation en C++ Architecture de l’ordinateur Langage assembleur Intro aux réseaux et à l’intelligence artificielle. Révision du chapitre 2. Algorithmes Pseudocode Opérations en séquence
E N D
INFOR 101Chapitre 3 Marianne Morris
INFOR 101 • Algorithmes et Pseudocode • Programmation en C++ • Architecture de l’ordinateur • Langage assembleur • Intro aux réseaux et à l’intelligence artificielle
Révision du chapitre 2 • Algorithmes • Pseudocode • Opérations en séquence • Opérations de condition • Opérations itératives
Révision du chapitre 2 • Une fois qu’on a construit un algorithme, on peut utiliser celui-ci pour développer des algorithmes plus sophistiqués • Librairie • Une collection d’algorithmes utiles • Un instrument important pour le développement d’algorithmes
Révision du chapitre 2 • Méthode descendante (top-down) • Pour résoudre des problèmes compliqués • Brouillon de l’algorithme pour réfléchir aux opérations de haut niveau • Élaborer les opérations de haut niveau après avoir développé un schéma brouillon de l’algorithme • Répéter jusqu’à ce que toutes les opérations de haut niveau soient développées à partir d’opérations plus simples
Révision du chapitre 2 • Développement d’algorithmes • Corrects et efficaces • Plusieurs étapes inclues pseudocode, brouillon et copies plus évoluées! • Utiliser des méthodes descendantes (top-down) • Utilisation du pseudocode • Pour aider à développer des algorithmes • Lisible, non ambigu, facile à analyser
Exercice 2.1: Exponentiel • Développez un algorithme pour calculer la valeur exponentielle d’un nombre donné • Demandez à l’utilisateur d’entrer deux valeurs: le nombre et la puissance • Utiliser une boucle dans votre algorithme… • Imprimez à l’écran de l’ordinateur le résultat de l’opération exponentielle
Solution de l’exercice 2.1:Exponentiel Get values for n and x while (x < 0) { output “Please enter x 0” read x } If (n == 0) then set result to 0 else if (n == 1 or x == 0) then set result to 1 else { set result to 1 set count to 1 while (count ≤ x) result = result * n } Output the value of result
Exercice 2: Recherche et pattern-matching • Trouver si la séquence de lettres existe dans une liste de lettres alphabétiques • Séquence de lettres: « abbd » • Liste contient un nombre N de lettres • Algorithme: • Lire N à l’écran • Rechercher la liste en utilisant une boucle et des conditions « if… else » • Imprimer « found » ou « not found » à l’écran
Figure 2.16 Pattern-Matching Algorithm
Chapitre 3: L’efficacité des algorithmes • Objectifs: • Attributs des algorithmes • Mesurer l’efficacité des algorithmes • Analyses des algorithmes
Introduction • Caractéristiques importantes des algorithmes: • Corrects • Faciles à comprendre • Élégants • Efficaces
Attributs des algorithmes • Corrects • Est-ce que l’algorithme résout le problème pour lequel il a été construit? • Est-ce qu’il résout le problème correctement? • Faciles à comprendre • Est-ce que l’algorithme est lisible et facile à modifier? • Important pour la réécriture de programmes!
Attributs des algorithmes • Élégants • Est-ce que l’algorithme est intelligent, bien écrit et sophistiqué? • Attention: conflit possible entre élégance et facilité à comprendre • Efficaces • Combien de temps et d’espace l’algorithme prend quand il est exécuté? • Attribut très important!
Mesurer l’efficacité des algorithmes • Analyse des algorithmes • Étudier l’efficacité de plusieurs algorithmes • Mesurer l’efficacité en tant que fonction qui relie le montant des données au temps et à l’espace que l’algorithme utilise • Étudier le meilleur scénario, le pire scénario et le scénario typique • La notation représente l’ordre de magnitude de la fonction de l’efficacité
L’ordre de magnitude: Ordre n • Quand n est grand, l’effet des coefficients et des termes d’ordre plus petit devient plus faible • Ex: n/2, n, 2n, 3n n • Toutes fonctions linéaires sont équivalentes • L’ordre de magnitude n • Les fonctions varient en tant que c x n • (n)
Figure 3.4 Work = cn for Various Values of c
Recherche en séquence • Chercher un nom NAME dans une liste de n noms • Commencer au début de la liste et comparer NAME à chaque entrée dans la liste jusqu’à ce qu’on trouve la bonne entrée
Figure 3.1 Sequential Search Algorithm
Recherche en séquence • Analyse de l’efficacité de l’algorithme pour une liste de n entrées • Meilleur scénario: • NAME est le premier dans la liste • Une seule comparaison • (1)
Recherche en séquence • Analyse d’efficacité – liste de n entrées • Pire scénario: • NAME est le dernier dans la liste • NAME n’est pas dans la liste • n comparaisons • (n) • Scénario typique: • À peu près n/2 comparaisons • (n)
Utiliser l’espace efficacement • L’algorithme ne devrait pas utiliser plus d’espace (mémoire pour stockage) que l’espace occupé par les données originales
Selection sort • Réarranger une séquence de n valeurs pour qu’elles soient en ordre • L’algorithme • Chercher la plus grande valeur dans une section de la liste • Déplacer cette valeur dans une position plus correcte dans la section déjà triée de la liste • Utiliser l’algorithme « Find Largest »
Figure 3.6 Selection Sort Algorithm
Selection sort • L’algorithme exécute Find Largest n fois • Chaque fois avec une plus petite liste • Coût = n-1 + (n-2) + … + 2 + 1 = n(n-1)/2 • Find Largest fait m-1 comparaisons pour une liste de m valeurs
Selection sort • Efficacité temps: • Comparaisons: n(n-1)/2 • Échanges: n (swap largest en sa position) • Ordre: (n2), meilleur et pire scénarios • Efficacité espace: • Espace pour la séquence d’entrées et un nombre constant de variables locales
L’ordre de magnitude: Ordre n2 • Toutes fonctions avec termes d’ordre plus élevé cn2 sont plus ou moins équivalentes (ont des formes similaires) • Un algorithme qui fait des opérations de cn2 (où c est une constante) est donc d’ordre n2 ou bien (n2)
L’ordre de magnitude: Ordre n2 • (n2) > (n)peu importe les constantes s’il y en a • Un algorithme qui exécute à (n) est bien plus efficace qu’un autre à (n2)
Figure 3.10 Work = cn2 for Various Values of c
Figure 3.11 A Comparison of n and n2
Binary Search • Liste déjà en ordre • Chercher NAME en comparant par l’élément au milieu • Restreindre la recherche à la moitié inférieure ou supérieure de la liste si on n’a pas encore trouvé l’entrée voulue • Chaque passe élimine la moitié de la liste
Figure 3.18 Binary Search Algorithm (list must be sorted)
Binary Search • Efficacité: • Meilleur scénario: • Une seule comparaison • (1) • Pire scénario: • lg n comparaisons • lg2 n :le nombre n peut êtredivisé par 2 avant d’atteindre 1 • (lg n)
Binary Search • Compromis • Recherche en séquence (Sequential Search) • Lent mais bon pour des données non ordonnées • Binary Search • Plus rapide mais la liste doit être en ordre
Figure 3.21 A Comparison of n and lg n
Pattern Matching • Mesurer deux données: • m: la longueur de la string du motif • n: la longueur du texte • L’unité de travail • Comparaison d’une lettre du motif avec une lettre du texte
Figure 2.16 Pattern-Matching Algorithm
Pattern Matching • Efficacité: • Meilleur scénario: • Motif n’a pas de correspondant • n - m + 1 comparaisons • (n) • Pire scénario: • Le motif a un correspondantà chaque point • (m -1)(n - m + 1) comparaisons • (m x n)
Figure 3.22 Order-of-Magnitude Time Efficiency Summary
Figure 3.25 Comparisons of lg n, n, n2 , and 2n
Figure 3.27 A Comparison of Four Orders of Magnitude
Lectures • Vous êtes encouragé(e)s de lire chapitre 3 surtout les algorithmes dans la section 3.4.1 (aussi diapos # 43-45) pour enrichir vos connaissances et pour pratiquer pour l’examen…
Figure 3.14 The Shuffle-Left Algorithm for Data Cleanup
Figure 3.15 The Copy-Over Algorithm for Data Cleanup
Figure 3.16 The Converging-Pointers Algorithm for Data Cleanup