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 2: “Divide & Conquer” 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 Après un 1er clip qui a introduit le sujet et donné un exemple de conception d’algorithme par l’approche descendante, le présent clip décrit une 1ère méthode descendante appelée en anglais «Divide & Conquer», en français « diviser pour régner » ou originalement dans le latin de César « Divide et impera ».

3 Divide & Conquer (Diviser pour régner) …
… est l’archétype des méthodes descendantes de conception d’algorithmes => Diviser/regrouper les données par raffinements successifs pour résoudre des (sous-)problèmes de plus en plus simples L’idée n’est pas nouvelle «Diviser chacune des difficultés que j’examinerois, en autant de parcelles qu’il se pourroit, et qu’il soit requis pour les mieux résoudre » (Descartes, Discours de la Méthode, 1637) Cette méthode est en fait un archétype, un peu la mère de toutes les méthodes de conception descendantes. - Elle consiste à diviser les données à traiter en de petits groupes de façon à résoudre le problème donné par raffinements successifs en sous-problèmes de plus en plus simples. Cette idée qui est le fondement de la notion d’hiérarchie n’est d’ailleurs ni nouvelle ni réservée au domaine des algorithmes: Elle a été appliquée comme stratégie militaire et politique depuis Philippe de Macédoine à aujourd’hui en passant par César, Louis XI, les Habsburgs, Napoléon, Francis Bacon, Immanuel Kant et bien d’autres. En matière de résolution de problèmes, Descartes la suggérait déjà dans en 1637 dans son Discours de la méthode que l’on pourrait paraphraser en disant: «Diviser chacune des difficultés à résoudre en autant de pièces que possible et nécessaire pour résoudre chacune plus aisément»

4 Divide & Conquer (Diviser pour régner)
Schéma général de l’approche « diviser pour régner » dans le cas d’un problème P portant sur des données d Dans le cas général d’un problème P portant sur un ensemble de données D, le schéma de base de cette approche « Divide & Conquer » peut être décrit de la façon suivante. 1 On désire soumettre un ensemble de données D à un algorithme encore inconnu (ici en noir) dont on attend qu’il produise des résultats Y. 2 On commence par voir comment on pourrait diviser les données D en une série de sous-ensembles cohérents d1, d2, etc. jusque dn posant chacun des sous-problèmes quelconques dont on suspecte qu’ils sont plus simples à résoudre et mèneraient en fin de compte à une solution du problème P. 3 On considère alors chacun à son tour ces sous-ensembles de données Di et on leur applique la même technique, essayant de les subdiviser successivement en sous-ensembles cohérents de plus en plus raffinés dont on espère que le traitement sera de plus en plus simple. On commence ainsi avec le sous-ensemble D1,1 dont on attend un résultat Y1. 4 On divise ce sous-ensemble en les sous-ensembles D1,1 à D1,n. 5 De chacun de ces sous-ensembles du 2e niveau on attend des résultats Y1,1 à Y1,n. On pourrait ainsi continuer à subdiviser ces sous-ensembles de façon toujours plus fine. Mais nous ferons ici l’hypothèse que D1,1 à D1,n sont des sous-ensembles assez simples dont les traitements sont assez aisés et pour lesquels nous disposons d’algorithmes connus ou pouvons aisément nous imaginer concevoir nous-mêmes un nouvel algorithme assez simple. 6 Si et quand le traitement de tous ces sous-ensembles D1,1 à D1,n est ainsi résolu, on a donc une solution algorithmique (ici en rouge) au traitement de D1, et les résultats Y1,1 à Y1,n constituent ensemble le résultat Y1 attendu de D1. 7 On procède de même pour la décomposition successive de tous les autres sous-ensembles de données au même niveau, D2 à Dn dans le cas présent, chacun menant à un sous-algorithme et fournissant en son temps et à son tour les résultats Y2 à Yn. 8 L’ensemble de ces sous-algorithmes représentent en fin de compte une solution algorithmique au problème P et leurs résultats Y1 à Yn constituent le résultat Y attendu de cette solution. d d1 d1,1 d1 d1,1 d1,n d2 d1,n y1,1 dn y1,n yn, y2, y1 Y

5 Divide & Conquer (Diviser pour régner)
Concept de base de l’approche « diviser pour régner » dans le cas d’un problème P portant sur des données d Si d est « assez simple » appliquer un algorithme « ad hoc » qui résout le problème (cas triviaux) Sinon décomposer d en instances plus petites d1, ..., dn résoudre Pi(di) pour chacune des di => solution yi recombiner les yi pour former Y = solution au problème de départ => Ceci conduit souvent à des algorithmes dits récursifs En conclusion donc, dans le cas général d’un problème P portant sur un ensemble de données D, le concept de base de l’approche « Divide & Conquer » peut être exprimé de la façon suivante. 1 Si l’ensemble de données à traiter D est « assez simple » (où « assez simple » est évidemment une tautologie subjective) on crée un petit algorithme simple ou on pêche un candidat ad hoc dans son arsenal d’algorithmes connus, ce qui résout le problème dans tous les cas triviaux, c.à.d. ceux pour lesquels on peut facilement inventer un algorithme simple ou on dispose précisément d’algorithmes déjà connus. 2 Sinon on commence par décomposer D en sous-ensembles plus simples D1 à Dn. 3 Pour chacun de ces sous-ensembles D1 à Dn on tente de résoudre le problème Pi pour le sous-ensemble Di de façon à obtenir des résultats intermédiaires Yi (quitte à devoir diviser les Di en sous-ensembles toujours plus fins Di,j,k,l,m,n,etc. produisant des résultats intermédiaires Yi,j,k,l,m,n,etc.) 4 Quand on est arrivé à diviser D de la sorte en sous-ensembles suffisamment simples pour que des sous-algorithmes susceptibles de résoudre chacun des sous-problème Pi soient simples ou connus et fournissent les résultats intermédiaires Yi, on recombine tous ces sous-algorithmes et leurs résultats en l’algorithme final désiré produisant le résultat escompté Y. 5 Comme on peut le suspecter au travers de cette discussion, ce processus de divisions successives mène typiquement à des algorithmes dits récursifs qui sont le sujet du clip suivant.


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

Présentations similaires


Annonces Google