Correction TP PSI : ´ecriture binaire des ensembles
Dans ce TP, on ´etudie une repr´esentation efficace des ensembles dans python. Soit n∈Net
En={0,1, ..., n −1}. On repr´esente un sous-ensemble S⊂Ensur nbits, par un nombre dont
l’´ecriture en base 2 a son i`eme bit ´egal `a 1 si et seulement si i∈S.
Par exemple, si n= 5, le sous-ensemble S={0,2,3} ⊂ En={0,1,2,3,4}est repr´esent´e par :
<0
|{z}
4/∈S
1
|{z}
3∈S
1
|{z}
2∈S
0
|{z}
1/∈S
1
|{z}
0∈S
>2= 20+ 22+ 23= 13
Question 1. Par quel entier est repr´esent´e :
•l’ensemble vide ∅?
R´eponse :<0...0>2= 0 .
•En?
R´eponse :<1...1
|{z}
n
>2= 2n−1
• {j}, o`u j∈En?
R´eponse :<0...01 0...0
|{z}
j
>2= 2j.
Inversement, tous les entiers de 0 `a <11...11
| {z }
n
>2= 2n−1 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 Encod´e 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