• Aucun résultat trouvé

Fiche 07 : Notion de complexit´e une correction

N/A
N/A
Protected

Academic year: 2022

Partager "Fiche 07 : Notion de complexit´e une correction"

Copied!
3
0
0

Texte intégral

(1)

Fiche 07 :

Notion de complexit´e une correction

Licence 3 informatique 2017 / 2018

Exercice 1 : Calcul de complexit´ e d’algorithmes it´ eratifs

Algorithme machin(T : tableau d’entier, n : entier) begin

for ifrom 0 ton−1 do x=T[i]

T[i] =T[n−1−i]

T[n−1−i] =x end for

end

Algorithme truc(M : matrice d’entier, n : entier) begin

for ifrom 1 ton−1 do forj from 0 to i−1 do

x=M[i][j]

M[i][j] =M[j][i]

M[j][i] =x end for end for end

1.a. L’algorithmemachininverse l’ordre des ´el´ements du tableau, le premier ´el´ement se trouvant `a la fin, et inversement pour le dernier ´el´ement.

L’algorithme truc calcule la transpos´ee de la matrice.

1.b. Pour l’algorithmemachin.

Pour chaque it´eration de la boucle for, 3 affectations, 6 acc`es m´emoires et 4 soustractions sont ex´ecut´ees. On peut consid´erer une complexit´e de 3 unit´es par it´eration. Il y anit´erations, donc la complexit´e temporelle estC1(n) = 3n. DoncC1(n) =O(n), la classe de complexit´e de l’algorithme est lin´eaire.

1

(2)

Pour l’algorithme truc.

Pour chaque it´eration de la boucleforit´erant surj, on peut de nouveau consid´erer une complexit´e de 3 unit´es. Il y a iit´erations, la complexit´e de cette boucle est donc 3iunit´es. La seconde boucle for it´erant suricomporte n it´erations. Ainsi la complexit´e de l’algorithme estC2(n) = Pn

i=13i.

En r´eduisant la somme, nous obtenons C2(n) = 3Pn

i=1i = 3n(n−1)2 . Ainsi, C2(n) = O(n2), la complexit´e de classe de l’algorithme est quadratique.

Exercice 2 : Calcul de complexit´ e d’algorithme r´ ecursif

Une version de l’algorithme quicksort :

Algorithme quicksort(T : tableau d’entier, a, b : entier) begin

if a < b then

pivot ←partition(T, a, b) quicksort(T, a, pivot - 1) quicksort(T, pivot + 1, b) end if

end

Algorithme partition(T : tableau d’entier, a, b : entier) begin

pivot ←T[b]

i←a−1

for j from atob−1do if T[j]<pivot then

i←i+ 1 swap(T[i], T[j]) end if

end for

if T[b]< T[i+ 1] then swap(T[i+ 1], T[b]) end if

return i+ 1 end

Complexit´e de l’algorithmepartition :

Posonsn=b−a, la taille du tableau trait´ee par l’algorithme. Avant et apr`es la bouclefor, seulement quelques instructions ´el´ementaires sont ex´ecut´ees. La boucleforcomporte 3 instructions qui sont r´ep´et´ees n−1 fois. La complexit´e de l’algorithme partition est donc Cpart(n) = 5 + 3n=O(n). La complexit´e est lin´eaire.

Complexit´e de l’algorithmequicksort :

2

(3)

Posonsn=b−a, la taille du tableau trait´ee par l’algorithme. Dans le pire des cas, la conditiona < best ex´ecut´ee. Ainsi la complexit´e de l’algorithme r´epond `a la relation de r´ecurrenceC(n) =Cpart(n) + 2C(n2).

Si on approxime la complexit´e departition parCpart(n) =n, on obtient : C(n) =n+ 2C(n

2) (1)

Pour simplifier les calculs, supposons que n = 2k, c’est-`a-dire que k = log2(n). Une remarque : si n n’est pas une puissance de 2, le raisonnement reste valide en supposant que k est l’entier sup´erieur `a log2(n), soitk=dlog2(n)e.

C(n) =n+ 2C(n2), or en utilisant la formule de r´ecurrence (1), C(n2) = n2 + 2C(n4).

Donc,C(n) =n+ 2(n2 + 2C(n4)) =n+n+ 4C(n4) En r´ep´etantkfois, le mˆeme calcul, on obtient : C(n) =n+n+. . .+n+ 2kC(1)

Or,C(1) = 1, 2k=net la somme contient ktermes.

D’o`u le r´esultat final C(n) =nlog2(n) +n=n(log2(n) + 1) =O(nlog(n)). La complexit´e du quicksort est quasi-lin´eaire.

3

Références

Documents relatifs

a Rappeler l’´ enonc´ e du th´ eor` eme de Lagrange pour les sous-groupes cycliques.. b Montrer l’´ equivalence des assertions suivantes

Comme en outre n est premier avec m, n divise t (lemme de Gauss)... a On a admis le th´ eor` eme des

´ Ecrire un algorithme calculant la somme de deux matrices de mˆ eme taille et donner la complexit´ e en fonction du nombre de lignes et de colonnes de ces matrices.. ´ Ecrire

On dira qu’un algorithme calcule l’´ el´ ement majoritaire s’il renvoie l’´ el´ ement majoritaire s’il existe, et null sinon (on suppose que la liste de contient pas l’´

Observons que chaque classe est non vide ; que deux classes sont disjointes ou confondues ; et que la r´eunion de toutes les classes est E.. Dans cette situation, nous dirons que

[r]

Le but de cet exercice est donc de rechercher s’il existe une position du point T sur le segment [EM] pour laquelle l’angle ATB est maximum et, si c’est le cas, de d´ [ eterminer

b) Combien de multiplications de nombres de moins de m chiffres sont n´ ecessaires au calcul de x.y ? En d´ eduire un algorithme de multiplication des entiers, et ´ evaluer