La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Information, Calcul, Communication

Présentations similaires


Présentation au sujet: "Information, Calcul, Communication"— Transcription de la présentation:

1 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

2 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.

3 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

4 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

5 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})

6 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.


Télécharger ppt "Information, Calcul, Communication"

Présentations similaires


Annonces Google