L3 Math-Info, Algorithmique: examen terminal
7 d´ ecembre 2018
Tout document manuscrit de cours autoris´e. T´el´ephones portables et autres outils de t´el´ecommunication interdits. Le bar`eme est sur 26, ce qui signifie qu’il n’est pas n´ecessaire de traiter l’ensemble du sujet pour avoir la note maximale. La qualit´e de la r´edaction sera ´evalu´ee au mˆeme niveau que l’exactitude des r´eponses. Dur´ee : 2h.
Exercice 1. QCM (5 points)
R´eponse correcte : +0,5pt, r´eponse incorrecte : -0,25pt, NSP ou sans r´eponse : 0pt.
Vrai Faux NSP La complexit´eO(n2/logn) est plus faible queO(n1.99) Rechercher un ´el´ement dans une liste denentiers tri´es peut se faire
enO(logn)
Rechercher un ´el´ement dans un tableau denentiers tri´es peut se faire
enO(logn)
Si T(n) = 10T(n/3) +n2, T(1) = 1 AlorsT(n) = Θ(n2) Un parcours postfixe d’un arbre binaire de recherche visite ses noeuds
par ordre croissant de leur valeur.
Si T(n) = 2n2/logn+Pn
i=0i.nalorsT(n) = Θ(n2)
L’insertion d’un ´el´ement dans un ABR quelconque dennoeuds se fait
enO(logn)
On peut calculer le signe de l’angle orient´e de deux vecteurs
en 2 multiplications et une soustraction.
Un algorithme probabiliste est un algorithme correct sur toutes ses
entr´ees sauf une proportion born´ee par
L’algorithme du scan de Graham est toujours plus rapide que la marche de Jarvis
Exercice 2. Arbres binaires de recherche (4 points)
a. ´Ecrire un algorithm r´ecursif effectuant la suppression d’un ´el´ement dans un arbre binaire de re- cherche. On distinguera trois cas : selon que l’´el´ement poss`ede 0, 1 ou 2 descendants.
b. Quelle est sa complexit´e en pire cas en fonction de la hauteurhde l’arbre ?
Exercice 3. Alg` ebre lin´ eaire (4 pts)
a. Montrer que sia6= 0, c6= 0 alors a b 0 c
−1
=
a−1 −a−1bc−1 c−1
b.En d´eduire un algorithme de type diviser pour r´egner, calculant l’inverse d’une matrice triangulaire sup´erieure inversible.
c. Quelle est la complexit´e de cet algorithme ? On supposera que le produit de deux matrices carr´ees n×npeut se calculer en Θ(nω) avec 2< ω≤3.
UGA – L3 Maths/Info – Algorithmique – Cl´ement Pernet Page 1/2
Exercice 4. V´ erification probabiliste du produit matriciel (5 points)
On souhaite v´erifier un produit de matricesA×B =C o`uA, B et C sont n×n `a coefficients dans Z/pZ. L’id´ee est de tirer un vecteur ual´eatoirement et de calculerx=A(Bu) et y=Cu et de v´erifier que ces deux vecteurs sont ´egaux.
a. De quel classe d’algorithme probabiliste s’agit-il ?
b. Dans le cas o`u chaque coefficient de uest choisi uniform´ement dansZ/pZ, rappeler quelle est la probabilit´e d’´echec de cet algorithme.
Afin de r´eduire le nombre de valeur al´eatoires tir´ees, on propose l’algorithme suivant pour former le vecteur u:
fori= 0. . .√
n−1do a[i]←rand(Z/pZ).
b[i]←rand(Z/pZ).
end for fori= 0. . .√
n−1do forj= 0. . .√
n−1 do u[i∗√
n+j]←a[i]×b[j] end for
end for
c. Quelle est la complexit´e en temps de cette g´en´eration deu? d. Combien de valeurs al´eatoires sont utilis´ees ?
e. En utilisant le Lemme de Schwartz-Zippel, d´eterminer la probabilit´e d’´echec de l’algorithme de v´erification, utilisant ce vecteuru.
Exercice 5. Programmation dynamique (8 points)
Un distributeur de boisson automatique doit rendre la monnaie avec la contrainte de donner un nombre minimal de pi`eces `a chaque fois. On supposera que le distributeur dispose toujours d’une quantit´e infinie de pi`eces de chaque type.
On rappelle dans le tableau suivant les diff´erentes pi`eces existantes pour les trois principales monnaies du moment.
euro € 0,01 0,02 0,05 0,10 0,20 0,5 1 2 dollar $ 0,01 0,05 0,10 0,25
brousouf ß 1 10 17 31 42
On rappelle qu’une strat´egie gloutonne consiste `a donner d’abord le plus de pi`eces ayant la plus forte valeur, puis de celles de valeur imm´ediatement inf´erieure, etc.
a. Pour chacune des ces monnaies, dire si une strat´egie gloutonne permet de rendre la monnaie de fa¸con optimale. Donner un argument pour les cas positifs, et un contre-exemple pour les cas n´egatifs.
Pour le ou les cas o`u la solution par algorithme glouton n’existe pas, on se propose de r´esoudre ce probl`eme par programmation dynamique. On noterasla somme que doit rendre le distributeur. Il y ak types de pi`eces, de valeur croissante :v1< v2<· · ·< vk.
On cherche donc `a calculer des quantit´es de chaque type pi`eces `a rendren1, n2, . . . , nktels quePk i=1ni soit minimal etPk
i=1nivi=s. On noteraN(s, k) ce nombre minimal de pi`eces `a rendre pour atteindre la valeursavec les kpremiers types de pi`eces.
b. Justifier que
N(s, k) = min
0≤i≤bs/vkc(i+N(s−ivk, k−1)), N(0, k) = 0, N(s,0) = +∞ c. En d´eduire un algorithme r´ecursif avec m´emo¨ısation calculant la valeur deN(s, l).
d. Proposer une variante it´erative calculant N(s, k) ainsi que la fa¸con d’atteindre cette valeur : la donn´ee des nombres de pi`ecesn1, n2, . . . , nk.
UGA – L3 Maths/Info – Algorithmique – Cl´ement Pernet Page 2/2