• Aucun résultat trouvé

7févie2008 É ieS Bi Uiveiédei eShia Ai

N/A
N/A
Protected

Academic year: 2022

Partager "7févie2008 É ieS Bi Uiveiédei eShia Ai"

Copied!
47
0
0

Texte intégral

(1)

Liene 2MASS - Algorithmique etInformatiqueThéorique

Sébastien Verel

vereli3s.unie.fr

www.i3s.unie.fr/

verel

ÉquipeSoBi-UniversitédeNieSophia-Antipolis

(2)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Objetifs de la séane 3

savoir démontreràl'aidedu prinipe de réurrene

savoir dénirle lienentre preuvepar réurreneet algorithme

réursif

ériredes algorithmesréursifs omme parexemple elui

alulant lafatorielleet reherhant unélémentpar

dihotomie

Questions prinipales dujour :

Comment ériree quel'onne onnaitpas enore?

(3)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Plan

1

Preuve parréurrene

Exemples

Prinipe de réurrene

2

Algorithmesréursifs

Exemples

Dénition

Algorithmes lassiques

(4)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve par réurrene simple

Inégalité de Bernouilli(1700- 1782)

Pour tout x

>

0,et pourtout entiern,

(

1

+

x

)

n

1

+

nx

(5)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve

Soit pourtout n

IN,lapropositionP n

:"

(

1

+

x

)

n

1

+

nx".

"départ"

(

1

+

x

)

0

=

1 et1

+

0

.

x

=

1,

d'où

(

1

+

x

)

0

1

+

0

.

x

don P

0

estvrai.

(6)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve

Pour tout n

IN,Pn

:"

(

1

+

x

)

n

1

+

nx".

Hérédité Supposonsqu'il existen

IN,tel quePn

soit vrai.

Montronsque P

n

+

1

est vrai.

(

1

+

x

)

n

+

1

= (

1

+

x

)

n

(

1

+

x

)

.

D'après l'hypothèsede réurrene,nous avons

(

1

+

x

)

n

+

1

≥ (

1

+

nx

)(

1

+

x

)

.

Cequisedéveloppe en

(

1

+

x

)

n

+

1

1

+ (

n

+

1

)

x

+

nx2.

Orx

>

0,nous avonsdon

(

1

+

x

)

n

+

1

1

+ (

n

+

1

)

x.

Nous avonsdémontrél'hérédité de P :

∀ ∈ , ⇒

(7)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve

"départ" P

0

est vrai.

Hérédité Nous avonsdémontrél'hérédité de P :P

n

Pn

+

1 .

don d'après leprinipe duraissonnementparréurrene,

(8)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve par réurrene double

Suite de Fibonahi, formulede Binet

Soit lasuite

u

0

=

1

u

1

=

1

u

n

+

2

=

un

+

un

+

1

, ∀

n

IN

Alors

n

IN,un

= √

1

5

n

+

1

− µ

n

+

1)ave

λ =

1

+

5

2

et

µ =

1

5

2 .

(9)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve par réurrene double

Soitpourtoutn

IN,lapropositionP n

:"u

n

= √

1

5

n

+

1

− µ

n

+

1

)

".

"départ"

1

5

(λ − µ) =

1

=

uO

don P

0

est vrai.

1

5

2

− µ

2

) =

1

=

u1

donP

1

est vrai.

(10)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve par réurrene double

Pour tout n

IN,Pn :"u

n

= √

1

5

n

+

1

− µ

n

+

1

)

".

Hérédité Supposonsqu'ilexisten

IN,tel quePn etP

n

+

1

soientvraies.

Montronsque P

n

+

2

est vraie.

u

n

+

2

=

un

+

un

+

1 d'où u

n

+

2

= √

1

5

n

+

3

1

+ λ

2

) − µ

n

+

3

1

+ µ

2

))

.

Or

λ

2

= λ +

1 (nombre d'or)d'où

λ

1

+ λ

2

=

1.Demême,

µ

1

+ µ

2

=

1.

Nous obtenons donu

n

+

2

= √

1

5

n

+

3

− µ

n

+

3

)

.

Nous avonsdémontrél'hérédité de P :

n

IN

, (

Pn

Pn

+

1

) ⇒

Pn

+

2 .

(11)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Exemple de preuve par réurrene double

"départ" P

0

est vrai.

P

1

est vrai.

Hérédité Nous avonsdémontrél'hérédité de P :

(

Pn

Pn

+

1

) ⇒

Pn

+

2 .

don d'après leprinipe duraissonnementparréurrene,

pour tout n

IN,Pn

est vrai.

(12)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Prinipe

Deux étapes à démontrer:

le caractère héréditaire

Si Pn est vraie

pour un n>= n0 Pn+1 est vraie alors Pn0 est vraie

l’initialisation

Pour onlure:

P

n

est vraiepourtout n

n0

(13)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exemples

Prinipederéurrene

Raisonnement par réurrene

Raisonnement parréurrene

Soit pourtout n entier,unepropositionP

n .

S'il existeune entiern

0

telque P

n0

est vraietpour toutk

n0 ,

P

k

Pk

+

1

alorspourtout entiern

n0 ,P

n

estvrai.

(14)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exemple du alul du pgd

Algorithme PGCD(a ,b :entier): entier

début

sib

=

0 alors

retourner a

sinon

amodulob

retourner PGCD(b,)

nsi

n

(15)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exéution de l'algorithme

Pour a

=

70et b

=

462

1. PGCD(70, 462)

2. b

6=

0

5.

=

70

6. PGCD(462, 70)

2. b

6=

0

5.

=

42

6. PGCD(70, 42)

6=

(16)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exéution de l'algorithme

Pour a

=

462 etb

=

70

6. PGCD(28, 14)

2. b

6=

0

5.

=

0

6. PGCD(14, 0)

2. b

=

0

3. PGCD =2

(17)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Elements de l'algorithme

Base :initialisationde laréurrene

si b

=

0alors

retournera

sinon

...

n si

Hérédité:alul àpartirde paramètresplus "petits"

si b

=

0alors

...

(18)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Dénition (informelle)

Algorithmesréursifs

Un algorithmeréursifest unalgorithmequifaitappel àlui-même

dans leorps de sapropre dénition.

Il existe deuxtypesd'algorithmes réursifs:

les algorithmes réursifsquise terminent :

au boutd'un nombrenid'opérations,l'algorithmes'arrête.

les algorithmes réursifsquine seterminent pas :

on peut imaginerquel'algorithmeontinue "éternellement"de

aluler.

(19)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exemples

Algorithme suiteU(n :entier) :réel

début

sin

=

0alors

retourner 2

sinon

retourner 1

2

suiteV

(

n

1

) +

2

nsi

n

(20)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exemples

Algorithme suiteV(n :entier) : :réel

début

sin

=

0alors

retourner 2

sinon

retourner 1

2

suiteV(n-1)

+

2

nsi

n

suiteVest unalgorithmerésursif quisetermine

(21)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exemples

Algorithme suiteW(n:entier) :réel

début

sin

=

0alors

retourner 2

sinon

retourner 1

2

suiteW(n-3)

+

2

nsi

n

(22)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exemple d'exéution

Caluldelapuissane

Dénition mathématique :

a n

=

1

,

si n

=

0

a

n

1

.

a

,

sinon

Algorithme puissane(a:réel, n :entier) :réel

début

sin

=

0alors

retourner 1

sinon

retourner puissane(a,n-1) *a

nsi

(23)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exemple d'exéution

Caluldelapuissane

Calulde

(

2

.

5

)

3 :a

=

2

.

5et n

=

3.

1. puissane(2.5, 3)

2. > puissane(2.5,2)

3. ->puissane(2.5, 1)

4. -> puissane(2.5, 0) =1

5. ->puissane(2.5, 1) =1 *2.5=2.5

(24)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Prinipe d'exéution

...

0 1 N−3 N−2 N−1 N

(25)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Intérêts

bienadapté àla résolutionde ertainsproblèmes(et pas

seulement mathématiques!)

algorithmessouvent moins"laborieux"àérire:

moinsde variables,beauoups moinsde boules.

une résolutionparalgorithmeréursifnéessitesouvent de

prendre dureulpour résoudreleproblème (avantage!)

(26)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

A ne pas oublier!

Hérédité:alul àpartirde paramètresplus "petits"

si b

=

0alors

...

sinon

...

retournerPGCD(b,b mod a )

n si

n

...

0 1 N−3 N−2 N−1 N

(27)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

A ne pas oublier!

Base :initialisationde laréurrene

si b

=

0alors

retournera

sinon

...

n si

0 1 N−3 N−2 N−1 N

(28)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Parallèle entre prinipe de réurrene et algorithme réursif

dénitionmathématique parréurrene

trèsprohe

dénitiond'un algorithme réursif(f.puissane)

Modes dealul prohes :

a

3

=

a

.

a2

=

a

.

a

.

a1

=

a

.

a

.

a

(29)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

A méditier

Caluldelapuissane

Algorithme puissaneTerminale(a :réel,n : entier,a : réel):

réel

début

sin

=

0alors

retourner a

sinon

retourner puissaneTerminale(a ,n

1, a

a )

nsi

(30)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Calul de la fatorielle

Fatorielle

n

! =

1

,

sin

=

0

n

.(

n

1

)!,

sinon

Algorithme fatorielle(n :entier) : :entier

début

sin

=

0alors

retourner 1

sinon

retourner n *fatorielle(n-1)

nsi

(31)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exéution de l'algorithme

Calulde 3

!

.

1. fatorielle(3)=3 * fatorielle(2)

2. > fatorielle(2)=2* fatorielle(1)

3. ->fatorielle(1)=1* fatorielle(0)

4. -> fatorielle(0)=1

5. ->fatorielle(1)=1* 1 =1

(32)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Reherhe dihotomique

Reherhed'unedénitiondansunditionnaire

Algorithme reherheDiho(ible:mot): listedemot

début

premier

premiermotduditionnaire dernier

derniermotduditionnaire Lirelemotmédianentrepremieretdernier

tant quemotlun'estpaslemotiblefaire

simotibleestavantlemotlualors

dernier

motlu

sinon

premier

motlu

nsi

Lirelemotmédianentrepremieretdernier

ntantque

retournerdénitiondumotlu

(33)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Reherhe dihotomique : réursive

Reherhedel'existened'unmotdansunditionnaire

Algorithme reherhe(m:mot,l:liste):booléen

début

variable :lu:mot

lu

median(l)

silu=malors

retournerVrai

sinon

silu

<

malors

retournerreherhe(m,listeàdroitedelu)

sinon

(34)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Reherhe dihotomique : réursive

Reherhedel'existened'unmotdansunditionnaire

Algorithme reherhe(m:mot,l:liste): :booleen

début

variable :lu:mot

silestvidealors

retournerFaux

sinon

lu

median(l)

silu=malors

retournerVrai

sinon

silu

<

malors

retournerreherhe(m,listeàdroitedelu)

sinon

retournerreherhe(m,listeàgauhedelu)

nsi

(35)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Reherhe dihotomique

Reherhedansuntableaudenombresentiersordonnés

Algorithme reherhe(n:entier,t:tableaud'entiers,a, b:entier):booléen

début

variable ::entier

sia

>

balors

retournerFaux

sinon

← (

a

+

b

)/

2

sit

[

] =

nalors

retournerVrai

sinon

sit

[

] <

nalors

(36)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Dénition

Algorithmeslassiques

Exéution de l'algorithme

t: 2 5 6 8 11 15 20

1. reherhe(6, t,0,6)

1.

=

3

1. t

[

3

] >

6

2. > reherhe(6,t, 0,2)

2.

=

1

2. t

[

1

] <

6

3. ->reherhe(6, t, 2,2)

3.

=

2

3. t

[

2

] =

6

3. ->reherhe(6, t, 2,2) =Vrai

(37)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Quand utiliser un algorithme réursif?

Est-eque leproblème dépendd'un (ou plusieurs)

paramètre(s)?

Est-ilpossiblede résoudreleproblèmelorsquela(les)valeur(s)

duparamètreest "petite(s)"?

Est-il possible de résoudreleproblème àl'aidede larésolution

duproblème portant sur une(des) "pluspetite(s)" valeur(s)

duparamètre?

(38)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Tours de Hanoï (Édouard Luas 1842 - 1891)

Le problèmedes toursde Hanoï onsiste àdéplaer N disquesde

diamètres diérentsd'une tourde départàune tourd'arrivéeen

passant parune tourintermédiaireeteien unminimum de

oups, touten respetant les règlessuivantes :

on ne peut déplaer plusd'un disque àlafois,

on ne peutplaerundisque quesurunautredisque plusgrand

que luiou sur unemplaementvide.

(39)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Comment résoudre e problème?

Est-eque leproblème dépendd'un (ou plusieurs)

paramètre(s)?

−→

Oui lenombre dedisques.

Est-ilpossiblede résoudreleproblèmelorsquela(les)valeur(s)

duparamètreest "petite(s)"?

−→

Oui lorsquele nombrede disque est 1.

Est-il possible de résoudreleproblème àl'aidede larésolution

(40)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Algorithme réursif

Algorithme hanoi(n:entier,A :aratère,B :aratère,C :

aratère ) :rien

début

sin

=

1alors

érire("déplaer",A, "vers ",C)

sinon

hanoi(n-1, A,C, B);

érire("déplaer",A, "vers ",C)

hanoi(n-1, B,A, C);

nsi

n

(41)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exéution de l'algorithme

Hanoi(2, 'a', 'b','')

Hanoi(3, 'a', 'b','')

Hanoi(4, 'a', 'b','')

Quelest le nombrede déplaementsen fontionde n?

Pour tout entiern

1,Cn

=

2n

1.Adémontrer parréurrene...

(42)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Temps de diusion

Caluler T

a

(

n

) =

a

+

2a

+

3a

+ . . . +

n

.

a

Est-eque leproblème dépendd'un (ou plusieurs)

paramètre(s)?

−→

Oui n.

Est-ilpossiblede résoudreleproblèmelorsquela(les)valeur(s)

duparamètreest "petite(s)"?

−→

Oui pour n

=

0 ou n

=

1

Est-il possible de résoudreleproblème àl'aidede larésolution

duproblème portant sur une(des) "pluspetite(s)" valeur(s)

duparamètre?

−→

Oui,Ta

(

n

) =

Ta

(

n

1

) +

n

.

a

(43)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Temps de diusion

Algorithme

Algorithme diusion(a:réel, n :entier) :réel

début

sin

=

0alors

retourner 0

sinon

retourner diusion(a,n-1)

+

n

.

a

(44)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Exéution de l'algorithme

Calulde T

4

(

3

)

1. diusion(4,3)

2. > diusion(4,2)

3. ->diusion(4,1)

4. -> diusion(4,0) =0

5. ->diusion(4,1) =0 +4 =4

6. > diusion(4,2) =4+2

.

4=12

7. diusion(4,3) =12 +3

.

4 =24

(45)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Régionnement du plan

Etant donnéun nombren de droites,aluler lenombreR

n

maximum de régionsduplan obtenus

Est-eque leproblème dépendd'un (ou plusieurs)

paramètre(s)?

−→

Oui lenombre n de droites.

Est-ilpossiblede résoudreleproblèmelorsquela(les)valeur(s)

duparamètreest "petite(s)"?

−→

Oui pour n

=

0 ou n

=

1

Est-il possible de résoudreleproblème àl'aidede larésolution

(46)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Régionnement du plan

Algorithme

Algorithme region(n:entier) :entier

début

sin

=

0alors

retourner 1

sinon

retourner region(n-1)

+

n

nsi

n

(47)

Algorithmesréursifs

Résolutiondeproblèmesparréursivité

Objetifs de la séane 3

savoir démontreràl'aidedu prinipe de réurrene

savoir dénirle lienentre preuvepar réurreneet algorithme

réursif

ériredes algorithmesréursifs omme parexemple elui

alulant lafatorielleet reherhant unélémentpar

dihotomie

Références

Documents relatifs

−→ utiliser un shéma itératif à nombre d'itérations déterminé. −→ appeler aussi souvent

ne retourner auune valeur : on notera le type de retour rien. Algorithme deviner(n : entier)

Utilisation d'un aumulateur pour réaliser un alul dans

A l'aide d'un système physique dont l'état est aléatoire :.. Valeur préise d'une résistane, appartition des

les nombres plus petit que le nombre pivot sont à gauhe de

A-t-on besoin d'un traitement séquentiel des données. Le nombre de données est-il déterminé

Le nombre de noeuds d'un arbre binaire omplet équilibré en. fontion de la hauteur h est 2 h

Dénombrer le nombre d'opérations exéuter d'un algorithme.. Donner l'ordre de grandeur du nombre