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 second de 7 videoclips portant sur les notions de calcul et d’information. Information, Communication, Calcul Module 1: Calcul & Information – Clip 1.1: Algorithmes 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 définit plus ou moins formellement la notion d’algorithme.
Programmation d’un automate (1) Programme = série d’instructions opérant sur des données Données = description d’informations représentant les entités du monde réel que l’automate doit gérer, modéliser, simuler, optimiser, automatiser, mesurer, contrôler, etc. Instructions = description des traitements que l’automate doit appliquer à ces données pour gérer, modéliser, simuler, optimiser, automatiser, mesurer, contrôler, etc. les entités représentées - Comme défini dans le videoclip précédent, un programme qui indique que faire à un automate consiste en une série d’instructions destinées à opérer sur un ensemble de données. Ces données sont en fait un ensemble d’informations décrivant les entités et objets du monde réel que l’automate va devoir gérer, modéliser, simuler, optimiser, automatiser, mesurer, contrôler, etc. Les instructions décrivent, elles, les traitements que l’automate va devoir appliquer à ces données pour gérer, modéliser, simuler, optimiser, automatiser, mesurer, contrôler, etc. les objets et entités représentées par ces données.
Programmation d’un automate (2) = Décomposition du travail à automatiser en une série d’instructions (= traitements) … … opérant sur un ensemble de données … exprimées sous une forme assimilable par l’automate visé De façon graphique on peut représenter la tâche d’un automate comme une interaction réciproque entre des données et des instructions, les données influençant les instructions dans le traitement que ces instructions appliquent aux mêmes données. Données et instructions doivent être exprimées de façon compréhensible par l’automate.
Formalisation de l’informatique = Algorithmes formalisant les traitements + Informations structurées formalisant les données à traiter La conception d’un programme vise à obtenir le traitement désiré en choisissant les bons algorithmes les bonnes structures de données En d’autres termes, un programme définit un traitement à appliquer à des données. - Le traitement est formalisé par une structure de contrôle appelée algorithme. Les objets du traitement sont formalisés par des structures de données. La conception d’un programme consiste à choisir des structures de contrôle et de données appropriées à la solution du problème visé.
Algorithme ≠ Programme Algorithme = expression abstraite du traitement attendu d’un automate indépendante de d’automate spécifique qui exécutera ce traitement Exemple: une description en langage naturel des opérations à effectuer par un ordinateur quelconque Programme = expression concrète d’un algorithme sous une forme spécifique dépendante et adaptée à l’automate particulier qui exécutera ce traitement Exemple: une description des opérations à effectuer par un ordinateur spécifique exprimée dans un langage de programmation compris par cet ordinateur Ceci dit, il y a une grosse différence entre un algorithme et un programme qui l’exprime. - Un algorithme est la partie conceptuelle d’un programme. Il est abstrait et indépendant de l’automate ou de l’ordinateur qui va l’exécuter, du langage dans lequel il est exprimé, et bien sûr des données à traiter. Un algorithme destiné à n’importe quel ordinateur peut être décrit en langage naturel. Un programme implémente (ou réalise) un algorithme dans un langage de programmation destiné à un ordinateur particulier.
Qu’est ce qu’un algorithme? « Spécification d’un schéma de calcul sous forme d’une suite d’opérations élémentaires obéissant à un enchaînement déterminé » [Encyclopedia Universalis] ☞ Description abstraite d’une méthode de résolution d’un problème donné Les algorithmes existent depuis bien avant les ordinateurs Exemples datant de l’Antiquité: division égyptienne, algorithme d’Euclide Leur nom est dérivé de celui d’Al-Khwarizmi Mathématicien persan du 9e siècle, surnommé « le père de l’algèbre ». En somme donc … - D’après l’Encyclopédie Universelle, un algorithme est « un schéma de calcul sous forme d’une suite d’opérations élémentaires obéissant à un enchaînement déterminé » Un algorithme est en cela la description abstraite d’une méthode de résolution d’un problème particulier. Des algorithmes existent depuis bien avant les ordinateurs : la division égyptienne ou l’algorithme d’Euclide, par exemple remontent à l’Antiquité. Le terme algorithme lui-même est dérivé du nom d’Al-Khwarizmi, un mathématicien persan du 9e siècle, surnommé « le père de l’algèbre ».
Exemple de problème Voulez-vous danser avec moi ? Questions: Quel algorithme peut résoudre ce problème? Quelles sont les données dont il a besoin? Voulez-vous danser avec moi ? A titre d’exemple envisageons le problème que doit résoudre un cavalier pour se trouver une cavalière dans une soirée dansante. - Une question est de savoir quel algorithme pourrait utiliser ce cavalier? Une autre question est de savoir quelles seraient les données à fournir à cet algorithme pour résoudre le problème dans une soirée dansante spécifique?
Exemple d’algorithme «Voulez-vous danser avec moi?» – 1er algorithme Données: - Personne - Ensemble de personnes NB: il n’est pas garanti que l’exécution de l’algorithme ait une fin Choisir une personne Voulez-vous danser? De façon tout à fait naïve on peut aisément imaginer un 1er algorithme simpliste. - Notre cavalier choisit une cavalière potentielle au hasard et l’invite à danser. Si celle-ci accepte le problème est résolu et l’algorithme se termine. Si par contre elle décline, notre cavalier peut tenter sa chance avec une autre cavalière. Pour fonctionner, cet algorithme devrait savoir ce qu’est une personne. Et il aurait besoin d’avoir une description de chacune des personnes dans l’assistance. Après quelques essais il aura peut-être de la chance … ou pas. L’algorithme ne se terminerait jamais si aucune des cavalières n’acceptait l’invitation. Notre cavalier tournerait en rond dans une boucle infinie en réinvitant chaque fois une autre cavalière qui déclinerait invariablement l’invitation. Super! OUI NON
Choisir la ième personne Exemple d’algorithme «Voulez-vous danser avec moi?» – 2ème algorithme Données: - Personne - Ensemble ordonné de personnes L’algorithme n’est pas nécessairement le plus efficace L’exécution de l’algorithme se termine au pire après N essais Les données sont structurées Choisir la ième personne dans la liste Voulez-vous danser? i=1 De façon un peu moins naïve et surtout plus prudente, notre cavalier pourrait dresser une liste des N cavalières potentielles (par ordre alphabétique, par exemple, ou selon tout autre critère). - Il pourrait ensuite inviter chaque cavalière dans l’ordre de sa liste jusqu’à ce que l’une d’entre elles accepte. Pour éviter que son algorithme tourne indéfiniment en rond au cas où aucune des cavalières n’accepterait, notre cavalier plus prudent vérifie après chaque refus s’il n’a pas épuisé toute sa liste des N cavalières potentielles. Et si c’est le cas, son algorithme s’arrête et le cavalier rentre chez lui bredouille – sans résultat mais aussi sans passer en vain une nuit blanche à attendre une solution qui n’existe pas à son problème. A cette fin l’algorithme a besoin non seulement de savoir ce qu’est une personne … … mais il a en plus besoin d’une liste ordonnées de toutes les personnes présentes. Cet algorithme n’est peut-être pas le plus efficace. mais il est au moins assuré de se terminer – éventuellement sans résultat, au prix de données plus structurées. Super! OUI NON i=i+1 i>N? Zut! NON OUI
Résumé: un algorithme est … … une suite finie d’instructions élémentaires … … exécutées dans un ordre spécifique … … sur une quantité finie de données … … pour leur appliquer un traitement spécifique … … en espérant un résultat en un temps fini Un tel algorithme peut être Séquentiel Parallèle Réparti Pour résumer ce videoclip, - un algorithme comprend une suite finie d’instructions élémentaires … … qui sont exécutées dans un ordre spécifique, pas nécessairement toujours le même, comme nous verrons plus tard ... … et portent sur une quantité finie de données … Auxquelles elles appliquent un traitement spécifiquement défini par cet algorithme … … dans le but d’obtenir – sauf erreur – un résultat escompté. Un tel algorithme peut être ◮ séquentiel : ses opérations sont exécutées l’une après l’autre dans un ordre qui peut dépendre des données ◮ parallèle : certaines de ses opérations peuvent être exécutées simultanément ◮ réparti : certaines de ses opérations peuvent être exécutées simultanément sur plusieurs machines (répartition géographique).