• Aucun résultat trouvé

TD d’Algo n o 1

N/A
N/A
Protected

Academic year: 2022

Partager "TD d’Algo n o 1"

Copied!
2
0
0

Texte intégral

(1)

TD d’Algo n o 1

EPITA ING1 2013; A. DURET-LUTZ

17 novembre 2010

1 Les notations Θ , O et

On rappelle les définitions :

Θ(g(n)) ={f(n) | ∃c1R+?,∃c2R+?,∃n0N, ∀n ≥n0, c1g(n) ≤ f(n) ≤c2g(n)}

O(g(n)) ={f(n) | ∃c2R+?,∃n0N, ∀n ≥n0, f(n) ≤c2g(n)}

Ω(g(n)) ={f(n) | ∃c1R+?, ∃n0N, ∀n ≥n0, c1g(n) ≤ f(n) }

Par abus de notation, on note souvent f(n) = Θ(g(n)) à la place de f(n) ∈ Θ(g(n)). De même n3+Θ(n2) doit s’interpréter comme une formule de la forme «n3+ f(n)» avec

f(n)∈ Θ(n2).

1.1 Propriétés

1. Étant données trois fonctions positivesf,geth, prouvez rigoureusement les propriétés suivantes :

(a) f(n) = Θ(f(n))

(b) f(n) = Θ(g(n)) ⇐⇒ g(n) = Θ(f(n))

(c) f(n) = Θ(g(n))etg(n) =Θ(h(n))implique f(n) = Θ(h(n)) (d) ∀λ>0, λ.Θ(f(n)) =Θ(f(n))

(e) Θ(f(n)) +Θ(g(n)) =Θ(f(n) +g(n)) (f) Θ(f(n)) +Θ(g(n)) =Θ(max(f(n),g(n))) (g) Θ(f(n))(g(n)) = Θ(f(n).g(n))

2. Lesquelles des propriétés ci-dessus utilisent le fait que les fonctions sont positives ? 3. Ces propriétés sont-elles valables en remplaçantΘpar O ?

Et si l’on remplaceΘparΩ?

4. Prouvez que les propritétés suivantes sont fausses : (a) f(n) = Θ(f(n/2))

(b) f(n) = Θ(g(n)) ⇐⇒ log(f(n)) =Θ(log(g(n)))

1.2 Utilisation

1. Prouvez que 4n2+2nlogn∈ Θ(n2) 2. Prouvez que O(n) +O(n2) =O(n2)

1

(2)

2 Un peu de dénombrement

Indiquez le nombre de fois où chaque message ci-dessous est affiché. Exprimez votre réponse en fonction de N.

#include <stdio.h>

#define N 10 int main(void) {

for (int i = 0; i < N; ++i) for (int j = 1; j <= N; ++j)

puts("Boucle 1");

for (int i = 0; i < N; ++i) for (int j = N/2; j > 0; --j)

puts("Boucle 2");

for (int i = 0; i < N; ++i) for (int j = 1; j < N; j *= 2)

puts("Boucle 3");

for (int i = 0; i < N; ++i) for (int j = i; j >= 0; j--)

puts("Boucle 4");

for (int i = 0; i < N; ++i) for (int j = i/2; j > 0; j--)

puts("Boucle 5");

for (int i = 0; i < N; ++i)

for (int j = i; j >= 0; j -= 2) puts("Boucle 6");

for (int i = 0; i < N; ++i) for (int j = i; j > 0; j /= 2)

puts("Boucle 7");

return 0;

}

La dernière boucle est difficile : vous pouvez ignorer les problèmes d’arrondi en première approximation.

Vous pouvez vérifier toutes vos réponses en appliquant vos formules pourN =10 :

% gcc -Wall -std=c99 foo.c

% ./a.out | uniq -c 100 Boucle 1

50 Boucle 2 40 Boucle 3 55 Boucle 4 20 Boucle 5 30 Boucle 6 25 Boucle 7

2

Références

Documents relatifs

FONCTION longSuiteTcheque(n:entier)  entier FONCTION estBissextile(an:entier)  booléen FONCTION pourcentPairTcheq(n:entier)  réel... Entêtes

la première fois, en 1795, mais les anciennes unités restaient utilisées et la deuxième fois en ……….. Le prototype du mètre créé par Henri Tresca a

• Ecrire une fonction PlusGdNb() qui simule les suites de lancers de ta mère et ta soeur et qui renvoie le plus grand nombre de lancers qui a été nécessaire entre ta mère et ta

[r]

[r]

Ici nous nous intéressons au groupe affine G de la droite réelle exemple le plus simple de groupe à croissance exponentielle qui ne soit

• Sur la Terre, l’eau se trouve sous trois états physiques (cf.. Elle est surtout présente

Quelle est l’expression algébrique des quatre fonctions représentées par les droites tracées dans le repère ci-dessus.. ATTENDUS DE FIN DE CYCLE ; CONNAISSANCES