Vous êtes sur la page 1sur 5

RAPPEL

Sommations :
1 1
1. 1 + 2 + 3 + ⋯ + 𝑛 = 2 𝑛2 + 2 𝑛
1 1 1
2. 12 + 22 + 32 + ⋯ + 𝑛2 = 3 𝑛3 + 2 𝑛2 + 6 𝑛
𝑟 𝑛+1 −1 1−𝑟 𝑛+1
3. (𝑟 ≠ 1) 1 + 𝑟 + 𝑟 2 + ⋯ + 𝑟 𝑛 = =
𝑟−1 1−𝑟

Encadrement par la technique d’intégration :

Supposons que 𝑢(𝑥) est une fonction continue croissante ou décroissante sur ]0, +∞[ et
appelons 𝑣(𝑥) sa primitive (𝑣 ′ (𝑥) = 𝑢(𝑥)). Alors pour tout 𝑛 ∈ ℕ∗ :

𝑢(1) + 𝑢(2) + ⋯ + 𝑢(𝑛) = O( 𝑣(𝑛))

Calcul modulaire : L’ensemble des entiers modulos 𝑝 est noté ℤ𝑝 (ℤ𝑝 = {0,1,2, … , 𝑝 − 1}.
Dans cet ensemble on définit les opérations suivantes : (𝑎 + 𝑏)[mod 𝑝], (𝑎. 𝑏)[mod 𝑝],…

Représentation binaire de 𝑝 : 𝑝 = [𝑟𝑞−1 𝑟𝑞−2 … 𝑟2 𝑟1 𝑟0 ] = ∑𝑞−1 𝑗


𝑗=0 𝑟𝑗 2 , 𝑟𝑗 = 0,1, 𝑟𝑞−1 = 1. 𝑞 est
la taille binaire de 𝑝. On a : 𝑞 − 1 ≤ log 𝑝 < 𝑞.

(𝑎 + 𝑏)[mod 𝑝] est le reste de la division de (𝑎 + 𝑏) par 𝑝.


On admet que le temps de réalisation de cette opération modulaire est égal à 𝑞 2 .

(𝑎. 𝑏)[mod 𝑝] est le reste de la division de (𝑎. 𝑏) par 𝑝.

On admet que temps de réalisation de cette opération modulaire est égal à 2𝑞 2 .

Propriétés :

(𝑎 + 𝑏)[mod 𝑝] = (𝑎[mod 𝑝] + 𝑏[mod 𝑝])[mod 𝑝]

(𝑎. 𝑏)[mod 𝑝] = (𝑎[mod 𝑝])(𝑏[mod 𝑝])[mod 𝑝]

Calcule de l’inverse « modulaire » : Supposons que 𝑝 est un nombre premier. On montre


alors que si 𝑎 ∈ {1,2, … , 𝑝 − 1} alors le nombre 𝑑 = 𝑎𝑝−2 [𝑚𝑜𝑑 𝑝] est l’inverse de 𝑎 et peut
être noté 𝑎−1 (si aucune confusion n’est à craindre). On a : (𝑎. 𝑑)[mod 𝑝] = 1.

Examen type 1
Exercice 1 : Un étudiant a conçu un algorithme résolvant un problème
algorithmique de taille 𝑛. En analysant sa complexité, il s’est aperçu que le temps
d’exécution 𝑇(𝑛) de son algorithme vérifie l’inégalité suivante :

1 1 1 1
(∀𝑛 ≥ 𝑛0 ) 𝑇(𝑛) ≤ + + + ⋯+
√1 √2 √3 √𝑛
Parmi les trois réponses suivantes déterminer la vraie réponse avec justification :

(a) 𝑇(𝑛) = 𝑂(𝑛2 ) (𝑏) 𝑇(𝑛) = 𝑂(√𝑛) (𝑐) 𝑇(𝑛) = 𝑂(𝑛 log 𝑛)

Exercice 2 : Deux étudiants en compétition pour résoudre un problème


algorithmique PBA de taille 𝑛. Le premier étudiant a présenté son algorithme ALG1
dont le temps d’exécution vérifie :
𝑛
𝑇1 (1) = 1, 𝑇1 (𝑛) = 2𝑇1 ( ) + 𝑛2
2
Le lendemain après, le deuxième étudiant a présenté un autre algorithme ALG2
résolvant le problème algorithmique PBA. Le temps d’exécution de son algorithme
vérifie :

3 𝑛
𝑇2 (1) = 1, 𝑇2 (𝑛) = 𝑇2 ( ) + 𝑛2
2 2
1. Déterminer 𝑇1 (𝑛) et 𝑇2 (𝑛) en fonction de 𝑛.
2. Lequel des deux algorithmes est le plus rapide ?

Exercice 3 : Décrire un algorithme polynômial résolvant EXP-MOD :

PBA EXP-MOD

Données : 𝑝 et 𝑎, 𝑥 ∈ ℤ𝑝 = {0,1,2, … , 𝑝 − 1} avec 𝑎 ≠ 0,1

Résultats : 𝑏 ∈ ℤ𝑝 = {0,1,2, … , 𝑝 − 1}

Equation: 𝑏 = 𝑎 𝑥 [mod 𝑝]

Taille : La taille binaire 𝑞 de 𝑝.

Opération élémentaire : 𝑎. 𝑏[mod 𝑝]

Justifier que votre algorithme est effectivement polynomial.

Examen Type 2
Exercice 1 :

Un étudiant a conçu un algorithme résolvant un problème algorithmique de taille 𝑛.


En analysant sa complexité, il s’est aperçu que le temps d’exécution 𝑇(𝑛) de son
algorithme vérifie la récurrence suivante :

𝑇(2) = log 2
{
𝑇(𝑛) = 𝑇(𝑛 − 1) + log 𝑛 (𝑛 ≥ 3)

Parmi les trois réponses suivantes déterminer la vraie réponse avec justification :

(a) 𝑇(𝑛) = 𝑂(log 2 𝑛) (𝑏) 𝑇(𝑛) = 𝑂(𝑛log𝑛) (𝑐) 𝑇(𝑛) = 𝑂(𝑛 log 2 𝑛)

Exercice 2 : On considère deux algorithmes ALG1 et ALG 2 résolvant un même


problème algorithmique PBA de taille 𝑛. Le temps d’exécution de ALG 1 vérifie :
𝑛
𝑇1 (1) = 1, 𝑇1 (𝑛) = 3𝑇1 ( ) + 𝑛
2
Le temps d’exécution ALG 2 :
𝑛
𝑇2 (1) = 1, 𝑇2 (𝑛) = 2𝑇2 ( ) + 𝑛
2
1. Déterminer 𝑇1 (𝑛) et 𝑇2 (𝑛) en fonction de 𝑛 (en supposant 𝑛 = 2𝑞 )
2. Lequel des deux algorithmes est le plus rapide ?

Exercice 3 : Décrire un algorithme polynômial résolvant INV-MOD :

PBA INV-MOD

Données : 𝑝 et 𝑎 ∈ ℤ𝑝 = {0,1,2, … , 𝑝 − 1} avec 𝑎 ≠ 0,1, 𝑝 premier

Résultats : 𝑏 ∈ ℤ𝑝 = {0,1,2, … , 𝑝 − 1}

Equation: 𝑎. 𝑏[mod 𝑝] = 1 c’est-à-dire que 𝑏 = 𝑎−1 [mod 𝑝]

Taille : La taille binaire 𝑞 de 𝑝.

Opération élémentaire : 𝑎. 𝑏[mod 𝑝]

Justifier que votre algorithme est effectivement polynomial.

Examen Type 3
1
Exercice 1 : Posons 𝑇(𝑛) = 𝑛 log 𝑛 (∑𝑛𝑘=2 𝑘 log 𝑘). Montrer que

𝑇(𝑛) = 𝑂(𝑛 log 𝑛 log log 𝑛)


𝑛
Exercice 2 : Supposons que : 𝑇(1) = 1, 𝑇(𝑛) = 5𝑇 (2) + 𝑛2

Déterminer 𝑇(𝑛) en précisant en conclusion son ordre de croissance

Exercice3 : On admet que l’unité de temps est égale au temps d’exécution de


l’opération élémentaire 𝑣 = 𝑧 + 𝑥. 𝑦. Considérons la procédure suivante
réalisant le produit 𝐶 = 𝐴. 𝐵 de taille 𝑛.

MULT (𝐴, 𝐵, , 𝑛: 𝐶)

1. Pour 𝒊 = 𝟏: 𝒏
2. Pour 𝑗 = 1: 𝑛
3. 𝐶𝑖𝑗 = 0
4. Pour 𝑘 = 1: 𝑛
5. 𝐶𝑖𝑗 = 𝐶𝑖𝑗 + 𝐴𝑖𝑘 𝐵𝑘𝑗
6. Retourner 𝐶.

1. Montrer que le temps de réalisation de cette procédure est 𝑀(𝑛) = 𝑛3 .

Considérons le problème matriciel PMH consistant à calculer le produit


suivant :

𝐸 = 𝐴8 = 𝐴. 𝐴. 𝐴. 𝐴. 𝐴. 𝐴. 𝐴. 𝐴 (𝐴 matrice de type 𝑛 × 𝑛)

Pour calculer 𝐸 on propose l’algorithme suivant :

1. 𝑬 = 𝑨
2. Pour 𝒊 = 𝟏: 𝟕
3. MULT (𝐸, 𝐴, , 𝑛: 𝐸)

2. Montrer que cet algorithme est correct et est réalisé en utilisant un temps de
calcul 𝑀8 (𝑛) = 7𝑛3 .

3. Proposer un algorithme « plus rapide » permettant de déterminer 𝐸 en


utilisant un temps de calcul 𝑇8 (𝑛) = 3𝑛3 .
Examen Type 4

Exercice 1 :

Un étudiant prétend avoir amélioré un algorithme ALG1résolvant un problème


algorithmique de taille 𝑛 en proposant un algorithme ALG 2. Plus précisément,
le temps de l’algorithme ALG 1 est 𝑇1 (𝑛) = 𝑛2 et le temps de l’algorithme ALG
2 vérifie la récurrence suivante :
𝑇2 (1) = 1
{
𝑇2 (𝑛) = 𝑇2 (𝑛 − 1) + √𝑛 (𝑛 ≥ 2)

1. Indiquer la grandeur correcte de 𝑇2 (𝑛) parmi ces trois réponses :


(a)𝑇2 (𝑛) = O(𝑛log𝑛), (b) 𝑇2 (𝑛) = O(𝑛2 log𝑛), (c) 𝑇2 (𝑛) = O(𝑛1.5 )

2. Démontrer que l’algorithme ALG 2 améliore effectivement ALG 1.

Exercice 2 : Deux étudiants en compétition pour résoudre un problème


algorithmique PBA de taille 𝑛. Le premier étudiant a présenté son algorithme
ALG1 dont le temps d’exécution vérifie :
𝑛
𝑇1 (1) = 1, 𝑇1 (𝑛) = 3𝑇1 ( ) + 𝑛
2

Le lendemain après, le deuxième étudiant a présenté un autre algorithme ALG2


résolvant le problème algorithmique PBA. Le temps d’exécution de son
algorithme vérifie :
𝑛
𝑇2 (1) = 1, 𝑇2 (𝑛) = 2𝑇2 ( ) + 𝑛
2

1. Déterminer 𝑇1 (𝑛) et 𝑇2 (𝑛) en fonction de 𝑛.


2. Lequel des deux algorithmes est le plus rapide ?

Exercice 3 : Décrire un algorithme permettant de calculer le produit

𝐶(𝑥) = 𝐴(𝑥)𝐵(𝑥)

de deux polynômes 𝐴(𝑥) et 𝐵(𝑥) de degré 𝑛 avec un temps de calcul


𝑇(𝑛) = 𝑂(𝑛log 3 )

L’unité de temps est le temps de réaliser une opération booléenne.

Vous aimerez peut-être aussi