Information, Calcul, Communication

Slides:



Advertisements
Présentations similaires
Gestion de la concurrence avec Entity Framework Développement d’application avec base de données Chapitre 23 Hugo St-Louis – Automne 2015.
Advertisements

1 UE Intro Opti L3 INFO UPSud Programmation linéaire en variables entières (ou mixtes) : résolution approchée par heuristique
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
ANNEE ACADEMIQUE Institut Supérieur Emmanuelle D’Alzon de Butembo COURS: THEORIE DE BASE DE DONNEES : 45H PROMOTION: G2 Gestion Informatique.
Semaine 8 Retour sur les tableaux : fonctions et récursivité
SITUATION DE REFERENCE
Information, Calcul, Communication
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
Information, Communication, Calcul
Information, Calcul, Communication
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
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Information, Communication, Calcul
Information, Calcul, Communication
Information, Calcul, Communication
Information, Calcul, Communication
Information, Calcul, Communication
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Techniques de décomposition
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Présentation générale Marc Gengler
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
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
Master Réseaux et Systèmes Distribués (RSD)
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Algorithmiques Abdelbasset KABOU
Information, Calcul, Communication
Chapitre 12 Surveillance des ressources et des performances
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Information, Calcul, Communication
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Le contenu d’un journal : les rubriques
ACP Analyse en Composantes Principales
Le contenu d’un journal : les rubriques
Royaume de Maroc Université Hassan Premier Settat Faculté des Sciences et Techniques de Settat LA CLASSIFICATION K-MEANS SOUS R /MATLAB Master :Automatique.
Evaluation par compétences
Les Gratte-ciel.
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Information, Calcul, Communication
CSI 3505 Algorithmes Voraces
RABAH M ed Ali 2018/2019
Piles et files.
Programmation Scratch
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.
Chapter 11: Récursivité Java Software Solutions Second Edition
La programmation dynamique
Transcription de la présentation:

Information, Calcul, Communication Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne fait partie de son cours d’introduction à l’information, à la communication, et au calcul. Il s’inscrit dans le 1er module du cours qui offre une 1ere approche des notions de calcul et d’information. Information, Calcul, Communication 1. Information & Calcul – Leçon 2: Conception des Algorithmes Clip 5: Recursion – Déroulement J. Sam, J-C. Chappelier, R. Boulic, commentaire: P. Janson

Plan de la leçon Introduction Approche descendante Sommaire Divide & conquer Récursion Principe Exemple: les tours de Hanoï Terminaison Exemple: somme des N premiers nombres entiers Déroulement Exemple: tri par insertion Programmation dynamique Exemple: calcul du plus court chemin Sommaire Prenons un autre exemple de récursion – le tri par insertion traité cette fois de façon récursive – pour bien comprendre le déroulement et les propriétés relatives d’un algorithme récursif.

Tri par insertion – Version récursive Schéma canonique Tri_par_insertion_récursif Entrée: liste de n éléments Sortie: liste triée Le schéma de base du traitement récursif de ce problème de tri est le suivant: 1 Comme d’habitude, on commence par donner un nom à ce nouvel algorithme. 2 En entrée il va évidemment attendre une liste à trier de N éléments et en sortie on attend qu’il livre cette liste triée selon un ordre que nous désirons croissant. 3 Etant donné la nécessité de terminer la récursion comme discuté dans le clip précédent, la 1e opération de cette version récursive de l’algorithme doit être un test de terminaison, en l’occurrence le tri se termine toujours si la liste ne contient plus qu’un élément (ou est même vide dans le cas pathologique). 4 Ensuite vient la partie récursive ou l’algorithme s’invoque lui-même pour trier une liste de N-1 éléments. 5 Enfin la liste de taille N-1 étant triée, l’algorithme de tri par insertion se termine en insérant à la bonne place dans cette liste le Ne élément restant. Condition d’arrêt: moins de 2 éléments => liste triée Insertion du ne élément dans la liste triée de n-1 éléments Tri_par_insertion_récursif (version réduite) Entrée: liste de n-1 éléments Sortie: liste triée

Tri par insertion – Version récursive Illustration de la récursion du point de vue des données 1 3 5 2 6 4 1 3 5 2 6 4 Du point de vue de l’évolution de la liste de données à trier, on peut visualiser le déroulement de ce tri par insertion récursif de la façon suivante. 1 Partant par exemple d’une liste désordonnée de 6 éléments … 2 … la 1e invocation récursive vise à trier la liste des 5 premiers éléments avant d’y insérer dans l’ordre le 6e élément. 3 Le tri de la liste de 5 éléments va évidemment se faire de la même façon récursive dont nous ne représenterons pas les détails ici et fournira à terme une version triée de la liste des 5 premiers éléments. 4 La 1e invocation récursive de l’algorithme pourra alors se terminer en insérant à la bonne place le 6e élément restant de la liste originale … 5 … ce qui fournira finalement la liste complète triée comme escompté. Tri récursif 1 2 3 5 6 4 Insertion 1 2 3 4 5 6

Tri par insertion – Version récursive Déroulement des invocations sur une liste de 3 éléments {C, B, A} {A, B, C} Invocation originale 4 Il est possible de représenter et de visualiser toutes les invocations dans le cas simple d’une liste limitée à 3 éléments {C, B, A} par exemple. 1 L’invocation originale de l’algorithme vise dans ce cas à trier cette liste originale. 2 La 1e invocation récursive va tenter de trier les 2 premiers éléments de cette liste, laissant le soin à l’invocation originale d’y réinsérer ultérieurement le dernier élément. 3 Pour résoudre son problème, cette 1e invocation récursive ne fait rien d’autre que s’empresser de déclencher une 2e invocation récursive pour trier une liste plus courte dans laquelle elle pourra ultérieurement réinsérer le 2e élément. 4 Cette liste plus courte étant en fait limitée au cas trivial d’un seul élément, la 2e invocation récursive se termine sans 3e invocation et renvoie comme étant triée la liste dégénérée d’un seul élément à la 1e invocation récursive qui y réinsère le 2e élément original (B) mais cette fois à la bonne place, c.à.d. avant et pas après C. 5 Ceci termine la 1e invocation récursive qui fournit alors la sous-liste maintenant triée de 2 éléments à l’invocation originale. laquelle y réinsère alors le 3e et dernier élément (C) de la liste originale, cette fois à la bonne place, c.à.d. en tête et pas en queue de liste. 6 L’invocation originale se termine alors et la liste originale à présent triée est disponible comme résultat final. Tri_par_insertion_récursif({C, B, A}) Insertion de A dans {B, C} 1 {B, C} 1e invocation récursive 3 Tri_par_insertion_récursif({C, B}) Insertion de B dans {C} 2 {C} 2e invocation récursive Tri_par_insertion_récursif({C})

Confirmation de la remarque déjà observée La solution récursive d’un problème n’est pas toujours la seule et rarement la plus efficace ... ... mais elle est parfois beaucoup plus simple et/ou plus pratique à mettre en oeuvre! Exemples: tri, traitement de structures de données récursives (e.g. arbres, graphes, ...), etc. Au terme des différents exemples d’algorithmes récursifs vu dans les 3 derniers clips, nous ne pouvons que souligner une fois de plus l’observation déjà faite lors de notre exemple concernant la somme des N premiers entiers: 1 Il y a parfois des alternatives à la solution récursive à un problème et ces alternatives peuvent même souvent être plus efficaces. 2 Par contre les solutions récursives peuvent parfois être beaucoup plus simples et plus pratiques à développer que les solutions alternatives. 3 C’est typiquement le cas pour tous les problèmes tels que tri ou manipulation d’autres structures de données intrinsèquement récursives, telles que listes, hiérarchies, graphes, etc.