9. Exemple : Calcul de la valeur dâun polynĂŽme
ï° 2Ăšme variante :
CoĂ»t de lâalgorithme :
debut - (n+1) additions
Inter=1 - 2(n+1) multiplications
P =0
Pour i de 0 Ă N faire
P = P+ Inter *ai
Inter = Inter * X
finpour
Fin
64. Application : algorithme de recherche dichotomique
Fonction RechDicho(Tab :Tableau, borneinf :entier, bornesup :entier,
elem :entier) : bool
Si (borneinf<=bornesup) alors
mil = (borneinf+bornesup) DIV 2 ;
Si (Tab[mil]=elem) Alors
retourner (vrai)
Sinon
Si (Tab[mil]>elem) Alors
Retourner (RechDicho(Tab, borneinf, mil-1, elem))
Sinon
Retourner(RechDicho(Tab, mil+1, bornesup, elem))
Fin Si
Fin Si
Sinon
Retourner (Faux)
FinSi
66. Exemples dâapplication
ïŁ«nïŁ¶
ï° Exemple 1 : T (n) = 9T ïŁŹ ïŁ· + n
ïź a = 9 , b = 3 , k = 1
ïŁ3ïŁž
ïš a > bk
ïš Logba = 2
ïš T(n) = O(nÂČ)
ïŁ« 2n ïŁ¶
ï° Exemple 2 : T ( n) = T ïŁŹ ïŁ· + 1
ïŁ 3 ïŁž
ïź a = 1 , b = 3/2 , k = 0
ïš a = bk
ïš T(n) = O(nklogn) = O(logn)
67. Exemples dâapplication
ïŁ«nïŁ¶
ï° Exemple 3 : T (n) = 3T ïŁŹ ïŁ· + n log n
ïź a = 3 , b = 4 , k = ??
ïŁ4ïŁž
or n < nlogn < nÂČ ïš1 < k < 2
ïš 4 < bk < 16 ïš a < bk
ïš T(n) = O(f(n)) = O(n logn)
73. Tri par fusion
ï° Algorithme :
Fonction tri_fusion (T, deb, fin) : tableau entier
T1, T2 : tableau entier [N/2] ;
Si (deb >= fin) alors
Retourner T ;
Sinon
mil = (deb + fin) DIV 2;
T1 = tri_fusion (T, deb, mil) ;
T2 = tri_fusion (T, mil+1, fin)) ;
Retourner fusion (T1, T2) ;
Fin si
FIN
ïš T(n) = 2 T(n/2) + Tfusion(n)
74. Tri par fusion
Fonction fusion (T1, T2) : tableau entier
T1 : tableau entier [1...N] ; T2 : tableau entier [1...M] ;
T: tableau entier [1...M+N] ;
i, j: entier; iâ1 ;jâ1 ;
Tantque (i+j-1 <> N+M) faire
Si (i †N) alors
si (j †M) alors
si (T1[i] < T2[j]) alors
T[i+j-1]âT1[i] ; iâi+1 ;
sinon
T[i+j-1]âT2[j] ; jâj+1 ;
Fin si
sinon
T[i+j-1]âT1[i]; iâi+1;
Fin si
sinon T[i+j-1]âT2[j] ;
jâj+1 ; Fin si
FinTanque Retourner T ;FIN ïš Tfusion(n) = O(n)
90. Parcours des graphes
Algorithme Pacours_Profondeur (G) Algorithme VisiterPP(G, s)
Pour chaque sommet u de G Faire couleur[s]=Gris
couleur[u]=Blanc Pour chaque voisin v de s Faire
FinPour Si couleur[v] = Blanc alors
Pour chaque sommet u de G Faire VisiterPP(G, v)
si couleur[u] = Blanc alors FinSi
VisiterPP(G, u) FinPour
FinSi couleur[s]=Noir
FinPour
Fin Fin