Informatique (Commune) Mines-Ponts 2015 (Corrigé)
Informatique (Commune) Mines-Ponts 2015 (Corrigé)
Informatique (Commune) Mines-Ponts 2015 (Corrigé)
RETOUR = [typemes]
nbentree = int(com.read(3))
Ldonnees = []
for i in range(nbentree):
Ldonnees.append(int(com.read(4)))
RETOUR.append(Ldonnees)
RETOUR.append(int(com.read(4)))
return RETOUR
Q4
Le concepteur du sujet n’a toujours pas lu la pep8. . . [] hérité du java. . .
Q5
1
In [3]: def affichage(mesure):
Lmes = mesure[1]
Lmesexacte = [4*a for a in Lmes] # si je comprends bien l’énoncé... pas s^
ur
n = len(Lmes)
Labsc = [2*a for a in range(n)]
plt.plot(Labsc, Lmesexacte)
plt.show()
return S / tps*(n - 1)
Q7
return math.sqrt(retour)
1.4 Compression
Q11
test() renvoie un booléen, les deux autres fonctions sont utilisées pour renvoyer respectivement un chaine
de caractère (str) et un entier (int) mais bon c’est tordu comme formulation. . .
Q12
2
In [7]: node1 = h.make_huffman_tree((’F’, 1), (’E’, 1))
print(node1)
Q13
[[(’F’, 1), (’E’, 1), [’F’, ’E’], 2], [(’D’, 1), (’B’, 1), [’D’, ’B’], 2], [’F’, ’E’, ’D’, ’B’], 4]
Q14
In [10]: f = h.freq_table(’AABBCB’)
In [11]: list(f.items())
Q18
Dans le meilleur des cas, avec un appel à pos=0, on fait deux comparaisons en insérant un élément de
poids strictement plus petit que tous le autres. Danns le pire des cas, il a le plus grand poids strict et on
effectue 2n + 1 comparaisons.
Q19
La formulation est complètement tordu puisque lst est une variable interne à la fonction
build huffman tree. Comptons vaguement qq chose c’est-à-dire les comparaisons après lst.sort en fonction
de n = len(lst).
On fait n//2 itérations avec un appel à insert item de complexité entre 2 et 2p+1 où p est le n local puis
on rajoute une création d’arbre.
Dans le meilleur des cas, la création de sous-arbre donne un poids qui est inférieur à l’élément suivant,
ce qui fait de l’ordre de 2*n//2 = n comparasions (à un chouı̈a près) (poids: 1, 1, 2, 3, 5. . . fibonacci quoi)
Dans le pire des cas on crée à chaque fois un sous-arbre de poids maximal (1, 1, 1, 1, 1, 1,. . . ) ce qui fait
Pn//2
un nombre de comparaisons de p=0 (2p + 1) soit un ordre n2 comparaisons.
Critique On ne compte pas les opérations de gestion de mémoire (garbage collector) des instructions del
et de création de listes en pagaille. . .
Q20
3
In [13]: htree = h.build_huffman_tree(’ZBBCB’)
print(htree)
Q21
Je me dispense de l’arbre, B = 1, C = 00 et Z = 01 par exemple
Q22
En version numpy
s = odeint(f, 0, T)
plt.plot(T, s)
plt.show()
4
e=sin;
function [ydot]=f(t, y)
endfunction
y0=0;
t0=0;
T=0:0.1:10;
y = ode(y0,t0,T,f);
plot(T,y);
Q23
s = odeint(f, 0, T)