Ensemble des parties d'un ensemble
Résolu
matt2421
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'aimerais creer un code qui me permettrait d'obtenir ceci:
This program prints the power set of the set of natural numbers 0 ... N.
Enter N (0 <= N <= 10): 1,5
Illegal numeric format
Enter N (0 <= N <= 10): -2
Enter N (0 <= N <= 10): 31
Enter N (0 <= N <= 10): 2
The powerset of { 0, 1, 2 } is
{ { }, { 0 }, { 1 }, { 0, 1 }, { 2 }, { 0, 2 }, { 1, 2 }, { 0, 1, 2 } }
VOICI MON CODE REDIGE PAR MOI:
import acm.program.ConsoleProgram;
public class PowerSet extends ConsoleProgram {
public void run(){
println("This program prints the power set of the set of natural numbers 0");
int N = readInt("Insert a natural number:");
while(true){
if(0> N||N >10 ){
readInt("Insert a natural number:");
}
}
if(0<=N ||N<=10 ){ // SI LE NOMBRE EST COMPRIS ENTRE 0 ET 10....la Formule magique...
}
comment continuer svp?
j'aimerais creer un code qui me permettrait d'obtenir ceci:
This program prints the power set of the set of natural numbers 0 ... N.
Enter N (0 <= N <= 10): 1,5
Illegal numeric format
Enter N (0 <= N <= 10): -2
Enter N (0 <= N <= 10): 31
Enter N (0 <= N <= 10): 2
The powerset of { 0, 1, 2 } is
{ { }, { 0 }, { 1 }, { 0, 1 }, { 2 }, { 0, 2 }, { 1, 2 }, { 0, 1, 2 } }
VOICI MON CODE REDIGE PAR MOI:
import acm.program.ConsoleProgram;
public class PowerSet extends ConsoleProgram {
public void run(){
println("This program prints the power set of the set of natural numbers 0");
int N = readInt("Insert a natural number:");
while(true){
if(0> N||N >10 ){
readInt("Insert a natural number:");
}
}
if(0<=N ||N<=10 ){ // SI LE NOMBRE EST COMPRIS ENTRE 0 ET 10....la Formule magique...
}
comment continuer svp?
A voir également:
- Ensemble des parties d'un ensemble
- Testons ensemble avis - Forum Consommation & Internet
- Affichez l'ensemble des diapositives à l'écran avec 5 diapositives par ligne. - Forum Access
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment se désabonner de cafeingz ? - Forum Consommation & Internet
- Power point afficher 2 diapositive ✓ - Forum Powerpoint
1 réponse
Bonjour
Si tu associes un bit à chaque élément de ton ensemble, une partie de l'ensemble correspond à un nombre binaire à N chiffres avec la convention :
si un bit est à 0, l'élément correspondant n'appartient pas à la partie
si un bit est à 1, l'élément correspondant n'appartient pas à la partie
Pour lister toutes les parties de l'ensemble, il suffit d'énumérer tous les nombres à N bits, c'est à dire de compter de 0 à (2^N)-1.
Il ne reste qu'à traduire les nombres en binaires, ce qui est généralement inutile puisque les entiers sont représentés en binaire dans les ordinateurs, et à faire la liste des éléments associés aux bits qui sont à 1 dans le nombre en question.
Si tu associes un bit à chaque élément de ton ensemble, une partie de l'ensemble correspond à un nombre binaire à N chiffres avec la convention :
si un bit est à 0, l'élément correspondant n'appartient pas à la partie
si un bit est à 1, l'élément correspondant n'appartient pas à la partie
Pour lister toutes les parties de l'ensemble, il suffit d'énumérer tous les nombres à N bits, c'est à dire de compter de 0 à (2^N)-1.
Il ne reste qu'à traduire les nombres en binaires, ce qui est généralement inutile puisque les entiers sont représentés en binaire dans les ordinateurs, et à faire la liste des éléments associés aux bits qui sont à 1 dans le nombre en question.
C'est un algorithme très simple, pas besoin d'être pro.
Attention, comme il se base sur le fait que (2^N)-1 est un entier, avec une implémentation simple, la valeur autorisée pour N reste assez faible. Mais qui irait afficher l'ensemble des parties d'un ensemble de 30 éléments ?