INFOR 101 Chapitre 3 Marianne Morris INFOR 101

  • Slides: 45
Download presentation
INFOR 101 Chapitre 3 Marianne Morris

INFOR 101 Chapitre 3 Marianne Morris

INFOR 101 n n n Algorithmes et Pseudocode Programmation en C++ Architecture de l’ordinateur

INFOR 101 n n n 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 n Algorithmes n n Pseudocode Opérations en séquence Opérations de

Révision du chapitre 2 n Algorithmes n n Pseudocode Opérations en séquence Opérations de condition Opérations itératives

Révision du chapitre 2 n n Une fois qu’on a construit un algorithme, on

Révision du chapitre 2 n n Une fois qu’on a construit un algorithme, on peut utiliser celui-ci pour développer des algorithmes plus sophistiqués Librairie n n Une collection d’algorithmes utiles Un instrument important pour le développement d’algorithmes

Révision du chapitre 2 n Méthode descendante (top-down) n Pour résoudre des problèmes compliqués

Révision du chapitre 2 n Méthode descendante (top-down) n Pour résoudre des problèmes compliqués n n n 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 n Développement d’algorithmes n n Corrects et efficaces Plusieurs étapes

Révision du chapitre 2 n Développement d’algorithmes n n Corrects et efficaces Plusieurs étapes inclues pseudocode, brouillon et copies plus évoluées! Utiliser des méthodes descendantes (top-down) Utilisation du pseudocode n n Pour aider à développer des algorithmes Lisible, non ambigu, facile à analyser

Exercice 2. 1: Exponentiel n Développez un algorithme pour calculer la valeur exponentielle d’un

Exercice 2. 1: Exponentiel n Développez un algorithme pour calculer la valeur exponentielle d’un nombre donné n n n 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

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 n Trouver si la séquence de lettres existe dans

Exercice 2: Recherche et pattern-matching n Trouver si la séquence de lettres existe dans une liste de lettres alphabétiques n n n Séquence de lettres: « abbd » Liste contient un nombre N de lettres Algorithme: n n n Lire N à l’écran Recher la liste en utilisant une boucle et des conditions « if… else » Imprimer « found » ou « not found » à l’écran

Figure 2. 16 Pattern-Matching Algorithm

Figure 2. 16 Pattern-Matching Algorithm

Chapitre 3: L’efficacité des algorithmes n Objectifs: n n n Attributs des algorithmes Mesurer

Chapitre 3: L’efficacité des algorithmes n Objectifs: n n n Attributs des algorithmes Mesurer l’efficacité des algorithmes Analyses des algorithmes

Introduction n Caractéristiques importantes des algorithmes: n n Corrects Faciles à comprendre Élégants Efficaces

Introduction n Caractéristiques importantes des algorithmes: n n Corrects Faciles à comprendre Élégants Efficaces

Attributs des algorithmes n Corrects n n n Est-ce que l’algorithme résout le problème

Attributs des algorithmes n Corrects n n n 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 n n Est-ce que l’algorithme est lisible et facile à modifier? Important pour la réécriture de programmes!

Attributs des algorithmes n Élégants n n n Est-ce que l’algorithme est intelligent, bien

Attributs des algorithmes n Élégants n n n Est-ce que l’algorithme est intelligent, bien écrit et sophistiqué? Attention: conflit possible entre élégance et facilité à comprendre Efficaces n n Combien de temps et d’espace l’algorithme prend quand il est exécuté? Attribut très important!

Mesurer l’efficacité des algorithmes n Analyse des algorithmes n n Mesurer l’efficacité en tant

Mesurer l’efficacité des algorithmes n Analyse des algorithmes n n Mesurer l’efficacité en tant que fonction qui relie le montant des données au temps et à l’espace que l’algorithme utilise n n Étudier l’efficacité de plusieurs algorithmes É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 n Quand n est grand, l’effet des coefficients et

L’ordre de magnitude: Ordre n n Quand n est grand, l’effet des coefficients et des termes d’ordre plus petit devient plus faible n n n Ex: n/2, n, 2 n, 3 n n Toutes fonctions linéaires sont équivalentes L’ordre de magnitude n n Les fonctions varient en tant que c x n n ( n )

Figure 3. 4 Work = cn for Various Values of c

Figure 3. 4 Work = cn for Various Values of c

Recherche en séquence n n Chercher un nom NAME dans une liste de n

Recherche en séquence n n 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

Figure 3. 1 Sequential Search Algorithm

Recherche en séquence n Analyse de l’efficacité de l’algorithme pour une liste de n

Recherche en séquence n Analyse de l’efficacité de l’algorithme pour une liste de n entrées n Meilleur scénario: n NAME est le premier dans la liste Une seule comparaison n (1) n

Recherche en séquence n Analyse d’efficacité – liste de n entrées n Pire scénario:

Recherche en séquence n Analyse d’efficacité – liste de n entrées n Pire scénario: n NAME est le dernier dans la liste NAME n’est pas dans la liste n comparaisons n ( n ) n n n Scénario typique: n À peu près n/2 comparaisons n ( n )

Utiliser l’espace efficacement n L’algorithme ne devrait pas utiliser plus d’espace (mémoire pour stockage)

Utiliser l’espace efficacement n L’algorithme ne devrait pas utiliser plus d’espace (mémoire pour stockage) que l’espace occupé par les données originales

Selection sort n n Réarranger une séquence de n valeurs pour qu’elles soient en

Selection sort n n Réarranger une séquence de n valeurs pour qu’elles soient en ordre L’algorithme n n n 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

Figure 3. 6 Selection Sort Algorithm

Selection sort n L’algorithme exécute Find Largest n fois n n n Chaque fois

Selection sort n L’algorithme exécute Find Largest n fois n n n 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 n Efficacité temps: n n Comparaisons: n(n-1)/2 Échanges: n (swap largest en

Selection sort n Efficacité temps: n n Comparaisons: n(n-1)/2 Échanges: n (swap largest en sa position) Ordre: (n 2), meilleur et pire scénarios Efficacité espace: n Espace pour la séquence d’entrées et un nombre constant de variables locales

L’ordre de magnitude: Ordre n 2 n n Toutes fonctions avec termes d’ordre plus

L’ordre de magnitude: Ordre n 2 n n Toutes fonctions avec termes d’ordre plus élevé cn 2 sont plus ou moins équivalentes (ont des formes similaires) Un algorithme qui fait des opérations de cn 2 (où c est une constante) est donc d’ordre n 2 ou bien (n 2)

L’ordre de magnitude: Ordre n 2 n n (n 2) > (n) peu importe

L’ordre de magnitude: Ordre n 2 n n (n 2) > (n) peu importe les constantes s’il y en a Un algorithme qui exécute à (n) est bien plus efficace qu’un autre à (n 2)

Figure 3. 10 Work = cn 2 for Various Values of c

Figure 3. 10 Work = cn 2 for Various Values of c

Figure 3. 11 A Comparison of n and n 2

Figure 3. 11 A Comparison of n and n 2

Binary Search n Liste déjà en ordre n n n Chercher NAME en comparant

Binary Search n Liste déjà en ordre n n n 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)

Figure 3. 18 Binary Search Algorithm (list must be sorted)

Binary Search n Efficacité: n Meilleur scénario: n n n Une seule comparaison (1)

Binary Search n Efficacité: n Meilleur scénario: n n n Une seule comparaison (1) Pire scénario: n n lg n comparaisons n lg 2 n : le nombre n peut être divisé par 2 avant d’atteindre 1 (lg n)

Binary Search n Compromis n Recherche en séquence (Sequential Search) n n Lent mais

Binary Search n Compromis n Recherche en séquence (Sequential Search) n n Lent mais bon pour des données non ordonnées Binary Search n Plus rapide mais la liste doit être en ordre

Figure 3. 21 A Comparison of n and lg n

Figure 3. 21 A Comparison of n and lg n

Pattern Matching n Mesurer deux données: n n n m: la longueur de la

Pattern Matching n Mesurer deux données: n n n m: la longueur de la string du motif n: la longueur du texte L’unité de travail n Comparaison d’une lettre du motif avec une lettre du texte

Figure 2. 16 Pattern-Matching Algorithm

Figure 2. 16 Pattern-Matching Algorithm

Pattern Matching n Efficacité: n Meilleur scénario: n n Motif n’a pas de correspondant

Pattern Matching n Efficacité: n Meilleur scénario: n n Motif n’a pas de correspondant n - m + 1 comparaisons (n) Pire scénario: n n n 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. 22 Order-of-Magnitude Time Efficiency Summary

Figure 3. 25 Comparisons of lg n, n, n 2 , and 2 n

Figure 3. 25 Comparisons of lg n, n, n 2 , and 2 n

Figure 3. 27 A Comparison of Four Orders of Magnitude

Figure 3. 27 A Comparison of Four Orders of Magnitude

Lectures n Vous êtes encouragé(e)s de lire chapitre 3 surtout les algorithmes dans la

Lectures n 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. 14 The Shuffle-Left Algorithm for Data Cleanup

Figure 3. 15 The Copy-Over Algorithm for Data Cleanup

Figure 3. 15 The Copy-Over Algorithm for Data Cleanup

Figure 3. 16 The Converging-Pointers Algorithm for Data Cleanup

Figure 3. 16 The Converging-Pointers Algorithm for Data Cleanup