Correction TP PSI : ´ecriture binaire des ensembles
Dans ce TP, on ´etudie une repr´esentation efficace des ensembles dans python. Soit nNet
En={0,1, ..., n 1}. On repr´esente un sous-ensemble SEnsur nbits, par un nombre dont
l’´ecriture en base 2 a son i`eme bit ´egal `a 1 si et seulement si iS.
Par exemple, si n= 5, le sous-ensemble S={0,2,3} ⊂ En={0,1,2,3,4}est repr´esene par :
<0
|{z}
4/S
1
|{z}
3S
1
|{z}
2S
0
|{z}
1/S
1
|{z}
0S
>2= 20+ 22+ 23= 13
Question 1. Par quel entier est repr´esene :
l’ensemble vide ?
R´eponse :<0...0>2= 0 .
En?
R´eponse :<1...1
|{z}
n
>2= 2n1
• {j}, o`u jEn?
R´eponse :<0...01 0...0
|{z}
j
>2= 2j.
Inversement, tous les entiers de 0 `a <11...11
| {z }
n
>2= 2n1 repr´esentent un sous-ensemble de
En. Pour trouver l’ensemble cod´e par un nombre, il suffit de trouver l’´ecriture en base 2 de ce
nombre. On rappelle que l’´ecriture en base 2 d’un nombre pcorrespond `a la suite (invers´ee) des
restes obtenus par divisions euclidiennes successives de ppar 2.
Par exemple, 26 = <11010 >2car : 26
0
2
13
1
2
6
0
2
3
1
2
1
1
2
0
Ainsi, 26 repr´esente l’ensemble {1,3,4} ⊂ E5.
Question 2. Quel est le sous-ensemble de Encoe par le nombre 17 ?
R´eponse : 17
1
2
8
0
2
4
0
2
2
0
2
1
1
2
0
donc 17 = <10001 >2code l’ensemble {0,4}.
En python, on peut ´ecrire un nombre en binaire en pr´efixant l’´ecriture binaire par 0b:
1
Inversement, on peut obtenir l’´ecriture binaire d’un nombre (sous forme de chaˆıne de ca-
ract`eres) avec bin :
On utilisera les op´erations binaires suivantes, si Aet Bsont deux ´ecritures binaires :
& (et binaire) : le i`eme bit de A&Best 1 ssi les i`emes bits de Aet Bsont 1.
|(ou binaire) : le i`eme bit de A|Best 1 ssi le i`eme bit de Aou Best 1.
Par exemple :
Question 3.
A quelle op´eration sur les ensembles correspond & ? En d´eduire comment savoir si un
ensemble Aest inclus dans un ensemble B.
R´eponse : `a l’intersection. ABssi AB=Bc’est `a dire : A&B== B.
A quelle op´eration sur les ensembles correspond |?
R´eponse : `a l’union.
Question 4.´
Ecrire une fonction appartient telle que appartient(i, A) renvoie True si
iA,False sinon.
Indice : il faut d´eterminer si A∩ {i}=.
Question 5. En d´eduire une fonction card qui renvoie la taille (cardinal) d’un ensemble en
argument.
R´eponse : (on utilise le fait que la taille d’un nombre qen binaire est blog2qc)
2
Un des inerˆets de cette repr´esentation des ensembles r´eside dans la fait qu’on peut facilement
tous les ´enum´erer : en faisant une boucle for variant de 0 `a 2n1.
Question 6. En ´enum´erant tous les ensembles, ´ecrire une fonction pairs_impairs ayant nen
argument et renvoyant une liste compos´ee de deux nombres : le nombre de sous-ensembles de
Ende taille pair et le nombre de sous-ensembles de Ende taille impair.
R´eponse :
Question 7.´
Etablir une conjecture sur le nombre de sous-ensembles de taille pair (resp.
impair). La prouver en utilisant la formule du binˆome de Newton.
R´eponse :
Le nombre de sous-ensembles de taille pair (resp. impair) de Enest : P=Pkpair n
k(resp.
I=Pkimpair n
k). D’apr`es la formule du binˆome de Newton, (11)n=PI= 0 donc P=I.
Question 8.´
Ecrire une fonction pour calculer la taille moyenne d’un sous-ensemble de En.
´
Etablir une conjecture et la prouver.
R´eponse :
R´eponse : Il est ”´evident” que la taille moyenne d’un sous-ensemble de Enest n
2. On peut le
d´emontrer en calculant Pn
k=0 kn
ket en utilisant kn
k=nn1
k1.
On rappelle que le codage par compl´ement `a 2 sur pbits (utilis´e par python) 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. Trouver la repr´esentation de n.
2. Ajouter 1.
3. Inverser les 0 et les 1.
Question 9. Comprendre pourquoi le minimum d’un ensemble Aest obtenu en ´ecrivant
A& (A). V´erifier sur des exemples.
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 !