Inscription / Connexion Nouveau Sujet

1 2 +


Niveau énigmes
Partager :

Combien de dispositions à partir de n cubes

Posté par
ty59847
13-03-21 à 09:16

Suite à cette discussion, formule pour calcul ART, voici un sujet un peu similaire, mais en beaucoup plus simple.
On a des cubes, de couleurs différentes.
On va commencer par 3 cubes : Bleu Jaune Rouge (B,J, R)
On veut disposer ces 3 cubes côte à côte, et on veut comptabiliser le nombre de dispositions différentes. Chacun des cubes doit être collé à l'un des autres, avec une face accolée.
Si les 3 cubes sont alignés,  la seule question est de choisir le cube qui sera relié aux 2 autres. Donc 3 dispositions possibles avec 3 cubes alignés.
Si les cubes ne sont pas alignés, il faut réfléchir un peu plus, mais c'est pareil, la seule question est de choisir le cube qui sera au milieu. Il n'y a pas de question de sens direct ou indirect, en faisant tourner le bloc de 3 cubes sur lui-même, on constate qu'il n'y a que 3 dispositions différentes.
Donc 3+3 = 6 dispositions avec 3 cubes.

Questions,
1/ Combien de dispositions avec 4 cubes différents Bleu Jaune Rouge et Vert ?
2/ Combien de dispositions avec 5 cubes différents Bleu Jaune Rouge Vert et Noir ?
3/ Etc

Je n'ai pas les réponses, je ne pourrais pas trop chercher dans les prochaines semaines.

Posté par
dpi
re : Combien de dispositions à partir de n cubes 13-03-21 à 11:41

Bonjour,
On va bien s'amuser
Je tente pour 4 cubes :

 Cliquez pour afficher

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 13-03-21 à 12:10

Je n'ai pas cherché encore, mais ça ne peut pas être ça.
Mon énoncé n'était peut-être pas suffisamment clair , donc je précise :

Si j'aligne 4 cubes, BJRV ou VRJB, ça donne au final la même chose ; quand les 4 cubes sont alignés, il y a 12 façons de répartir les couleurs
Si je dispose les 4 cubes en carré,  il n'y a plus que 2 façons de répartir les couleurs.
Et si je dispose les 4 cubes en 'dimension 3' , il y a 8 façons de répartir les couleurs si je ne me trompe pas.
Etc etc ..
Quand j'ai assemblé mes 4 cubes, et qu'ils sont collés entre eux, j'ai le droit de faire tourner la composition dans tous les sens... et donc en particulier si j'ai collé mes 4 cubes pour faire un carré, la seule question qui se pose c'est de savoir si Jaune et Bleu sont cote à cote, ou en diagonale. Donc 2 dispositions seulement.

Donc non,  pas ce raisonnement où on compte les dispositions, puis on multiplie par 24.

Posté par
dpi
re : Combien de dispositions à partir de n cubes 14-03-21 à 08:23

En éliminant les positions symétriques pour 4 cubes:

 Cliquez pour afficher

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 14-03-21 à 09:02

En carré, ce n'est ni 2 comme j'écrivais précédemment, ni 6, mais 4 dispositions : il faut vraiment voir l'assemblage comme un volume. Je colle mes 4 cubes les uns aux autres. Et si je retourne mon assemblage de 4 cubes BJVR,  je tombe sur BRVJ.

ll te manque une forme où les 4 cubes sont sur un même  plan. (la position en Z, 3ème exemple de l'image)

Et il manque les formes  les 4 cubes ne sont pas tous dans un même plan (entre autres les exemples 1 et 2 de l'image).

Combien de dispositions à partir de n cubes

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 14-03-21 à 17:35

ty59847 @ 14-03-2021 à 09:02

En carré, ce n'est ni 2 comme j'écrivais précédemment, ni 6, mais 4 dispositions

Ben non, c'est 3.

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 14-03-21 à 17:57

En s'y mettant à plusieurs, on va finir par trouver  !
Pas si simple de compter jusqu'à 3.

Posté par
Sylvieg Moderateur
re : Combien de dispositions à partir de n cubes 14-03-21 à 18:02

Bonjour,
En carré, je trouve 3 aussi

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 14-03-21 à 18:03

Bojour

 Cliquez pour afficher

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 14-03-21 à 18:57

Chouette, j'ai trouvé la même chose, après correction sur le nombre de carrés.

Posté par
Sylvieg Moderateur
re : Combien de dispositions à partir de n cubes 15-03-21 à 08:29

Bonjour,
Merci d'animer
Je pose une question pour vérifier que je n'ai pas mal compris ce que l'on compte :
Dans l'image du 14 à 9h02, les figures 1 et 2 sont-elles considérées comme identiques (car symétriques) ou pas ?

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 15-03-21 à 08:52

Bonjour,
Non, elles sont différentes.
On peut prendre en main la forme n°1, coloriée comme on veut, on peut la faire tourner dans tous les sens, elle ne donnera jamais la forme n°2.
On manipule des objets en bois, réels...

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 15-03-21 à 09:26

Pour détailler un peu la réponse :

 Cliquez pour afficher

Posté par
Sylvieg Moderateur
re : Combien de dispositions à partir de n cubes 15-03-21 à 09:59

Merci pour vos réponses

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 15-03-21 à 11:29

 Cliquez pour afficher

Posté par
Vassillia
re : Combien de dispositions à partir de n cubes 15-03-21 à 12:27

Bonjour,
Joli exercice, je vous souhaite bien du courage pour généraliser quelque soit le nombre de cubes, je ne vois pas comment le faire

Posté par
dpi
re : Combien de dispositions à partir de n cubes 15-03-21 à 17:09

Bonjour,
A  noter que la troisième disposition dans l'espace est identique à celle du plan.

 Cliquez pour afficher

Posté par
Sylvieg Moderateur
re : Combien de dispositions à partir de n cubes 15-03-21 à 17:39

Jolis dessins
Comme j'ai renoncé à traiter n = 5, je me contente de commenter les résultats pour n = 4.

 Cliquez pour afficher

Posté par
Sylvieg Moderateur
re : Combien de dispositions à partir de n cubes 15-03-21 à 17:44

 Cliquez pour afficher

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 15-03-21 à 19:44

Pour compléter la réponse à DPI :

 Cliquez pour afficher

Posté par
Sylvieg Moderateur
re : Combien de dispositions à partir de n cubes 15-03-21 à 21:55

 Cliquez pour afficher

Posté par
dpi
re : Combien de dispositions à partir de n cubes 16-03-21 à 08:23

Bonjour à vous deux

 Cliquez pour afficher

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 16-03-21 à 09:06

 Cliquez pour afficher

Posté par
Sylvieg Moderateur
re : Combien de dispositions à partir de n cubes 16-03-21 à 09:20

Un peu plus théorique :

 Cliquez pour afficher

Posté par
dpi
re : Combien de dispositions à partir de n cubes 16-03-21 à 09:32

j'avais pas toutes les crêpes

Sur mes 6 cas gardés il faut en éliminer 3 bien vu!

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 16-03-21 à 19:19

Pour 5 cubes :

 Cliquez pour afficher


Pour 6 cubes :

 Cliquez pour afficher


Pour 7 cubes :

 Cliquez pour afficher


J'arrête là, je n'ai plus assez de feuilles pour faire mes dessins

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 16-03-21 à 19:39

J'ai retrouvé une ramette . Pour 8 cubes :

 Cliquez pour afficher

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 16-03-21 à 19:51

Aussitôt, je me précipite sur OEIS.
Cette suite est-elle référencée ?
Je ne suis pas très doué pour les recherches sur ce site, et apparement, non.
Par contre, la suite des nombres de solides, sans prendre en compte les couleurs, on la retrouve bien :  
1, 1, 2, 8, 29, 166, 1023, 6922  -->

Posté par
Vassillia
re : Combien de dispositions à partir de n cubes 16-03-21 à 20:59

On trouve même la suite des nombres de solide en 2D :  5, 12, 35, 108, 369, 1285, 4655...
et en 3D : 3, 17, 131, 915, 6553, 47026, 341888...
Donc la somme redonne bien la suite trouvée par GBZM mais même en admettant ce résultat, comment il arrive à en déduire le nombre de coloriage ?
Aucune idée, ce n'est pas le même nombre par solide. Je sens venir un programme en python mais cela reste impressionnant car il ne me parait pas du tout évident de coder ce bazar.

Posté par
Vassillia
re : Combien de dispositions à partir de n cubes 16-03-21 à 21:11

Pour ceux qui veulent visualiser les 5 cubes

Combien de dispositions à partir de n cubes

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 16-03-21 à 22:01

Source : wikimedia commons

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 16-03-21 à 22:32

Oups, je rectifie. Je me suis trompé dans les grandes largeurs pour les nombres de colorés. Heureusement, c'était facile à réparer :

Nombre de cubes : 5.
Nombre de solides : 29.
Nombre de solides colorés (une couleur par cube) : 2715

Nombre de cubes : 6.
Nombre de solides : 166.
Nombre de solides colorés (une couleur par cube) : 104700

Nombre de cubes : 7.
Nombre de solides : 1023.
Nombre de solides colorés (une couleur par cube) : 4937310

Nombre de cubes : 8.
Nombre de solides : 6922.
Nombre de solides colorés (une couleur par cube) : 273708960

Posté par
Vassillia
re : Combien de dispositions à partir de n cubes 16-03-21 à 22:46

Je croyais que les liens ne fonctionnaient au vu du message de ty59847 où cela ne fonctionne pas mais du coup vous avez les references y compris pour les suites en 2D et 3D ici

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 16-03-21 à 23:05

Voici le lien OEIS :

Posté par
Vassillia
re : Combien de dispositions à partir de n cubes 16-03-21 à 23:36

Je suis curieuse de voir le code ou le raisonnement quand même.
Les valeurs numériques ne m'intéressent pas vraiment par contre comprendre l'algo qui les donne nettement plus

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 17-03-21 à 10:09

Bah, j'ai écrit en python des procédures toutes bêtes, qui demanderaient sans doute à être optimisées. Les grandes lignes :

- Un cube est représenté par un triplet d'entiers (coordonnées de son centre).

- Une liste de cubes donne un solide. Toutes les listes sont calées dans l'octant positif : le minimum des premières (resp. deuxièmes, troisièmes) coordonnées des cubes est nul.

- On code un solide par :
1) Une liste de cubes calée qui le représente,
2) Une liste d'ensembles de cubes qui sont les "avatars" du solide ; on obtient les avatars en faisant agir les 24 rotations du cube sur la liste de cubes du 1),  on cale et on transforme en ensemble.
3) Une liste des permutations des cubes de la liste 1) induites par les rotations-calages qui préservent l'avatar associé (l'ensemble des cubes de la liste).

- On fabrique de manière incrémentielle les listes de solides à 1,2,3,... cubes. Les avatars permettent de vérifier qu'il n'y a pas de doublon, les listes de permutations permettent de compter les coloriages.

class Solide :   
    def __init__(self, ListeCubes, ListeAvatars,Symetries):
        self.lcub = ListeCubes
        self.lav = ListeAvatars
        self.sym = Symetries

UnCube = Solide([(0,0,0)],[set([(0,0,0)])],[(0)])

def Caler(ListeCubes) :
    minx = min(cub[0] for cub in ListeCubes)
    miny = min(cub[1] for cub in ListeCubes)
    minz = min(cub[2] for cub in ListeCubes)
    return [(cub[0]-minx,cub[1]-miny,cub[2]-minz) for cub in ListeCubes]

def Rotations(Cube) :
    a = Cube[0] ; b = Cube[1] ; c = Cube[2]
    return[(a,b,c),(a,-b,-c),(-a,b,-c),(-a,-b,c),\
          (-a,-c,-b),(-a,c,b),(a,-c,b),(a,c,-b),\
          (c,a,b),(c,-a,-b),(-c,a,-b),(-c,-a,b),\
          (-c,-b,-a),(-c,b,a),(c,-b,a),(c,b,-a),\
          (b,c,a),(b,-c,-a),(-b,c,-a),(-b,-c,a),\
          (-b,-a,-c),(-b,a,c),(b,-a,c),(b,a,-c)]

def Solidifier(ListeCubes):
    s=set(ListeCubes)
    LAva=[] ; LPerm=[]
    LRot=[Rotations(cub) for cub in ListeCubes]
    for i in range(24) :
        lc = Caler([r[i] for r in LRot])
        ava = set(lc)
        if not(ava in LAva) : LAva.append(ava)
        if ava == s :
            perm = [ListeCubes.index(cub) for cub in lc]
            if not(perm in LPerm) : LPerm.append(perm)
    return Solide(ListeCubes,LAva,LPerm)

def PousseCube(Cube) :
    a = Cube[0] ; b = Cube[1] ; c = Cube[2]
    return [(a+1,b,c),(a,b+1,c),(a,b,c+1),\
           (a-1,b,c),(a,b-1,c),(a,b,c-1)]

def AjoutCube(ListeCubes) :
    LAjout=[]
    for cub in ListeCubes :
        for i in range(6) :
            nouv = PousseCube(cub)[i]
            if not(nouv in ListeCubes) :
                LAjout.append(Caler(ListeCubes+[nouv]))
    return LAjout

def PlusUn(ListeSols) :
    LPU = []
    for sol in ListeSols :
        L=AjoutCube(sol.lcub) 
        for listcub in L :
            s=set(listcub)
            if all( not(s in solid.lav) for solid in LPU) :
                LPU.append(Solidifier(listcub))
    return LPU

LSUn=[UnCube]
LSDeux=PlusUn(LSUn)
...
LSSept=PlusUn(LSSix)


La fabrication de LSHuit prend tout de même plus de 4 minutes. Il faudrait optimiser pour aller plus loin.

%time LSHuit=PlusUn(LSSept)

CPU times: user 4min 5s, sys: 159 ms, total: 4min 5s
Wall time: 4min 5s

Ensuite, pour extraire les informations :

import math

def Info(ListeSolides,n) :
    nb = len(ListeSolides)
    nbcol = sum(math.factorial(n)//len(sol.sym) for sol in ListeSolides)
    print("Nombre de cubes : {2}.\n\
Nombre de solides : {0}.\n\
Nombre de solides colorés (une couleur par cube) : {1}."\
          .format(nb,nbcol,n))

Info(LSHuit,8)

Nombre de cubes : 8.
Nombre de solides : 6922.
Nombre de solides colorés (une couleur par cube) : 273708960.

Posté par
LittleFox
re : Combien de dispositions à partir de n cubes 17-03-21 à 10:54


Là, juste en jetant un coup d'oeil, je vois deux optimisations faciles:
- Utiliser des (frozen)sets au lieu de listes un peu partout:
   par exemple:

if not(perm in LPerm) : LPerm.append(perm)
est en O(n)
alors que
LPerm.add(perm) est en O(1)


-
  for i in range(6) :
            nouv = PousseCube(cub)[i]
devrait être
  for nouv in PousseCube(cub):


Pour éviter de recalculer PousseCube 6 fois.

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 17-03-21 à 12:10

Merci des suggestions. On y gagne pas mal :

%time LSHuit=PlusUn(LSSept)

CPU times: user 25 s, sys: 117 ms, total: 25.2 s
Wall time: 25.2 s

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 17-03-21 à 14:07

Du coup, j'ai tenté les neuf cubes. Ça rame, mais ça passe.

%time LSNeuf=PlusUn(LSHuit)

CPU times: user 28min 1s, sys: 1.18 s, total: 28min 2s
Wall time: 28min 2s

et les infos :
Nombre de cubes : 9.
Nombre de solides : 48311.
Nombre de solides colorés (une couleur par cube) : 17431530480.

C'est en tout cas raccord avec la suite OEIS pour ce qui est du nombre de solides non colorés.
Nombre de solides colorés (une couleur par cube) : 17431530480

Posté par
LittleFox
re : Combien de dispositions à partir de n cubes 17-03-21 à 17:10


Je me suis permis de réécrire ton code GBZM. J'ai bien les même résultats

 Cliquez pour afficher


Ça été galère d'être sûr d'avoir toutes (et que) les rotations possibles
Je n'ai pas pu aller à 10 cubes par manque de mémoire (>15Go).

Disponible ici:

 Cliquez pour afficher

Posté par
LittleFox
re : Combien de dispositions à partir de n cubes 17-03-21 à 17:38


En ne stockant pas les avatars mais juste la forme canonique de chaque solide (peu importe laquelle), je réduis drastiquement la consommation de mémoire et améliore même le temps.

Calcul de 10 cubes en un peu moins de 8 minutes:

 Cliquez pour afficher


Le lien vers le code reste valide.

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 17-03-21 à 18:08

Bravo, ça c'est du travail de pro dont je serais bien incapable. Je fais du python en dilettante. J'ai essayé ton code sur ma machine. Un peu plus lent, mais tout à fait comparable :

0: 0 (0) 0.000s
1: 1 (1) 0.001s
2: 1 (1) 0.003s
3: 2 (6) 0.006s
4: 8 (95) 0.018s
5: 29 (2715) 0.054s
6: 166 (104700) 0.205s
7: 1023 (4937310) 1.215s
8: 6922 (273708960) 8.912s
9: 48311 (17431530480) 72.788s
10: 346543 (1254165746400) 605.767s

Par contre je ne suis pas d'accord avec ta première ligne : 0: 0 (0). Ça devrait être 0: 1 (1).

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 17-03-21 à 18:19

Ah oui aussi LittleFox, je ne comprends pas bien pour quoi tu écris : "Ça été galère d'être sûr d'avoir toutes (et que) les rotations possibles" ?

Posté par
LittleFox
re : Combien de dispositions à partir de n cubes 17-03-21 à 18:23


En continuant avec ce programme, il faudrait 9 mois pour calculer les chiffres de l'oeis
Ça reste possible ^^

Posté par
LittleFox
re : Combien de dispositions à partir de n cubes 17-03-21 à 18:27

@GBZM
J'ai d'abord voulu retrouver les rotations possibles et si possible les construire plutôt que d'écrire les 24. Ben j'ai juste fait plein d'erreurs J'ai repris tes rotations du coup. En espérant qu'elles sont juste (ça à l'air)

Il y a combien de solides avec 0 cubes et 0 couleurs? J'ai choisi 0 mais en fait 0 ou 1 ça n'a pas de sens. D'ailleurs l'oeis se garde bien de donner cette valeur.

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 17-03-21 à 18:32

Ben c'est clair qu'il y en a un seul : le solide vide. Et il est clair aussi que tous ses cubes sont coloriés (n'est-ce pas ?), en utilisant 0 couleur.

Donc, si on veut donner une valeur pour 0 cube, 1 est la seule possible.

Posté par
GBZM
re : Combien de dispositions à partir de n cubes 17-03-21 à 18:53

Pour les rotations ; les rotations de la grille entière en dimension 3 sont données par des matrices de permutation, avec pour chaque matrice de permutation les quatre combinaisons de signes possibles pour avoir déterminant 1 : donc 0 ou 2 "moins" pour les permutations paires, 1 ou 3 moins pour les permutations impaires. C'est la structure de ma liste de rotations, avec les permutations données dans l'ordre de l'algorithme de Johnson-Trotter :
Le même procédé marche en toute dimension d, pour donner les 2^{d-1}d! rotations de la grille entière. Au fait, une petite modification du programme permettrait de compter les poly-hypercubes en dimension 4,5,...

J'aimerais bien une procédure python qui produise la liste des rotations (en toute dimension d).  Ça doit être faisable.

Posté par
dpi
re : Combien de dispositions à partir de n cubes 18-03-21 à 08:08

Bonjour,
Ce qui est remarquable en "détente c'est qu'un amusement du départ de ty59847
aboutisse à une très belle étude des pros .
Imaginons simplement l'écart entre le niveau 4 proposé et le niveau 10 prouvé par eux.

Posté par
LittleFox
re : Combien de dispositions à partir de n cubes 18-03-21 à 11:10


Version du code générant les rotations via l'algorithme Johnson-Trotter et fonctionnant en dimension quelconque:

C'est trois fois plus lent par contre Je me suis arrêté après 1minute pour chaque dimension

Résultats :

 Cliquez pour afficher

Posté par
ty59847
re : Combien de dispositions à partir de n cubes 18-03-21 à 11:49

@dpi,
C'était un peu mon objectif en lançant ce sujet ouvert, avec un nombre de cubes pas forcément limité, je voulais pécher du gros poisson

Je savais que pour 4 cubes,  on pourrait trouver la solution à la main, pour 5, ça doit être possible de le faire à la main, mais au delà, c'est une autre histoire.

Je donne quand même le lien vers l'autre sujet similaire, peut-être que LittleFox va mordre à l'hameçon ?

La même question de base, mais avec des tétraèdres réguliers : Combien de dispositions à partir de n tétraèdres

Les nombres sont plus petits, 4 faces au lieu de 6, mais l'approche est plus compliquée.

En tout cas, merci à tous pour vos réponses.

1 2 +




Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !