chan79 a écrit:Il faudrait stocker en mémoire les 1952 carrés et créer un test qui permette de comparer deux carrés. Il donnerait 1 s'ils sont équivalents ( image l'un de l'autre par une sym-rot) ou 0 sinon.
Mais je n'ai pas les outils pour faire ça.
C'est justement à cela que servent mes polynômes caractéristiques.
A chaque carré déterminé, je calcule le polynôme de valeur minimale. Selon la formule utilisée, je sais immédiatement s'il s'agit d'un carré direct (identitaire), ou d'une transformation simple (symétrie axiale horizontale, verticale, diagonale ou anti-diagonale) ou composée (voir les quatres compositions qui sont aussi en quelque sorte les rotation dont parle
Dszlogic).
Comme l'a justement fait remarquer
Dszlogic, stocker en mémoire le polynôme caractéristique (64 bit en hexa) fait une substantielle économie de mémoire. Mais ce n'est qu'un détail aujourd'hui étant donné la puissance de calcul dont vous disposez.
C'est surtout un moyen simple et systématique de vérifier si un carré ou l'un quelconque de ses symétriques a déjà été découvert.
C'est d'autant plus important qu'avec la répétition des nombres utilisés, les symétries "cachées" sont multipliées et que comme vous explorez séquentiellement et systématiquement les branches de l'arbre, il faut impérativement vérifier qu'une symétrie fortuite dans une branche ne fait pas un nud avec une autre partie de l'arbre.
De plus, en codant comme je l'ai fait les "premières" case du carré par les puissances supérieures du polynôme, on est sûr que lors de l'exploration d'une branche (par exemple 1 2 4 ... ) tous les carré qui appartiennent bien à celle-ci auront d'office un nombre caractéristique minimal (identitaire). Si tout d'un coup votre exploration produit des carré symétriques simples ou composés, c'est que vous avez été "trop loin" ou qu'à cet endroit il y a un nud qui vous a fait passer sur une autre "branche de l'arbre de recherche".
Ce peut être une information très importante. Surtout si vous cherchez à développer un algorithme qui sera capable par la suite d'explorer des carrés plus grands, ou simplement un autre jeu de nombres, ou utiliser des transformations de ces nombres (par exemple un carré magique composé de carrés).