Vous êtes sur la page 1sur 7

Lycée Mohamed 5 – CASA Pr.

Salsabila BENGHAZOUANI

TD : Complexité Algorithmique

Exercice 1 :
Un tableau X est trié par ordre croissant si x(i) <= x(i+1) pour tout i
1- Elaborer un programme récursif permettant de vérifier qu’un tableau X est trié ou non
2- Estimer sa complexité

Exercice 2 :
Rendre récursive la fonction somme suivante et estime sa complexité

def somme(L) :
s=0 :
for val in L :
s+=val
return s

Exercice 3 :
Pour convertir un nombre entier positif N de la base décimale à la base binaire, il faut opérer par des
divisions successives du nombre N par 2. Les restes des divisions constituent la représentation binaire.
1- Ecrire une fonction récursive « Binaire » permettant d’imprimer à l’écran la représentation binaire d’un
nombre N
Exemple : Binaire(13)=1101
2- Donner la formule récurrente exprimant sa complexité en nombre de divisions. Estimer cette complexité.

Exercice 4:
Un nombre N est pair si (N-1) est impair, et un nombre N est impair si (N-1) est pair.
Ecrire deux fonctions récursives mutuelles pair (N) et impair (N) permettant de savoir si un nombre N est
pair et si un nombre N est impair.
1- Estimer la complexité de la fonction Pair (N) en nombre d’appels récursifs.

Exercice 5:
Etant donné un tableau X composé de N éléments entiers. On voudrait déterminer son maximum par un
programme récursif basé sur le paradigme « diviser pour régner » :
1- En considérant que le maximum est le plus grand entre le dernier terme et le maximum des (n-1) premiers
termes. Estimer sa complexité.
2- En considérant que le maximum est le plus grand entre les maximums des deux moitiés du tableau. Estimer
sa complexité.

1
Lycée Mohamed 5 – CASA Pr.Salsabila BENGHAZOUANI

Exercice 6 : Extrait de CNC 2021 psi


Un polynôme à coefficients réels peut être représenté par une liste P telle que : chaque élément P[i]
contient le coefficient du monôme de degré i.
Exemples :
→ Le polynôme 4 + x - 5x2 + 3x4 est représenté par la liste [ 4, 1, -5, 0, 3 ]
Q.1- Écrire la fonction produit (k, P), qui reçoit en paramètres un réel k non nul et une liste P qui
représente un polynôme. La fonction retourne la liste qui représente le polynôme k*P.
Exemple :
La fonction produit ( 5, [ 8, 1, -2, 0, 3 ]) retourne la liste [ 40, 5, -10, 0, 15 ]
Q.2- Déterminer la complexité de la fonction produit (k, P). Justifier votre réponse

Exercice 7 : Extrait de CNC 2021 mp


Q1- Écrire la fonction factoriel (k), qui reçoit en paramètre un entier positif k, et qui retourne la valeur de
factorielle k : k! = 1 * 2 * 3 * … * (k-1) * k.
Q2- Écrire la fonction calcul (x, k) qui reçoit en paramètres un réel x et un
entier positif k, et qui retourne la valeur de l’expression suivante :

Q3- Déterminer la complexité de la fonction calcul (x, k), et justifier votre réponse.

Exercice 8 : Extrait de Concours Commun Mines Ponts (CCMP)-2020

2
Lycée Mohamed 5 – CASA Pr.Salsabila BENGHAZOUANI

3
Lycée Mohamed 5 – CASA Pr.Salsabila BENGHAZOUANI

Q1 – Compte tenu de la représentation limitée des nombres réels en machine, deux sommets S1 et S2
supposés être au même endroit peuvent avoir des coordonnées légèrement différentes. Proposer une
fonction sont_proches, prenant comme arguments deux sommets S1 et S2 (représentés par leur vecteur
position) et un flottant positif eps, et qui renvoie True si S1 et S2 sont proches (i.e. si leur distance au sens
de la norme Euclidienne est inférieure `a eps) et False sinon.
Soient les fonctions suivantes :

Q2 – Sous quelle condition la fonction mystere2 renvoie-t-elle True?


Q3 – Donner (sans justification) ce que renvoie mystere3 ( maillage_tetra), dans le cas où
maillage_tetra est la variable d´définie précédemment.
Q4 – Pour une liste L de longueur n, discuter la complexité de la fonction mystere2. En déduire la
complexité de mystere3, pour un maillage contenant m facettes triangulaires. On distinguera le meilleur et
le pire des cas.

4
Lycée Mohamed 5 – CASA Pr.Salsabila BENGHAZOUANI

La scène est composée de 350 images. Le plan d’eau est composé de 200 * 200 sommets. Chaque
hauteur hi,j est un flottant codé sur 64 bits.
Q5- Quel est l’espace occupé en m´mémoire vive par l’ensemble des données (en Mo).

Exercice 9 : Extrait de Concours Commun Mines Ponts (CCMP)-2022


La théorie des matériaux indique que, dans un matériau ferromagnétique, l’aimantation volumique

moyenne du matériau est donnée par :

Cette équation d’inconnue m ne possède pas de solution analytique : si on veut connaître une approxi-
mation de l’aimantation moyenne dans le matériau, il est donc nécessaire de la résoudre numériquement
par une méthode de recherche de zéro.
Q1) Écrire les instructions nécessaires pour importer exclusivement les fonctions exponentielle (exp) et
tangente hyperbolique (tanh) du module math, ainsi que les fonctions randrange et random du module
random. Ces fonctions seront ainsi utilisables dans tous les programmes que vous écrirez ultérieurement.

5
Lycée Mohamed 5 – CASA Pr.Salsabila BENGHAZOUANI

Q2 ) A partir de l’équation 2, indiquer une équation f(x, t) = 0, d’inconnue x que l’on doit résoudre et écrire
en Python la définition de la fonction f correspondante (paramètres x et t, valeur renvoyée f(x, t)).
Q3) Écrire une fonction dicho(f, t, a, b, eps) qui calcule une valeur approchée à eps près du zéro d’une
fonction f(m, t) de variable x et de paramètre t fixé sur un intervalle [a, b]. On supposera pour simplifier
que la fonction dont on recherche le zéro est continue et s’annule une fois et une seule sur l’intervalle
[a, b].
Q4) Établir l’expression de la complexité temporelle asymptotique de la fonction dicho en fonction de a, b
et eps.

Exercice 10 : Coupes minimales


Dans ce problème, on considère des listes d’entiers relatifs a = [a0 , . . . , an−1 ], et on appelle coupe de a
toute suite non vide d’éléments consécutifs de cette liste. Ainsi, une coupe est une liste de la forme [ai , . .
. , aj −1 ] avec 0 ≤ i < j n qu’on notera désormais a[i : j ].
𝑗−1
À toute coupe a[i : j ] on associe la somme s[i : j ] = ∑𝑘=𝑖 𝑎𝑘 des éléments qui la composent.
Le but de ce problème est de déterminer un algorithme efficace pour déterminer la valeur minimale
des sommes des coupes de a.
À titre d’exemple, la somme minimale des coupes du tableau a = [4, −4, 1, −1, −9, 8, −3, 8, −5, 5]
est égale à −13, valeur atteinte pour la coupe a[1 : 5].
Question 1. un algorithme naïf
a) Définir une fonction somme prenant en paramètres une liste a et deux entiers i et j et retournant
la somme s[i : j ].
b) En déduire une fonction coupe_min1 prenant en paramètre une liste a et retournant la somme
minimale d’une coupe de a.
c) Mesurer le temps d’exécution de la fonction coupe_min1

Question 2. un algorithme de coût quadratique


A) Définir (sans utiliser la fonction somme) une fonction nommée mincoupe prenant en paramètres une liste
a et un entier i, et calculant la valeur minimale de la somme d’une coupe de a dont le premier
élément est ai .
Combien d’additions cette fonction effectue-telle ?
B) En déduire une fonction coupe_min2 , prenant en paramètre une liste a et retournant la somme
minimale d’une coupe de a.
C) Mesurer le temps d’exécution de la fonction coupe_min2
Question 3. un algorithme de coût linéaire
Étant donnée une liste a, on note mi la somme minimale d’une coupe quelconque de la liste a[0 : i] et ci
la somme minimale d’une coupe de a[0 : i] se terminant par ai−1 .

6
Lycée Mohamed 5 – CASA Pr.Salsabila BENGHAZOUANI

b) Mesurer le temps d’exécution de la fonction coupe_min3


Question 4. un algorithme de coût quasi-linéaire
Un algorithme de type diviser pour régner est un algorithme qui scinde le problème initial en
plusieurs problèmes de taille plus petite, par exemple en deux sous-problèmes de taille deux fois
plus petite que le problème initial.

Vous aimerez peut-être aussi