III. Récursivité Principe et exemples

Slides:



Advertisements
Présentations similaires
Tris.
Advertisements

Chapitre annexe. Récursivité
Fonctions & procédures
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Les Algorithmes de tri.
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
Cours d'algorithmique 8 - Intranet 1 4 décembre 2006 Cours dAlgorithmique Dérécursion (fin) : Équivalences entre programmes récursifs et programmes itératifs.
CHAPITRE 2 Nombres entiers, initiation à l’arithmétique- Nombres rationnels.
Enseigner l’arithmétique en série L
Utilisation des tableaux
Références Bibliographiques
ALGORITHMES RECURSIFS
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
ALGORITHMIQUE Plan du cours Généralités -définition -importance
II. Chaînage, SDD séquentielles
Introduction à la récursivité
ASI 3 Méthodes numériques pour l’ingénieur
Bibliothèque standard du C++
Methode de Tri efficace
Standard Template Library (STL)
Transformée de Fourier discrète et transformée de Fourier rapide
Abder Alikacem Semaine 13 La récursivité
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
STRUCTURES DE DONNÉES Maxime CROCHEMORE

Algorithmique (Introduction)
Messages Pas de dépannage mardi le 26 à 11h30. Achat de groupe de Matlab version étudiante?
Algorithmique et structures de données en C
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
III. Récursivité Principe et exemples
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.

RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
Diviser pour résoudre A. Principe général B. Applications
Introduction à l’algorithmique et aux structures de données
ASI 3 Méthodes numériques pour l’ingénieur
V. Complexité  Exemples pour démarrer (tri insertion, tri fusion)
Chapitre 6 Les traitements avancés
5 – Application: gestion de polynômes
ASI 3 Méthodes numériques pour l’ingénieur
Méthodes de tri.
Programmation créative – Les vecteurs
Arbres binaires et tables de hachage
Cours 4 - Trois algorithmes de recherche dans un tableau
Septembre Semaines du 2 au 13 septembre DATECOURSEXERCICESEXERCICES à fairePOUR le Jeudi 4 Prise de contact Rappels sur les suites 2 exemples donnés pour.
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 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
?...1…-13…( )…+…-… …-(-2)…-(5-7)…-2+6…?
Les algorithmes recursifs
Introduction à la récursivité
Chapitre 1 Nombres relatifs.
La Récursivité.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Pour Chapitre 1 – Sens de Nombres
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Algorithmes de tri.
Structures de données IFT-2000
La récursivité.
Opérations sur les nombres relatifs
VI. Tri par tas.
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.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
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.
1. Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2.
Opérations sur les nombres relatifs Chapitre 1 Classe de 4ème.
Complexité algorithmique
Transcription de la présentation:

III. Récursivité Principe et exemples Le paradigme « divide & conquer »

Récursivité Algorithme récursif vs. itératif Qui s’appelle lui-même vs. non Lien filial avec les maths Définition du terme d’une suite par une récurrence Avantage Une conception plus simple moins de risque d’effets de bord Inconvénient Une complexité plus importante (pile d’appels) plus lent Récursivité Principe

Exemples la factorielle La puissance (exponentiation) Le pgcd cf. Euclide Récursivité Exemples

La factorielle Récursivité Exemples Factorielle Récursif

La factorielle Récursivité Exemples Factorielle Itératif

La puissance Récursivité Exemples Puissance Récursif

La puissance Récursivité Exemples Puissance Itératif

Euclide Récursivité Exemples Euclide Récursif

Euclide Récursivité Exemples Euclide Itératif

Mais… Cf. Euclide, il n’est pas toujours simple de transposer Exemple : donner une version itérative de : Récursivité Naturelle

Mais… Récursivité Naturelle

Diviser pour régner Principe Paradigme de conception Scinder un problème en sous-problèmes De tailles équivalentes De même nature que le problème principal Sous-traiter puis agréger les résultats Paradigme de conception Récursif + équilibrage A la base de nombreux algorithmes puissants En général O(…n)  O(…lnn) S’adapte très bien à un traitement distribué (//) Récursivité Div & Conq Principe

Exemples notables Tris en O(nlnn) Tri rapide, tri fusion, … Multiplication O(nvous le savez déjà) Karatsuba et ses successeurs Compilation Analyse descendante FFT, O(nlnn) L’algorithme qui en accélère un tas d’autres Imaginé par Gauss (1805) Redécouvert par Cooley-Tukey (1965) Récursivité Div & Conq Exemples

Exo: dichotomie Récursivité Div & Conq Applications Dichotomie EN : Binary search algorithm But : identifier une solution dans un espace de recherche Stratégie Diviser l’espace en deux Décider dans quelle moitié d’espace chercher Appliquer récursivement Arrêter quand l’espace se réduit à un seul élément Complexité : O(lnn) Application Recherche de racines de fonctions (théorème des valeurs intermédiaires) Exercice Concevoir un algorithme pour rechercher l’index, dans un tableau trié d’éléments 2 à 2 distincts, d’un élément donné (et pour retourner 0 si cet élément n’est pas trouvé) Récursivité Div & Conq Applications Dichotomie

Exo: dichotomie Récursivité Div & Conq Applications Dichotomie

Exo: exponentiation rapide Récursivité Div & Conq Applications Puissance

Exo: exponentiation rapide O(n)  O(lnn) 1 000 000 000  21 Sauriez-vous le démontrer ? Récursivité Div & Conq Applications Puissance

Exo: multiplication de Karatsuba 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) Récursivité Div & Conq Applications Multiplication

Exo: multiplication de Karatsuba Nous disposons d’utilitaires longueur(N) : retourne le nombre de chiffres de N droite(N, k) : supprime k chiffres sur la droite de N gauche(N, k) : ajoute k de zéros sur la droite d’un Nombre produit_scalaire(N, s) : simplement N + … + N, s fois Principe Si A < B, interchanger les opérandes Mesurer les longueur lA et lB Si B est un scalaire, terminaison : retourner le produit_scalaire Sinon scinder A et B et produire les termes dérivés Effectuer les 3 produits par délégation (appels récursifs) Assembler et retourner le résultat Récursivité Div & Conq Applications Multiplication

Exo: multiplication de Karatsuba Récursivité Div & Conq Applications Multiplication

Exo: multiplication de Karatsuba Récursivité Div & Conq Applications Multiplication

Pour conclure Application : changement de base Conception Comparez ! Cela revient à évaluer un polynôme Concevez la version naïve Concevez une version qui réunit Algorithme de Horner Exponentiation rapide Multiplication de Karatsuba Comparez ! Récursivité Conclusion

A retenir La version itérative est un peu plus performante que la version récursive d’un même algorithme Concevoir suivant le paradigme récursif du diviser pour régner produira généralement un algorithme radicalement plus performant que celui pensé suivant un paradigme itératif Récursivité Conclusion