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

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

Embed Size (px)

Citation preview

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

1

Principe et exemplesLe paradigme « divide & conquer »

III. Récursivité

Page 2: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

2

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

Page 3: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

3

Exemples

la factorielle La puissance (exponentiation) Le pgcd cf. Euclide

Page 4: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

4

La factorielle

1 si 0

!1 ! si 0

nn

n n n

Récursivité Exemples Factorielle Récursif

Page 5: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

5

La factorielle

1 si 0!

1 si 0

nn

n n

Page 6: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

6

La puissance

1

1 si 0

si 0n

n

na

na a

Page 7: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

7

La puissance

1 si 0

si 0n

n

na a a n

Page 8: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

8

Euclide

si 0

si 0ab

a ba b

b b

Page 9: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

9

Euclide

Page 10: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

10

Diviser pour régner

Principe 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 S’adapte très bien à un traitement

distribué (//)

Page 11: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

11

Exemples notables

Tris Tri rapide, tri fusion, …

Compilation Analyse descendante

Page 12: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

12

Exo: 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

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 d’un élément donné

(et pour retourner 0 si cet élément n’est pas trouvé)

Page 13: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

13

Exo: dichotomie

Page 14: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

14

Exo: exponentiation rapide

1

1 si 0

si 0n

n

na

na a

2

1

2

1 si 0

si 0 et 1 2

si 0 et 0 2n

n n

n

a a a n n

a n n

Page 15: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

15

Exo: exponentiation rapide

Page 16: Principe et exemples Le paradigme « divide & conquer » III. Récursivité 1

16

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

A retenir