• Aucun résultat trouvé

Algorithmes : solution du TP

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmes : solution du TP"

Copied!
2
0
0

Texte intégral

(1)

O O O

O O

O O

O

O O

O O

O

Algorithmes : solution du TP

O. Marguin - 4 mai 2011

Exercice 1 : sous-vecteur minimal

restart:

svm:=proc(v) # algorithme optimal local n,somme,i,j,s,g,d;

n:=nops(v);

somme:=v[1];g:=1;d:=1;

s:=v[1];i:=1;

for j from 2 to n do

if s>=0 then s:=v[j];i:=j else s:=s+v[j] end if;

if s<somme then somme:=s;g:=i;d:=j end if end do;

[g,d,somme]

end proc:

v:=[seq(rand(-10..10)(),i=1..15)];

v:= 4, 2,K5,K9, 1,K7,K5,K6, 6,K3,K6,K9, 7, 9, 0 svm(v);

3, 12,K43

Exercice 2 : puissance rapide

restart:

puiss:=proc(x,n) if n=0 then 1

elif type(n,even) then puiss(x*x,n/2) else x*puiss(x,n-1)

end if end proc:

puiss(3,7)-3^7;

0

Exercice 3 : calcul des coefficients du binôme

restart:

C:=proc(n,p)

if p=0 or p=n then 1 else C(n-1,p-1)+C(n-1,p) end if end proc:

C(7,3);

35

C(40,20); # on a beau attendre, aucun résultat ne sort ! Warning, computation interrupted

La complexité en espace est proportionnelle à la profondeur de l'arbre binaire exploré, qui est inférieure ou égale à n.

Un dénombrement facile montre que le nombre d'appels à la fonction C provoqués par

l'instruction C(n,p) est égal à 2 C(n,p) - 2, il s'ensuit que le nombre d'additions est égal à 2 C (n-1,p-1) - 2. Le pire des cas est pour p = partie entière de n/2 et d'après la formule de Stirling, la complexité en temps est un grand theta de exp(n) : l'algorithme est inefficace.

On évite les appels redondants grâce à l'option remember, les résultats intermédiaires sont alors stockés dans une table :

Cbis:=proc(n,p)

(2)

O O

O O O

O

option remember;

if p=0 or p=n then 1 else Cbis(n-1,p-1)+Cbis(n-1,p) end ifend proc:

Cbis(40,20);

137846528820

Cette fois les complexités en espace et en temps sont au pire en n^2 .

L'algorithme optimal (linéaire) utilise la récurrence : C(n,p) = n/p * C(n-1,p-1), ce qui donne : Cter:=proc(n,p)

if p=0 then 1 else n/p*Cter(n-1,p-1) end if end proc:

Cter(100,50);

100891344545564193334812497256

Références

Documents relatifs

Les deux premi` eres sont ind´ ependantes et la troisi` eme utilise les deux r´ esultats finaux des parties pr´ ec´ edentes... f ´ etant concave, sa courbe est au dessus de chacune

En déduire la partie entière de

[r]

[r]

On va en donner plusieurs démonstrations mais toutes celles proposées utilisent un résultat sur les intégrales de Wallis.. PARTIE I Intégrales de Wallis Soit n

L’objet lumineux (dalle LCD) est centré sur l'axe optique de la lentille et située dans un plan perpendiculaire à celui-ci. On note A l'intersection de la dalle LCD avec

le coût de l’exécution cout A (d ) = nombre d’exécution de chaque opération de l’algorithme A sur la donnée d. En général, on restreint le nombre d’opérations

L’accès aux archives de la revue « Nouvelles annales de mathématiques » implique l’accord avec les conditions générales d’utilisation ( http://www.numdam.org/conditions )..