Vous êtes sur la page 1sur 3

YOUSSEF OUASSIT MP CPGE Mohamad V

TD N°1 : Complexité Algorithmique


Exercice 1
On considère deux manières de représenter ce que l’on appelle des « matrices creuses », c'est-à-dire des
matrices d’entiers contenant environ 90% d’éléments nuls :

a) La matrice est représentée par un tableau à deux dimensions dont les cases contiennent les éléments.
b) La matrice est représentée par un tableau à une dimension. On ne s’intéresse qu’aux éléments de la
matrice qui ne sont pas nuls. Chaque case du tableau contient un triplet (i, j, a) correspondant à l’indice de
ligne, l’indice de colonne, et la valeur d’un élément non nul.

Le problème considéré consiste à calculer la somme des éléments d’une matrice. On demande d’écrire un
programme permettant de calculer cette somme, pour chacune des deux représentations, puis de comparer
leur complexité temporelle (nombre d’opérations à effectuer). Que peut-on conclure de cette comparaison
?

Exercice 2
Soit un entier naturel n non nul et une liste t de longueur n dont les termes valent 0 ou 1. Le but de cet
exercice est de trouver le nombre maximal de 0 contigus dans t (c’est-à-dire figurant dans des cases
consécutives). Par exemple, le nombre maximal de zéros contigus de la liste t1 suivante vaut 4 :

0 1 1 1 0 0 0 1 0 1 1 0 0 0 0

1. Écrire une fonction nombreZeros(t,i), prenant en paramètres une liste t, de longueur n, et un indice
i compris entre 0 et n −1, et renvoyant :
• 0 si T[i]=1
• le nombre de zéros consécutifs dans t à partir de t[i] inclus, si t[i]=0
2. Rédiger la fonction nombreZerosMax(T), renvoyant le nombre maximal de 0 contigus d’une liste
T non vide. On utilisera la fonction nombreZeros. Quelle est sa complexité ?
3. Essayer d’écrire un autre algorithme plus performant.

Exercice 3
On considère un tableau à une dimension contenant des lettres majuscules. On désire compter la fréquence
de chacune des 26 lettres de l’alphabet. Ecrire deux fonction qui donnent en sortie un tableau de fréquence
: l’une où le tableau est parcouru 26 fois, et l’autre (plus performante !) où le calcul est fait en un seul
parcours. On pourra supposer que l’on dispose d’une fonction auxiliaire position(lettre) qui pour chaque
lettre donne sa position dans l’alphabet : position(‘A’) = 1, …, position(‘Z) = 26.
YOUSSEF OUASSIT MP CPGE Mohamad V

Exercice 4
On dispose d’un tableau non trié A de longueur n qui contient tous les entiers de 0 à n, sauf un.

1. Donnez un algorithme qui trouve l’entier manquant en temps O(n2)


2. On suppose qu’on peut trier le tableau A avec une fonction tri(A) dont la complexité est en O(nlog(n)).
Donnez un algorithme qui trouve l’entier manquant en temps en O(nlog(n))
3. Donnez un algorithme qui trouve l’entier manquant en temps O(n) en utilisant un tableau auxiliaire
4. Donnez un algorithme qui trouve l’entier manquant en temps O(n), sans utiliser un tableau auxiliaire

Exercice 5
1. Ecrire une fonction itérative qui calcul : an=a×a×...×a
2. Ecrire une fonction récursive qui calcul an en utilisant la remarque :
an=a×an-1
3. Ecrire une fonction récursive qui calcul an en utilisant la remarque :
n n
⌈ ⌉ ⌊ ⌋
an = a 2 × a 2
4. Ecrire une fonction récursive qui calcul an en utilisant la remarque suivante:
𝑛
𝑎𝑛 = (𝑎2 )2 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑝𝑎𝑖𝑟𝑒
{ 𝑛−1
𝑎𝑛 = 𝑎 × (𝑎2 )2
𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑖𝑚𝑝𝑎𝑖𝑟
5. Comparer la complexité temporelle de ces fonctions

Exercice 6

Soit P un polynôme de degré n : P(x) = a0 + a1 x + a2 x2 + ... + an xn

Les coefficients du polynôme sont stockés dans une liste a = [a0, a1 , ... . , an]

1. Ecrire une fonction qui permet d’évaluer le polynôme P en un point X. Calculer sa complexité
2. Ecrire une nouvelle fonction pour évaluer le polynôme P en un point X en utilisant le fait que : Xi
= Xi-1 X . Calculer sa complexité

On peut écrire (schéma de Horner) : P(x) = a0 + x(a1 + x(a2 +x( ... +x (an-1+ x an))…)

3. Ecrire une nouvelle fonction pour évaluer le polynôme P en un point X en utilisant le schéma de
Horner. Calculer sa complexité
YOUSSEF OUASSIT MP CPGE Mohamad V

Exercice 7

Vous aimerez peut-être aussi