1. Dived and conquer :

Représente une stratégie (approche ou désigne) pour résoudre un problème. méme probléme pour grand probléme et sous probléme.

-          Diviser le problème en un certain nombre de sous-problèmes similaires au problème initial, mais de taille moindre.

-          Régner les sous-problèmes en les résolvant récursivement. Par ailleurs, si la taille d'un sous-problème est assez réduite, on peut le résoudre directement.

-         Combiner les solutions des sous-problèmes en une solution complète pour le problème initial.

1.1.        La fonction divide and conquer

Fonction DAC (P)

Debut

Si (petit(p)) alors S(p)

Sinon

déviser p en p1, p2, p3, p4, p5 …….., pk

            appliquer DAC(p1), DAC(p2)……

            combiner (DAC(p1), DAC(p2)……

1.2.             La complexité des problémes récursive :

Calculer le temps d’exécution d’un algorithme récursive nécesite une démonstration par récurrence de l’algorithme qui décrit le temps d'exécution global pour un problème de taille n en fonction du temps d'exécution pour des entrées de taille moindre. Au lieu quel est appelé FNon elle est appelé tNon.

Il existent trois méthodes :

Méthode de substitution : Nous faisons une estimation de la solution, puis nous utilisons l'induction mathématique pour prouver que la supposition est correcte ou incorrecte.

Reccurence de type t(n-1)+constante :

Procédure test (n :entier)…………………TNon

Debut

Si (n>0) alors       ……….1

Ecrire Non    ……….1

Test (n-1)   ………..t(n-1)      

Fin si

T(0)=1                  si n=0

T(n-1) +2    si n>0

substitution avant :

rechercher un modéle : substitué à partir de la valeur initiale

t(0)=1

t(1)=3

t(2)=t(1)+2 = 5

t(3)=t(2)+2 = 7

t(4)=t(3)+2 = 9

t(5)=t(4)+2 = 11

deviner :  

-         nous devinons à partir de la suite que tNon=2n+1

-         3,5,8,9,11……

vérification : est correct s'il satisfait la formule générale et les conditions initiales

  • TNon = T(n-1)+1 = [(2n-1] + 2 = 2n+1  (t(n-1)=2(n-1)+1
  • T(1) = 1+2 = 3
  • T(0)=1

substitution arrière :

TNon=t(n-1)+2

TNon=[t(n-2)+2]+2

TNon=t(n-2)+4

TNon=t(n-3)+6

         Vas se repéter k time inconu

TNon=t(n-k)+2k               on arrête après k steps usqu’à n=0

Donc :

Puisque T(1)=t(0)+2 alors N=1 et n-k=0 ce qui donne n=k

On remplace k par n et on obtient :

TNon=t(n-n)+2n

TNon=t(0)+2n

1+2n

Vérification :

  • TNon = T(n-1)+1 = [(2n-1] + 2 = 2n+1            (t(n-1)=2(n-1)+1
  • T(1) = 1+2 = 3

Resultat de la complexité = ONon

 

Récurrence de type : tNon=t(n-1)+n

Sybstitution forward :

T(1)=t(0)+1=2

T(2)=t(0)+1+2=4

T(3)= t(0)+1+2+3=7

T(4)= t(0)+1+2+3+4=11

T(5)= t(0)+1+2+3+4+5=16

Deviner :

TNon=1+n(n+1)/2

Asymptotiquement = n2

Verification :

T(0)=1

TNon=t(n-1)+1=n2/2-n/2+2              asymptotiquement     = n2

Substitution backward

Procedure test Non ……………………….TNon

Debut

Si (n>0) …………………..1

         Pour iß0 à n-1 faire………………….. 2n+2

                   Ecrire Non……………………..n

         Fin pour

Test(n-1)………………………………………….T(n-1)

finsi

Fin procedure

TNon=2n+2+n+1+t(n-1) =3n+3+t(n-1)

Asymptotiquement 3n+3=n   (pour grand tille de n toujours)

Modifié le: vendredi 11 mars 2022, 23:33