Devoir surveill´e no2
2 heures
Aucun document n’est autoris´e. L’usage de la calculatrice est interdit.
* * *
Ce devoir ´etudie deux repr´esentations des ensembles (au sens math´ematique) dans
python : par des listes dans la partie I et par des nombres (´ecrit en binaire) dans la partie
II.
On rappelle qu’un ensemble ne peut pas contenir de doublon (c’est `a dire plusieurs
fois le mˆeme ´el´ement). On dit qu’un ensemble Eest inclus dans E0, et on note EE0,
si tous les ´el´ements de Esont aussi des ´el´ements de E0. L’intersection EE0de Eet E0
est l’ensemble constitu´e des ´el´ements qui sont dans Eet dans E0. L’union EE0de E
et E0est l’ensemble constitu´e des ´el´ements qui sont dans Eou dans E0.
Toutes les complexit´es seront exprim´ees dans le pire des cas, sous la forme O(...) et
devront ˆetre justifi´ees.
I Repr´esentation par des listes
Dans cette partie, on repr´esente un ensemble par une liste. Par exemple, l’ensemble
{0,2,3}est repr´esene par la liste [0, 2, 3].
1. ´
Ecrire une fonction card ayant une liste en argument et renvoyant le nombre de ses
´el´ements.
2. ´
Ecrire une fonction appartient telle que appartient(k, L) renvoie True si k
appartient `a la liste L,False sinon.
3. (a) ´
Ecrire une fonction min renvoyant le minimum d’une liste non vide en argu-
ment.
(b) Prouvez que min renvoie bien le minimum d’une liste non vide.
(c) Quelle est sa complexit´e dans le pire des cas, en fonction de la taille nde L?
(d) Sur un ordinateur avec la configuration suivante, estimer le temps d’ex´ecution
de min(L), si Lest une liste de taille 106.
Type du processeur 64 bits
Fr´equence processeur 2 GHz
Quantit´e de m´emoire RAM 4 Go
Capacit´e disque dur 256 Go
4. (a) ´
Ecrire une fonction est_ens ayant une liste Len argument et renvoyant True
si la liste repr´esente un ensemble, False sinon. Il faut d´eterminer si Lcontient
un doublon.
1
(b) Quelle est la complexit´e dans le pire des cas de est_ens, en fonction de la
taille nde L?
(c) Estimer, pour la configuration pr´ec´edente, le temps d’ex´ecution de est_ens(L)
si Lest de taille 106.
5. (a) ´
Ecrire une fonction inter telle que, si L1 et L2 sont des listes repr´esentant des
ensembles, inter(L1, L2) renvoie la liste repr´esentant leur intersection.
(b) Quelle est la complexit´e dans le pire des cas de inter, en fonction des tailles
n1 et n2 de L1 et L2 ?
6. ´
Ecrire une fonction union telle que, si L1 et L2 sont des listes repr´esentant des
ensembles, union(L1, L2) renvoie la liste repr´esentant leur union.
II Repr´esentation binaire
Dans cette partie, on fixe nNet En={0,1, ..., n 1}. On repr´esente un ensemble
Sinclus dans Enpar un entier positif dont l’´ecriture en base 2 sur nbits poss`ede un 1
en position i∈ {0,1, ..., n 1}si et seulement si iS.
Par exemple, si n= 5, S={0,2,3} ⊆ E5est repr´esene par le nombre 13, car :
<01101 >2= 20+ 22+ 23= 13
1. Quel entier repr´esente ? On donnera ses ´ecritures binaire et d´ecimale.
2. Quel entier repr´esente En? On donnera ses ´ecritures binaire et d´ecimale.
3. Quel entier repr´esente {k}, si kEn? On donnera ses ´ecritures binaire et d´ecimale.
4. En supposant n= 5, quel ensemble est repr´esent´e par le nombre 26 ?
Si aet bsont des entiers positifs ´ecrit en base 2 sur nbits, on peut leur appliquer les
op´erations ´el´ementaires & et |suivantes en python :
a&best un entier positif dont l’´ecriture en base 2 a son i`eme bit ´egal `a 1 si et
seulement si les i`emes bits de aet bsont 1.
a|best un entier positif dont l’´ecriture en base 2 a son i`eme bit ´egal `a 1 si et
seulement si le i`eme bit de aou best ´egal `a 1.
Par exemple, comme 6 = <110 >2et 3 = <011 >2, 6 & 3 renvoie 2 (= <010 >2)
et 6 |3 renvoie 7 (= <111 >2).
5. Si aet bsont des entiers positifs repr´esentant des ensembles Aet B, quel ensemble
repr´esente a&b? Mˆeme question pour |au lieu de &.
Indice : penser aux op´erations classiques sur les ensembles.
6. ´
Ecrire deux fonction inter2 et union2 prenant chacune deux entiers positifs aet
b, repr´esentant des ensembles Aet B, et renvoyant les entiers repr´esentant AB
et AB, respectivement.
Quel inerˆet a la repr´esentation binaire des ensembles, par rapport `a la repr´esentation
par liste ?
2
7. ´
Ecrire une fonction appartient2 telle que appartient2(k, a) renvoie True si k
appartient `a l’ensemble Arepr´esene par l’entier positif a,False sinon.
Indice : kA⇒ {k} ∩ A6=.
8. ´
Ecrire une fonction card2 telle que card2(a) renvoie la taille de l’ensemble repr´esene
par l’entier positif a.
On rappelle que le codage par compl´ement `a 2 sur pbits consiste `a stocker tous les
nombres nde 2p1`a 2p11 :
Si n0, nest cod´e par son ´ecriture en base 2.
Si n < 0, le codage de nest obtenu de la fa¸con suivante :
1. ´
Ecrire nen base 2.
2. Inverser les 0 et les 1.
3. Ajouter 1.
9. Donner le codage par compl´ement `a 2 de -26 sur 6 bits.
10. Quels ensembles repr´esentent 26 et 26 & -26 ?
11. En d´eduire une fonction efficace pour calculer le minimum d’un ensemble repr´esent´e
par un entier. Comparer avec la fonction min de la partie I.
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !