•ommaire                                                             • Introduction                                       ...
OBJETS RECURSIFS (2)                                             -T5MDE&CONQUER(1) • Objet récursif: le nombre de composan...
MÉTHODES RECURSÎVES (1)j Une méthode est dite récursive, si elle fait appel à                   La suite de Fibonacci     ...
-^IViETHODES RECURSIVES                                                                         -"-IVTÉTHODES RECURSIVES(6...
"TYPES DE RECURSIVITE (2)                                                                                                 ...
"ARBRE DE LA REÇURSIVITE (4)                                        ARBRE DE LA RECURSIVITE (5)• Une fois construit, cet a...
Prochain SlideShare
Chargement dans…5
×

Ch2 Algorthmique Avancée - Récursivité

577 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
577
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
63
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Ch2 Algorthmique Avancée - Récursivité

  1. 1. •ommaire • Introduction « Objets récursifs • Méthodes récursives • Divide & Conquer © L. B. Romdhane, Ph.D. • Principe dexécution • Arbre dexécution DSI / FSM / UM / Tunisie • Preuve de terminaison © L. H. Riundbane; FSM.TN BJETS RECURSIFS (1)• John McCarthy (MIT / Stanford) II est parfois difficile de définir un objet directement • Algolôo ( ancêtre de Pascal, PL/1 et C) II est plus simple de définir cet objet en fonction • Lisp : structures de données et traitements récursifs de lui-même• Implémentation en langage de programmation Exemple - chaîne de caractères • au début : certains nimplémentait pas ce concept a) Classique : Une chaîne de caractères est une suite de (COBOL, Fortran) caractères • actuellement : tous les langages b) Récursive : Une chaîne de caractères est soit la chaîne* Objets (structures de données) récursives vide; soit un caractère suivi dune chaîne de caractère* Méthodes (procédures et fonctions) récursives L. B.Romdhanc; FSM.TN 6 L. B. Romdhane; FSM.TN
  2. 2. OBJETS RECURSIFS (2) -T5MDE&CONQUER(1) • Objet récursif: le nombre de composantess (objets) est 0 Diviser pour régner : un p r i n c i p e l n n d . u n r n i . i l p n n r résoudre des problèmes informatiques COmplexei illimité ? • Idée- résoudre un problème S(n) de / < / ! / / < • u m Ir • La nécessité dun point dappui divisant en plusieurs sous-problèmes de même n . i i n i v • un objet particulier permettant de limiter le nombre S(n}, S(n-), ..., S(nk) telque(n,< n); Vs e o m l u n n dobjets dans la définition les solutions pour obtenir celle de S(n) • La notion de taille dépend de la nature du p r o b l è m e ! • Objet récursif : • Tri : le nombre déléments à trier • soit un objet particulier; • Factoriel : la valeur de lentier • soit une composante + un objet récursif • Constitue le principe fondamental de la récursivité > L. B. Runidliane; FSM.TN I L. B. Romdhane; FSM.TN-T5ÎVÎDE & CONQUER{2) "tfJVÎDE & CONQÛÏRlIT 1. Diviser : si la taille du problème est inférieur à un Algorithme Solve (I) Début certain seuil, alors le résoudre directement en allant n<- taille(I) chercher parmi un ensemble de cas particuliers sinon Si (n < seuil) alors solution <- directlySolve(I) Sinon le diviser en un ensemble de sous-problèmes « diviser / en It, I 2 , ..., Ik 2. Régner : Résoudre récursivement les sous- • Pour i de i à k faire S,<-Salvf:(I} problèmes selon le même principe Fin Pour • Solution <— combiner^,,..., Sk ) 3. Combiner : les solutions des sous-problèmes pour Fin Si constituer la solution du problème original Fin. i !.. B, Rumdhane; FSM.TN © L. B. Rumiihani-i FSM.TN ASI)
  3. 3. MÉTHODES RECURSÎVES (1)j Une méthode est dite récursive, si elle fait appel à La suite de Fibonacci fonction fibo ( In n : entier) elle-même entier • Un = U^ + Un.z VAR Méthode myRecursMethod ( ListeParam ) • Ui = i; Uo = o fi, fa, f : entier Environment Début Début: , . 1 Si ((n = o) OU (n=i)) directlySolve(n) : .............,.,,,.„„_ a!ors f <_ n sinon myRecursMethod ( ListeParam) fi (— fibo (n -i) 1. Diviser h <— fibo (n -2) 2. Régner Fin. Fin Si « Nécessité dune condition darrêt qui sera vraie à un 3. Composer j" retourner (f ) instant ultérieur de lexécution Fin. «5 L. M. Ruiiiiilitinc; KSM.TN L. B. Romdliane; FSM.TN-METHODES RECURSIVES (3) Algorithme CalcFib RCrjRST7fs4) fibo • Environnement dune méthode contient les VAR X : entier ? : "valeur indéfinie" Début fz:? informations suivantes : X <- fibo (3) @ : ligne i • variables locales & paramètres de la méthode Fin. main fonction ilbo( in n : entier) : entier x:? • variables locales du compilateur VAR fl, G, f: entier Début • @ de retour dans la méthode appelante; etc. 1. Si (n = 0)OU(n=l) fibo n :2 fi:? • Les appels à une méthode sont stockés dans une pile 2. ulvrs f <— n fi:? 3. sîiiun dexécution (frame stack) 4. f 1 <- fibo (n -1) @ : ligne i, 4 11:3 fibo • Empiler un nouveau environnement par appel récursif 5. f2 «- fibo (n -2) n:3 fi;? 6. f * - f l + f 2 £2:? f:? • Dépiler si la méthode sest terminée FiiiSi 7. retourner (f) main Fin. iO L. B, Roruiihane; FSM.TN AS!) ) L. B. Romilhane; FSM.TN AS1>
  4. 4. -^IViETHODES RECURSIVES -"-IVTÉTHODES RECURSIVES(6) fibo <dD fibo <j fibo <j fibo <f fibo Cq ^ fibo <^ u n :i fi:? n : i fi:? n : i fi: ? n : o fi:? n : o fi;? n : o fi:? fa:? f:? f z : ? f :i fa : ? f : i fa :? f : ? fa:? f : o fa:? f:o @ : ligne i @ : ligne 2 @ : ligne 7 @ : ligne i @ : ligne 2 @ : ligne 7 fibo fibo fibo fibo <; fibo fibo fibo fibo A zî fibo ç J- n :a fi: ? n : 2 fi:? n :2 fi:? n : 2 fi: i n ; 2 fin n : 2 fi :i n : 2 fi:i n : 2 fi:i n:i fi:? f a : ? f :? fa:? f:? fa : ? f : ? fa : ? f : ? fa:? f : ? h: ? f : ? f a : ? f :? fa :o f :i fz : ? f : ? @ : ligne 4 @ : ligne 4 @ : ligne 4 @ : ligne 5 @ : ligne 5 @ : ligne g @ : ligne 5 @ : ligne 6, 7 @ : ligne i fibo fibo fibo fibo fibo fibo 11:3 fi:? n : 3 fi : ? n : 3 fi : ? 11:3 fi:? fibo fibo fibo £^ fibo n: 3 fi: ? n: 3 fi :? n : 3 fi:? n: 3 fi: ? 11:3 fi:i n:3 fi:i f a : ? f :? £2: ? f :? fa:? f : ? fa : ? f : ? f a : ? f :? fa : ? f : ? fa:? f:? fa :? f :? fa : ? f : ? fa : ? f : ? @ : ligne 4 @ : ligne 4 @ : ligne 4 (!$ : ligne 4 @ : ligne 4 @ : ligne 4 @ : ligne 4 @ : ligne 4 @ : ligne 5 @ : ligne 5 main main main niai n main main main main main main x:? x:? x:? x:? x: ? x:? x:? x:? x: ? x: ? i L. B. Roimihanc; FSM.TN L. B. Romdliane; FSM.TN-IViÉTHODES RECURSWËS (7) DE RECURSIVITË (1) • On distingue les types de récursivité suivants • Linéaire fibo C • une méthode sauto-appelle une seule fois n:i fi:? • factoriel, puissance fz:? f i • Binaire @ : ligne 2,7 fibo fibo • une méthode sauto-appelle une seule fois M3 (^ n: 3 fi : i n:3 fi: i • fibonacci fa:? f:? fa:i f:a • Multiple @ : ligne 5 @ : ligne 6, 7 main main mam < • une méthode sauto-appelle plus que deux fois x :? x: ? x:. L. B. Romdhane; ESM.TN © L. B. Romdhane; FSM.TN
  5. 5. "TYPES DE RECURSIVITE (2) DE LA RECURSIVITE (1) Factoriel (n) Puissance (x, n) A Lexécution dune méthode récursive peut êtPefonction factoriel(n : entier) : ~Joncnôn pulssahcefx: réel, n : entier) : modélisée à laide dun arbre réel entier VAR r : r é e l • un ensemble de nœuds; et de liens (parent / fils) VAR f : entier Début • et une racine ïi (n=o) alors r «— iDébut iinon MOD 2.) -o alors • Utilité ? si (n=o) alors f f- o *— pul6fiance(Xj n DIV z) sinon f <-- n * factoriel (n-i) <— r * r 1. une meilleure compréhension du déroulement fin Si pulsuncefo (n -0 DIV 2) 2. un outil formel pour analyser le coût dexécutionretourner (f ) - K *r *r fin Si dune méthode récursiveFin. fin Si retourner (r) lin. 10 L. U. Kuimiliiuic; KSM.1N © L. B. Romdhane; FSM.TN DE LA RECURSIVITE (3) A chaque nœud de larbre, on représente lensemble des paramètres de lappel récursif, la taille du problème, etc. La racine est constitué du premier appel à la méthode Chaque appel récursif est représenté dans un nœud fils du nœud où lappel a été engendré Les nœuds terminaux (ou feuilles) nengendrent aucun appel récursif • Ils représentent les cas de base (où la taille du problème est inférieur au seuil critique) © L. B. Romdhane; (SM.TN C L, B. Romdhime; FSM.TN ASD
  6. 6. "ARBRE DE LA REÇURSIVITE (4) ARBRE DE LA RECURSIVITE (5)• Une fois construit, cet arbre fournit un outil mathématique pour analyser le coût dexécution dune • coût: nombre fibo (3) 13] méthode récursive dopérations dajjlftkm &• Calculer le coût à chaque appel; puis sommer sur tous daffectation les nœuds de larbre • coût total = 9 fibo-U) j3 j fibo (i) j• coût total est fonction • Quel serait le coût pour • du nombre de nœuds (nombre dappels) fibo (n) dune manière • Le coût à chaque nœud (appel) générale ? 2 > O !.. H. K dhane; KSM.TM G L. B. Romdhane; FSM.TN"DISCUSSION -TERMINAISON • Une méthode récursive finit-elle toujours par sarrêter Lexactitude dune méthode récursive est faite lorsquelle est exécutée sur un jeu de données bien généralement par induction ^ -~ —""•- déterminée ? Soit P(n) une proposition dont on veut démontrer » Un problème non-décidable ! lexactitude 8 Aucune preuve formelle Démontrer que P(n) est vraie Vne W] où 14/estun • Généralement, on fait appel au « bon sens » ensemble de cas de base connus • vérifier que la taille du sous-problème est inférieur à la Exprimer P(n) en fonction de P(n), ..,, P(nk); où n ( < n taille du problème original avant lappel récursif Supposer que P(n),..., P(nk); sont vraies; et > vérifier les conditions dexécution avant de lancer lappel Démontrer que P(n) est vraie récursif O L. B. Rimidhane; VSM.TN © L. B. Roindhane; FSM.TN

×