0% ont trouvé ce document utile (0 vote)
79 vues2 pages

TD 2

Ce document contient des exercices sur des algorithmes de diviser pour régner pour résoudre des problèmes comme le calcul de la suite de Fibonacci, trouver le maximum et le minimum d'un tableau, trouver des pics dans un tableau, déterminer si la somme de deux éléments d'un ensemble donne un nombre donné, évaluer un polynôme, analyser la complexité de fonctions récursives, et exprimer une suite comme une récurrence linéaire.

Transféré par

fayçal
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
79 vues2 pages

TD 2

Ce document contient des exercices sur des algorithmes de diviser pour régner pour résoudre des problèmes comme le calcul de la suite de Fibonacci, trouver le maximum et le minimum d'un tableau, trouver des pics dans un tableau, déterminer si la somme de deux éléments d'un ensemble donne un nombre donné, évaluer un polynôme, analyser la complexité de fonctions récursives, et exprimer une suite comme une récurrence linéaire.

Transféré par

fayçal
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Paris 13 L2

Institut Galilée Année 2016-2017


Licence 2 Info - 2ème semestre
Conception d'algorithmes
Travaux dirigés 2 : Diviser pour régner

Exercice 1 : Encore Fibonnacci !

Dans le TD précédent, nous avons analysé le nombre de comparaisons d'un algorithme


récursif pour calculer le n-ième nombre de la séquence de Fibonacci Fn dénie comme :
F0 = 0, F1 = 1 et ∀n ≥ 2, Fn = Fn−1 + Fn−2 . On a obtenu un nombre exponentielle de
comparaisons.
a. Proposez un algorithme linéaire pour ce problème.
b. Notez que, pour n ≥ 2, Fibonnaci peut se récrire comme :
    
Fn 1 1 Fn−1
=
Fn−1 1 0 Fn−2
Utilisez cette information pour proposer un nouvel algorithme pour le calcul du n-ième
nombre de la séquence de Fibonacci. Analysez la complexité de votre algorithme (c-à-d,
nombre totale d'opérations eectuées).

Exercice 2 : MaxMin d'un tableau

Soit A un tableau d'entiers de taille n. On désire calculer simultanément les valeurs maxi-
mum et minimum contenus dans A.
a. Proposez un algorithme naïf qui exécute au plus 2n − 2 comparaisons entre éléments
du tableau.
b. En utilisant la technique de diviser par régner, proposez un algorithme qui exécute au
plus 32 n − 2 comparaisons entre éléments du tableau.

Exercice 3 : Recherche de pics

Soit A un tableau d'entiers de taille n. On dit que A[i] est un "pic" s'il n'est pas plus petit
que ses voisins : A[i − 1] ≤ A[i] ≥ A[i + 1]. On supposera que A[−1] = A[n] = −∞. Donc,
un pic A[i] est un maximum local. Par exemple, si A = [1, 2, 6, 5, 3, 7, 4], on a que A[2] = 6
et A[5] = 7 sont des pics. Notez que si l'on permute les valeurs dans les positions 0 et 1 du
tableau précédent A, on aura que A[0] = 2 est aussi un pic, car −∞ ≤ 2 ≥ 1. Le but de cet
exercice est de trouver un pic dans un tableau (n'importe lequel).
a. En remarquant qu'il existe toujours un pic, proposez un algorithme naïf utilisant O(n)
comparaisons des éléments du tableau.
b. Supposez que A[q + 1] > A[q] et pourtant A[q] n'est pas un pic, avec 0 < q < n − 1.
Prouvez qu'il existe un pic dans l'intervalle A[q + 1..n − 1].
c. En utilisant l'exercice précédent (3.b), proposez un algorithme diviser pour régner qui
résoudre le problème de pic en temps O(log n).

Exercice 4

Soit S un ensemble de n entiers et soit x un entier donné. Développez un algorithme de


complexité Θ(n log n) qui détermine s'il existent a, b ∈ S tels que a + b = x.

1
Exercice 5 : Évaluation d'un polynôme

Soit P (Z) = an−1 Z n−1 + an−2 Z n−2 + . . . + a1 Z + a0 un polynôme, où les ai ´s sont des
coecients réels. Soit x un nombre réel. On désire évaluer P dans le point x.
a. Concevoir un algorithme itératif pour ce problème qui utilise Θ(n2 ) multiplications.
b. Concevoir un algorithme récursif pour ce problème qui utilise Θ(n) multiplications.
Justier formellement votre réponse.

Exercice 6

Soit a ≥ 1 et b > 1 deux constantes, et soit f (n) une fonction positive dénie sur des
puissances exactes de b. On dénit T (n) pour des puissances exactes de b par la récurrence :

si n = 1
(
Θ(1)
T (n) =
aT (n/b) + f (n) si n = bi ,

où i est un entier positif. Prouver que :


(logb n)−1
X
logb a
T (n) = Θ(n )+ aj f (n/bj ).
j=0

Exercice 7 : Il ne faut pas oublier les récurrences linéaires

Soit p > 0 une constante et soit tn = ni=0 ipi , pour n ∈ N. Exprimez tn comme une
P
récurrence linéaire (non-homogène) et trouvez une solution à cette équation de récurrence en
utilisant la méthode du polynôme caractéristique vu en cours. (Indice : la solution à l'équation
n −1)
de récurrence est : tn = npp−1 − p(p ).
n+1
(p−1)2

Vous aimerez peut-être aussi