EXAMEN PARTIEL NUM´
ERO 1
IFT-17588 : Analyse d’algorithmes Samedi 21 f´evrier 2004, 13h30 `a 16h30
NOM MATRICULE
SECTION : A (Lundi avec Fran¸cois Gagnon) B (Mercredi avec Hans Bherer)
Placez votre carte d’identit´e sur le coin gauche de votre table.
Aucune documentation n’est permise et les calculatrices sont interdites.
Rappel : Vous pouvez perdre jusqu’`a 10% des points pour des fautes de fran¸cais.
V´erifiez que le questionnaire a 3 pages (6 questions).
ATTENTION :
Monceau est le terme fran¸cais pour «heap ».
fnrepr´esente le ni`eme nombre de fibonacci.
f0= 0, f1= 1, . . . , fn=fn1+fn2, . . .
lg n= log2n
ln n= logen
log n= log10 n
alogbn=nlogba
– logba·logcb= logca
Les fonctions logbn, n, n2,(logbn)2, n logbnsont harmonieuses.
Dans le cadre cours : TA(n)TB(n) ssi TA(n)θ(TB(n)).
1 (5 x 4 = 20 points)
1. Quelle est la diff´erence entre une analyse en moyenne et une analyse amortie ?
2. Dans le cadre du cours, que signifie «pire cas »dans l’expression «faire une analyse en
pire cas »
3. Soient Aet Bdes algorithmes prenant des temps dans O(2n) et O(n10) respectivement.
Est-il possible qu’une implantation de l’algorithme Asoit plus efficace qu’une implantation
de l’algorithme Bsur tous les exemplaires ? Justifiez.
4. Dans le cadre du cours, est-il possible que 2 implantations diff´erentes d’un mˆeme algorithme
prennent des temps d’ex´ecution qui ne soient pas ´equivalents (on suppose qu’il est possible
de calculer les ordres exacts des temps d’ex´ecution des 2 implantations) ? Justifiez.
5. Deux algorithmes Aet Bprennent des temps d’ex´ecution dans θ((lg n)lg n) et θ(nlg lg n)
respectivement. Ces algorithmes sont-ils ´equivalents ? Justifiez.
2 (15 + 5 = 20 points)
Voici un algorithme Aqui r´esout un probl`eme P.
ALGO(T, n)
. Si n < 2 alors SolutionDirecte(T, n)
. Sinon
. ALGO(T, bn
2c)
.Combiner(T, n)
Afin de simplifier, nous formulons les hypoth`eses suivantes :
Pour n= 0 et n= 1, SolutionDirecte() prend un temps constant de 0 et 1 respectivement.
Combiner() prend un temps de lg n(incluant les appels r´ecursifs, les tests, etc..).
Vous pouvez supposer que n= 2k(vous devrez vous d´ebarrasser de cette hypoth`ese pour le
r´esultat final et ce, avec justifications).
1. Analysez cet algorithme Aet donnez votre r´esultat en utilisant la notation asymptotique.
2. Analysez ce mˆeme algorithme Aen consid´erant cette fois que Combiner() prend un temps
constant c. Donnez votre r´esultat en utilisant la notation asymptotique.
3 (15 points)
Alice et Bob analysent un mˆeme algorithme Aet obtiennent les r´esultats TA(n) et TB(n)
respectivement. Alice obtient que TA(n)Ω(n3) en meilleur cas. Bob obtient que TB(n)Ω(nlg 7)
pour tous les cas.
Le r´esultat d’Alice implique-t-il celui de Bob ? Justifiez.
4 (8 + 2 = 10 points)
1. Consid´erons un ensemble Scontenant n > 1 nombres positifs et distincts non tri´es. D´ecrivez
un algorithme en O(n) qui utilise les monceaux et qui d´etermine 2 nombres distincts
x, y Stels que :
|x+y| ≥ |w+z|,w, z So`u w6=z.
2. Justifiez que le temps d’ex´ecution de votre algorithme est bien dans O(n).
5 (5 + 5 + 5 = 15 points)
Un monceau ternaire ressemble `a un monceau binaire, mais au lieu d’avoir 2 fils, les noeuds
internes ont 3 fils (sauf peut-ˆetre le dernier noeud interne). La repr´esentation des monceaux bi-
naires dans un tableau s’applique mutatis mutandis aux monceaux ternaires.
Soient les deux fonctions suivantes (les deux s’ex´ecutent dans θ(1)) :
Parent(i)
RETURN b(i2)/3+1c
et
Fils(i,j)
RETURN 3 (i1) + j+ 1
qui retournent l’indice du parent du noeud iet l’indice du ji`eme fils (pour 1 j3) du noeud i
respectivement.
´
Ecrivez et analysez, en pire cas et en meilleur cas, la proc´edure : Proedure3Tamiser(T[1 . . . n], i)
qui permet de «tamiser »l’´el´ement d’indice idans un monceau ternaire contenant n´el´ements.
6 (8 + 2 + 10 = 20 points)
1. Analysez l’algorithme Asuivant en utilisant une instruction barom`etre. Donnez votre r´esultat
en utilisant la notation asymptotique.
AlgoA(n)
. REP = n
. while n > 0
.k=n
. for i= 1 to k
.n+ +
. REP++
.n=n÷2
.n− −
. Return REP
2. Que vaut AlgoA(5) ?
3. Montrez que le temps d’ex´ecution TB(n) de l’algorithme Bsuivant est dans Ω(2n) (on
suppose ici que le temps de calcul de f2nest dans θ(1)).
Aide : montrez par induction que pour tout n0 nous avons f2n2n1 et utilisez ce
r´esultat pour votre analyse.
AlgoB(n)
. REP = 0
. for i= 0 to f2n
. REP++
. Return REP
1 / 3 100%