INFOR 101 Chapitre 3 Marianne Morris.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Tris.
Chapitre annexe. Récursivité
Portée des variables VBA & Excel
Transformation de documents XML
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Algorithmique et évaluation
LA LOGIQUE ALGORITHMIQUE. Algorithme Définition Ensemble dopérations Effectuées dans un ordre logique Afin dobtenir un résultat, Afin de résoudre un problème.
Algorithmique Résume.
GEF 243B Programmation informatique appliquée
Les Algorithmes de tri.
Exercices Algorithmiques
Plus rapide chemin bicritère : un problème d’aménagement du territoire
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Utilisation des tableaux
Qu’est-ce qu’un ordinateur ?
Les bases de l’Algorithmique
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Partie 1 Etude de l'existant
Démarche de résolution de problèmes
Correction du reste des exercices
Les éléments de base de l’algorithmique
Quelques algorithmes sur calculatrices
Les algorithmes: complexité et notation asymptotique
Methode de Tri efficace
Les tris.
Algorithmique et Programmation
Sections sélectionnées du Chapitre 11
Algorithme de Bellman-Ford
Ensembles Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et ajout d’éléments d’un ensemble. Fonctions permettant de manipuler.
Analyse d’Algorithmes
Introduction à l’algorithmique
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Semaine #1 INF135 par Frédérick Henri.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
I&G- chapitre 11-La logique Logarithmique -Mme Roulaud
Efficacité des algorithmes
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
CSI 1502 Principes fondamentaux de conception de logiciels
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.
Programmation linéaire en nombres entiers : les méthodes de troncature
Analyse des Algorithmes
III. Récursivité Principe et exemples
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
ALGORITHME DE TRI Le tri par insertion.
Algorithmes de tri et de recherche
Programmation linéaire en nombres entiers
Méthodes de tri.
1 INFOR 101 Chapitre 2 Marianne Morris. 2 L’informatique WWeb et réseaux SSystèmes d’exploitation IIntelligence Artificielle TThéorie informatique.
GF-11: Tri Interne Efficace et Tri Externe
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
INFOR 101 Chapitre 5 Marianne Morris.
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
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.
Une aide pour débutant éclairé
Structures de données IFT-2000
CSI2510 Structures de données et algorithmes Analyse des algorithmes
Files de priorité (Priority Queue)
Algorithmique Algorithmique  Pascal
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Seconde 8 Module 7 M. FELT 03/11/ Module 7: Algorithmique #2  Objectifs:  AlgoBox.  Définition d’un algorithme.  Affectation de variable. 
Algorithmique Boucles et Itérations
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.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Transcription de la présentation:

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 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

Pattern-Matching Algorithm 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)

Work = cn for Various Values of c 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

Sequential Search Algorithm 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

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 »

Selection Sort Algorithm 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: Efficacité espace: 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)

Work = cn2 for Various Values of c 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

Binary Search Algorithm (list must be sorted) Figure 3.18 Binary Search Algorithm (list must be sorted)

Binary Search Efficacité: Pire scénario: Meilleur scénario: (1) Une seule comparaison (1) Pire scénario: lg n comparaisons lg2 n : le nombre n peut être divisé 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

A Comparison of n and lg n Figure 3.21 A Comparison of n and lg n

Pattern Matching Mesurer deux données: L’unité de travail 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

Pattern-Matching Algorithm Figure 2.16 Pattern-Matching Algorithm

Pattern Matching Efficacité: Pire scénario: 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)

Order-of-Magnitude Time Efficiency Summary Figure 3.22 Order-of-Magnitude Time Efficiency Summary

Figure 3.25 Comparisons of lg n, n, n2 , and 2n

A Comparison of Four Orders of Magnitude 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…

The Shuffle-Left Algorithm for Data Cleanup Figure 3.14 The Shuffle-Left Algorithm for Data Cleanup

The Copy-Over Algorithm for Data Cleanup Figure 3.15 The Copy-Over Algorithm for Data Cleanup

The Converging-Pointers Algorithm for Data Cleanup Figure 3.16 The Converging-Pointers Algorithm for Data Cleanup