Information, Communication, Calcul

Slides:



Advertisements
Présentations similaires
CHAftITREI ARCHITECTURE de BASE. Modèle de Von Neumann Langage d’assemblage1 John Von Neumann est à l'origine d'un modèle de machine universelle de traitement.
Advertisements

ALGORITHMES LANGAGES ALGORITHMIQUE. Qu'est-ce qu'un algorithme ? Un algorithme est une méthode décrite pas à pas pour « faire quelque chose ». Hors des.
11 Alternative : syntaxe CSharp la structure conditionnelle : –si condition alors instruction1 sinon instruction2 fin si –En C# : if (condition) { instruction1.
Volée 1316 S3 Cours No 2_3 : Le nombre en 1-2H. Les fonctions du nombre  Dénombrer, énumérer, décrire une collection. Aspect cardinal  Dater, classer,
Concepts pour le contrôle de flux
Calcul de probabilités
Information, Calcul, Communication
La spécialité math en TS
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Utiliser le calcul littéral pour résoudre ou démontrer
Information, Calcul, Communication
Calcul et interprétation de taux de variation
temporelle – fréquentielle –Stabilité diagrammes de Bode / Nyquist
Information, Calcul, Communication
Information, Communication, Calcul
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Information, Communication, Calcul
Information, Calcul, Communication
Information, Calcul, Communication
Ecriture collaborative d’une dissertation en classe
Information, Calcul, Communication
Algorithme et programmation
Information, Calcul, Communication
Algorithmique AU El harchaoui noureddine
1.3 COORDONNÉES DES POINTS
Algorithmique demander jeu du pendu.
Reprise du cours ( ) Aujourd’hui :
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
L’Instruction de Test Alternatif
Stratégies de résolution de problèmes (RP) en mathématique
Information, Calcul, Communication
Javadoc et débogueur Semaine 03 Version A16.
Les Instructions – Organigramme
Principes de programmation (suite)
Activités algorithmiques
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
Information, Calcul, Communication
Information, Communication, Calcul
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Les grandes étapes de la recherche
1.2 dénombrement cours 2.
PROGRAMMATION ET ENSEIGNEMENT
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Évaluations par compétences
Chapitre 3 : Caractéristiques de tendance centrale
Notion de risque et mesures d’association
Eléments de la Théorie des Probabilités
CRITERES DE QUALITE 1) PRECISION 2) RAPIDITE 3) AMORTISSEMENT
SIMPLIFICATION D’UNE RACINE CARREE.
Baccalauréat professionnel Session 2018 Formation
LA DESCRIPTION DU DIAGRAMME ÉNERGÉTIQUE
Lois de Probabilité Discrètes
Le code de Huffman: est une méthode de compression statistique de données qui permet de réduire la longueur du codage d'un alphabet. Le code de Huffman.
MATHÉMATIQUES FINANCIÈRES I
Information, Calcul, Communication
Information, Calcul, Communication
IFT313 Introduction aux langages formels
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Formation « Utiliser un site Internet école »
Chapter 11: Récursivité Java Software Solutions Second Edition
Les données structurées et leur traitement
Problèmes de proportionnalité
Problèmes de proportionnalité
La loi des signes.
Problèmes de proportionnalité
Transcription de la présentation:

Information, Communication, Calcul Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne fait partie du cours d’introduction à l’information, à la communication, et au calcul. Il est le 4e de 7 videoclips portant sur les notions de calcul et d’information. Information, Communication, Calcul Module 1: Calcul & Information – Leçon 1: Algorithmes – Clip 4: Recherche R. Guerraoui, J. Sam, J-C. Chappelier, R. Boulic, commentaire: P. Janson

Plan de la leçon Qu’est-ce qu’un algorithme? Quelles structures existent pour contrôler un algorithme? Quelques grandes familles d’algorithms Recherche Exemple: recherche par dichotomie Comment quantifier et exprimer la complexité d’un algorithme Tri Plus court chemin Plus spécifiquement il porte l’attention sur une première catégorie parmi les grandes familles d’algorithmes: les algorithmes de recherche.

Exemples d’algorithmes Il existe évidemment une infinité de problèmes Comment résoudre une équation? Comment calculer un PGCD? Comment classer des objets par ordre alphabétique? Comment trouver une information sur la toile? Comment trouver le chemin de l’EPFL? Pour beaucoup de problèmes il existe des solutions algorithmiques x1, x2 = −b± b 2 −4ac 2a Algorithme d’Euclide pour le calcul du PGCD Multiples algorithmes de tri (alphabétique ou autres) Multiples algorithmes de recherche Google PageRank (http://wandida.com/fr/archives/94) Facebook EdgeRank (http://wandida.com/fr/archives/88) Multiples algorithmes de calcul d’un plus court chemin entre deux points Il existe évidemment une infinité de problèmes que l’on peut résoudre de façon algorithmique. Par exemple la recherche des solutions d’une équation … … le calcul d’un plus grand commun diviseur … … le classement de livres ou tous autres objets de façon alphabétique ou selon tout autre ordre … … la recherche d’une information sur la toile … … ou le calcul du plus court chemin en temps ou en km entre deux points donnés. - Pour tous ces problèmes et bien d’autres il existe une ou même souvent plusieurs solutions algorithmiques. Par exemple, comme suggéré dans le videoclip précédent, le calcul des racines d’une équation du second degré … … l’algorithme d’Euclide pour le calcul d’un PGCD … … une multitude d’algorithmes de tri ou de classement … … une multitude d’algorithmes de recherche parmi lesquels on peut citer quelques exemples illustres tels que … L’algorithme PageRank de Google qui fournit les résultats les plus utiles à la recherche de mots-clés donnés … … ou l’algorithme EdgeRank de Facebook qui choisit les informations les plus utiles à présenter à chaque utilisateur … … ou encore plusieurs algorithmes de calcul du plus court chemin entre deux points donnés.

Principales familles d’algorithmes Recherche Tri Calcul d’un plus court chemin Le présent videoclip va explorer superficiellement le sujet des algorithmes de recherche. Un videoclip ultérieur donnera une idée des algorithmes de tri et de calcul d’un plus court chemin.

Algorithmes de recherche Exemple: rechercher un élément x dans un ensemble E Il faut commencer par spécifier clairement le problème E peut-il être vide? E peut-il varier pendant la recherche? E est-il ordonné? Le problème type que tente de résoudre un algorithme de recherche est de retrouver un objet donné X parmi un ensemble d’éléments E. - Encore faut-il définir précisément de quoi se compose l’ensemble E: Est-on assuré qu’il n’est pas vide? Sait-on si son contenu peut évoluer pendant la recherche? Ses éléments sont-ils déjà pré-arrangés selon un ordre quelconque?

Algorithmes de recherche Exemple: rechercher un élément x dans un ensemble E => 2 algorithmes parmi plusieurs possibilités (Algorithme calculant la taille de E) Appartient1 entrée: x,E sortie: x ∈ E ? i ← 1 Répéter Si x = E[i] sortir x ∈ E i ← i+1 t ← taille(E) jusque i > t sortir x ∉ E Appartient2 entrée: x,E sortie: x ∈ E ? t ← taille(E) Pour i de 1 à t Si x = E[i ] sortir : x ∈ E sortir : x ∉ E Considérons à titre d’exemple deux algorithmes différents Capables de rechercher un élément x dans un ensemble E. Appartient1, à gauche, commence par initialiser un compteur i des éléments de E. Il entre alors dans une boucle qui compare le ième élément de E avec x et sort positivement de la recherche s’ils sont égaux. Sinon il incrémente i, invoque un autre algorithme pour calculer la taille t de E, et répète la boucle tant que i de dépasse pas t. Si x n’est pas trouvé dans E au terme de la boucle l’algorithme sort négativement de la recherche. Appartient2, à droite, calcule d’abord la taille t de E. Ensuite pour un compteur d’éléments i allant de 1 à t, il compare en boucle le ième élément de E avec x et sort positivement de la recherche s’il est égal à x. Sinon il sort négativement au terme de la boucle.

Evaluation critique Ces algorithmes sont-ils corrects? Se terminent-ils dans tous les cas? Donnent-ils la bonne réponse? Quid de Appartient1 si E est vide? Quid de Appartient2 si E change pendant la recherche? => Répondre à ces questions exige des démonstrations mathématiques Ces algorithmes sont-ils efficaces? => Répondre à ces questions fait appel à la notion de complexité = espace et temps nécessaires à un algorithme dans le pire des cas = nombre d’instructions élémentaires à exécuter (hors du cadre de cette leçon) = fonctions de la taille des données Une première question qu’il convient de se poser à propos d’un algorithme est de savoir s’il est correct, s’il se termine dans tous les cas, et s’il donne la bonne réponse. Que ferait par exemple Appartient1 si E était vide? Que ferait par exemple Appartient2 si le contenu de E évoluait pendant la recherche? Répondre à ces questions exigerait des démonstrations mathématiques. - Une deuxième question intéressante est de savoir si un algorithme est efficace. Répondre à cette question demande d’évaluer ce qu’on appelle sa complexité. Cette complexité est une mesure de l’espace et du temps que demande son exécution. La question de l’espace requis par l’exécution d’un algorithme est hors du cadre de cette leçon. La question du temps est liée au nombre d’instructions élémentaires de l’algorithme. Les deux questions dépendent évidemment de la taille des données de l’algorithme. La complexité est conventionnellement calculée pour le pire des cas, c’est-à-dire le cas où les données sont présentées sous la forme la plus compliquée.

Complexité de Appartient1 Soit taille(E) = n 1 instruction 2 instructions (lire E[i] et comparer à x) n instructions (1 incrément par élément) exécutées n fois dans le pire des cas => C(Appartient1, n) = 1 + n (n+4) Appartient1 entrée: x,E sortie: x ∈ E ? i ← 1 Répéter Si x = E[i] sortir x ∈ E i ← i+1 t ← taille(E) jusque i > t sortir x ∉ E Essayons de compter le nombre d’instructions de l’algorithme Appartient1. - Imaginons que la taille de E soit de n éléments. L’initialisation de i coute 1 instruction. La comparaison de i à un élément de E coute 2 instructions, 1 pour lire le ième élément de E et 1 pour le comparer à x. L’incrémentation de i coute 1 instruction. L’algorithme taille(E) doit assurément couter au moins une instruction pour incrémenter un compteur dont la valeur finale sera assignée à t, soit au moins n instructions au total (et cela pourrait être un peu plus). La comparaison de i à t pour sortir de boucle en cas de recherche négative coute aussi une instruction. Ces 4 dernières instructions sont donc exécutées en boucle n fois dans le pire des cas où x ne figurerait pas dans E. La complexité C de l’algorithme Appartient1 pour E contenant n éléments est donc égale à 1 + n x (n+4).

Complexité de Appartient2 Soit taille(E) = n n instructions (1 incrément par élément) 2 instructions (calculer i et comparer à t) 2 instructions (lire E(i) et comparer à x) exécutées n fois dans le pire des cas => C(Appartient2, n) = n + 4n Appartient2 entrée: x,E sortie: x ∈ E ? t ← taille(E) Pour i de 1 à t Si x = E[i ] sortir : x ∈ E sortir : x ∉ E Essayons maintenant de compter les d’instructions de l’algorithme Appartient2. - Nous imaginons toujours que la taille de E soit de n éléments. Comme dans le cas Appartient1, le calcul de la taille t coute au minimum n instructions. L’initialisation ou l’incrémentation de i coute ensuite 1 instruction, suivie d’une 2e instruction pour comparer i à t. Viennent ensuite 2 autres instructions pour lire le ième élément de E et le comparer à x. Ces 4 dernières instructions sont exécutées n fois dans le pire des cas. La complexité C de l’algorithme Appartient2 pour E contenant n éléments est donc égale à n + 4n.

Comparaison de Appartient1 et Appartient2 => C(Appartient1, n) = 1 + n(n+4) = n2 + 4n + 1 => C(Appartient2, n) = n + 4n = 5n => C(Appartient1, n) >> C(Appartient2, n) pour n >> ce qui est vrai dans tous les cas qui valent la peine d’être automatisés ! => Nouvelle question: peut-on faire encore mieux que 5n ? => Réponse: oui si E est une liste pré-triée -> voir clip suivant - En résumé la complexité de Appartient1 est au pire de n2 + 4n + 1 instructions … … alors que celle de Appartient2 est au pire de 5n instructions. Il est donc évident que celle de Appartient1 est supérieure à celle de Appartient2. Elle est même d’autant plus supérieure que n est grand. Or un automate qui appliquerait un algorithme automatiquement ne vaut la peine que pour de grands n. Donc en pratique Appartient2 est bien plus efficace que Appartient1. La question suivante est de se demander si Appartient2 est le plus efficace de tous les algorithmes de recherche ou si on peut faire encore mieux que 5n? Et la réponse est oui si les éléments de E ont été préalablement rangés dans une liste pré-triée par ordre alphabétique ou autre. C’est le sujet du videoclip suivant.