• Aucun résultat trouvé

Licence Informatique 1

N/A
N/A
Protected

Academic year: 2021

Partager "Licence Informatique 1"

Copied!
3
0
0

Texte intégral

(1)

Licence Informatique 1

e

année

Algorithmique et Programmation Travaux Dirigés n°3 - Complexité

1- La complexité est une chose complexe

fonction avec retour booléen recherche1(chaine[] tab, chaine x) entier i;

booléen résultat;

début

résultat faux; i ← 0;

tantque (non résultat ET i < tab.longueur) faire si (tab[i] = x) alors

résultat vrai ; sinon

i ← i + 1;

finsi fintantque

retourne résultat;

fin

fonction avec retour booléen recherche2(chaine[] tab, chaine x) entier i;

booléen résultat;

début

résultat faux; i ← 0;

tantque (non résultat ET i < tab.longueur ET tab[i] ≤ x) faire si (tab[i] = x) alors

résultat vrai; sinon

i i + 1; finsi

fintantque

retourne résultat;

fin

On suppose que le tableau passé en paramètre est trié par ordre croissant.

1.1 Donner pour chacune des deux fonctions son paramètre de complexité.

1.2 Donner pour chacune des deux fonctions ses cas d'exécution au pire et au mieux.

1.3 Donner pour chacune des deux fonctions ses complexités au pire et au mieux, en détaillant les calculs.

1.4 On suppose que tous les cas d'exécutions sont équiprobables. Calculer la complexité moyenne de chacune des fonctions.

(2)

2- Ordres de grandeur

Classer par ordre de grandeur croissant les fonctions suivantes :

f1(n) = 2n2 f7(n) = n ln(n)

f2(n) = en+1 f8(n) = log3(n)

f3(n) = 10n+n10 f9(n) = ln(n2+1)

f4(n) = 2n f10(n) = n2+n

f5(n) = n+log2(n) f11(n) = 22n

f6(n) = n + 7 f12(n) = ln(n2) + n

3- Complexité et hacking

fonction sans retour mystere(caractere[] chaine) entier x,y;

début

x 0;

tantque (x < chaine.longueur-1) faire

si (chaine[x] = '/' ET chaine[x+1] = '/') alors

pour (y allant de x+1 à chaine.longueur-2 pas de 1) faire chaine[y] chaine[y+1];

finpour

chaine[chaine.longueur-1] ' '; sinon

x x + 1; finsi

fintantque fin

3.1 Expliquer ce que fait la fonction mystere et quel est le paramètre de complexité de la fonction.

3.2 Quel est le cas d'exécution au pire de la fonction mystere? Calculer la complexité au pire de cette fonction.

3.3 En supposant que cette fonction soit utilisée dans les serveurs Web pour traiter les adresses internet, comment pourrait-on provoquer un déni de service? Un déni de service consiste à saturer un serveur en le bombardant de très nombreuses requêtes ou en lui soumettant des requêtes très lourdes à traiter.

3.4 Réécrire la fonction mystère pour qu’elle soit de complexité linéaire.

4- Complexité du tri par insertion

fonction sans retour triInsertion(entier[] tab) entier i, j, val;

début

pour (i allant de 1 à tab.longueur-1 pas 1) faire val tab[i];

(3)

j i;

tantque ((j > 0) et (tab[j-1] > val)) faire tab[j] tab[j-1];

j j-1; fintantque tab[j] val; finpour

fin

Calculer la complexité de cette fonction.

5- Complexité du tri fusion

Calculer la complexité du tri fusion dont l’algorithme a été donné en cours.

Références

Documents relatifs

[r]

Les points stationnaires d’une fonction f de deux variables sont les points où son gradient s’annule.. Le gradient est « l’assemblage » de deux

[r]

Faire les calculs suivants en détaillant des

Dans le calcul de E(S) en développant S comme le carré d'une norme, les variances et covariance des variables aléatoires Y i jouent le

D’après ce qui précède, on peut conjecturer que pour tout entier naturel n, (2k) n est un nombre pair, et (2k + 1) n est un nombre impair.. b) Pour déterminer chaque longueur,

De la même manière on peut expliquer qu’un joueur qui arrive à un total de 4 est assuré de pouvoir gagner puisqu’il pourra ensuite arriver à 7 en employant toujours la

France - Montataire 2020. Opérations sur