Informatique TD 3.3 Performances
Lycée Jules Ferry Cannes Page 1 sur 3 TSI2
On a stocké dans une pile un ensemble d’entiers :
p1 = [ 10, 20, 30, 40, 50, 70, 50]
On rappelle que les fonctions de pile disponibles sont :
empiler(p,v), depiler (p), creer_pile(), sommet(p), taille(p) et est_vide().
1) La liste p1 est-elle compatible avec une pile bornée. Justifier votre réponse et proposer un type de
pile compatible.
Si p1 était une pile bornée, il faudrait que p1 ait au moins 11 valeurs
(10 + le nombre de valeurs). Ici la pile ne contient que 7 valeurs, il ne peut
donc s’agir que d’une pile non bornée.
On rappelle l’algorithme de recherche d’un élément x dans une liste non triée L :
def chercher(L,x) :
n = len(L)
s = False
c = 0
while c<n and s==False :
if L[c]==x :
s = c
c = c + 1
return s
On donne les durées d’exécution des instructions suivantes (vraies à 20% près) :
Opération Incrément
boucle for
Affectation
s=10
(+ –* /)
Test
1==1
Extraction
d’un élément
L[1]
L.append(10)
L.pop()
len(L)
L : liste de
n éléments
Durée
unitaire(1)
1 0.5 1 1 0.5
(1) la durée unitaire pour l’essai était de 0,1 pour 1000 instructions.
L’incrément i = i+1 est ainsi la somme d’une opération arithmétique et d’une affectation.
2) Quelle est la durée unitaire C(0) d’une boucle avec prise en compte de l’affectation.
C(0) = 5.5 (3 tests + 2 affectations + une extraction + une opération)
3) Donner la complexité C(n) de la fonction chercher (C(n) représente la durée unitaire du traitement de
la liste dans le cas d’une liste en entrée de taille n) :
- donner la valeur de C(n) dans le pire des cas et proposer un appel de la fonction correspondant,
- donner la valeur de C(n) dans le meilleur des cas et proposer un appel de la fonction
correspondant.
C(n) = 5.5* n +2.5 (initialisation) + 2 (dernier test) dans le pire des cas
chercher(p1, 5) # valeur non présente
C(n) = 9 dans le meilleur des cas chercher (p1,10) # valeur présente en 1
er
4) Ecrire une fonction rechercher_pile construit sur le même algorithme que chercher mais en utilisant
les fonctions de piles sur une entrée p :
- prévoir un algorithme 1 qui dépile p dans une liste q puis rempile les valeurs dans p,
- prévoir aussi un algorithme 2 qui casse le lien d’alias de p avec la liste appelé et dépile p sans la
rempiler.
Correction en dernière page