Introduction à l’algorithmique et aux structures de données
I. Introduction A propos du sujet L’organisation du cours
Plan de séance De quoi est-il question ? Session SDD 2011 Algorithme & SDD : dualité Culture G : histoire et anecdotes Enjeux et principes de l’algorithmique Session SDD 2011 Programme Méthode pédagogique Quelques repères : cours, TD, TP, … Evaluation, coefficients Ce qui change par rapport à 2010 Equipe pédagogique Pour approfondir : bibliographie
Algorithme But : effectuer une opération complexe Données en entrée Production d’un résultat : données en sortie Moyen : succession d’opérations élémentaires Méthode systématique, déterministe Implique une façon de structurer les données à manipuler Equifinalité Plusieurs méthodes possibles Elles ne se valent pas toutes ENJEU : la performance ! Intro Sujet Algo & SDD
Structure de donnée Organisation des données à manipuler Deux grandes familles élémentaires Structures séquentielles Structures arborescentes Plus généralement… les graphes La structure appelle la méthode de traitement SDD séquentielles : traitement naturellement itératif SDD arborescentes : traitement naturellement récursif Intro Sujet Algo & SDD
Etude de cas Deux exemples issus de l’algorithmique numérique Arithmétique But : addition et multiplication SDD : Numération de position vs. TFA A vous de jouer avec 23.32 = 72 et 22.33 = 108 Polynômes But : Evaluer un polynôme SDD : Polynôme développé vs. factorisé Problème : factoriser est difficile Solution : Algorithme de Horner Intro Sujet Algo & SDD
A retenir Algorithme et SDD sont indissociables Se conçoivent ensemble Répondent à un même but Réaliser une opération complexe De la manière la plus performante possible Pour approfondir (niveau ontologique) http://www.scriptol.fr/programmation/algorithme- definition.php Intro Sujet Algo & SDD
Algorithme : origine étymologique Al Khawarizmi, 783-850 Le Diophante perse Chiffres indiens Œuvre : ..Al-jabr.. (825) Résolution d’équations Méthode systématique Condition d’arrêt Structure algébrique Intro Sujet Culture G
Algorithme : l’archétype antique Euclide, 325-265 av. JC Les Eléments (livre 7) Algorithme d’Euclide Calcul du PGCD Intuition géométrique Simplicité : 1 ligne Efficacité : O(n) Généricité : entiers, polynômes, etc. Intro Sujet Culture G
Algorithme : l’archétype antique En langage algorithmique Exemple de traduction en C unsigned gcd(unsigned a, unsigned b) { if (b == 0) return a; else return gcd(b, a % b); // ou // return b ? gcd(b, a % b) : a; } Elaborer (schématiser, tâtonner, intuiter) Spécifier (langage algorithmique) Implémenter (langage de programmation) Intro Sujet Méthode
Et bien avant Euclide Babyloniens 2000 à 500 av. JC Algorithmes pratiques Astronomie Economie Mathématiques Numération sexagésimale Triplets pythagoriciens 1000 ans avant Pythagore Résolution d’équations Elévation à la puissance Intro Sujet Culture G
Et bien avant Euclide Os d’Ishango ~20000 av. JC De nature arithmétique Associé à un procédé Lequel ? Intro Sujet Culture G
L’art d’opérer avec efficacité Rappel de la motivation historique Le calcul : astronomie, économie, mathématique Ishango, les babyloniens, Euclide et les autres Enjeu : la performance (minimiser la complexité) Temporelle, spatiale Equifinalité, optimalité difficile à prouver Nombreux problèmes ouverts L’algorithmique est un domaine de recherche très actif Plutôt un art qu’une science Mais un art scientifique A rapprocher des arts tactiques en général Astuce et sagacité : une anecdote : Karatsuba Intro Sujet Enjeu
Une anecdote contemporaine Kolmogorov, 1903-1987 Monstre sacré Conjecture de 1952 Multiplication ≥ O(n2) Conférence de 1960 Karatsuba, 1937-2008 Simple étudiant Réfutation : O(n1,58) Nouveau paradigme « diviser pour régner » Intro Sujet Culture G
Une anecdote contemporaine Multiplication de deux nombres en numération de position Nombres de 2n chiffres Décomposition en deux moitiés Représentation algébrique de la multiplication naïve Les multiplications sont plus coûteuses que les additions Version naïve : 4 multiplications intermédiaires Forme équivalente de Karatsuba Complexification Mémorisation et réutilisation de résultats intermédiaires Ajout de 3 opérations additives supplémentaires On tombe à 3 multiplications ! Application récursive du procédé : O(n2) O(n1,58) Intro Sujet Culture G