Automate de Collatz

Bonjour,

Décidément, Collatz est très populaire dans le shtam ! :-)

J'en ai pour ma part une approche totalement différente. Il est en effet possible de reproduire une suite de Collatz sans effectuer le moindre calcul, par un simple processus apparenté à un automate cellulaire. Démo et explications sur cette page.

Réponses

  • Je trouve ça très intéressant, mais pourquoi cette manie de tester sur des tous petits nombres alors que le problème est ouvert pour des grands nombres.

    Et je pense qu'il faut le programme à genre 10^6 opérations par seconde, que le bandeau soit un rectangle de 300 pixels de hauteur et 500 de longueur et mettre ton nombre de 1000 chiffres en binaire au milieu.

    Là, oui, le spectacle sera global. J'ai eu la flemme de le faire en Lazarus, mais peut-être que la flemme me passera.

    Mais moi, je ne sais pas programmer en javascript comme toi, le monde vous appartient les programmeurs en javascript.

    Et je n'ai pas compris tes règles d'équivalence avec Collatz: si tu veux de l'audience il faudrait que TOUT LE MONDE comprend que ton automate est "équivalent"
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • christophe c a écrit:
    pourquoi cette manie de tester sur des tous petits nombres alors que le problème est ouvert pour des grands nombres.

    Qu'est-ce qui t'empêche de saisir un grand nombre dans le champ N ? La valeur maximale d'un entier en Javascript est $2^{53}-1$.
    a écrit:
    Et je pense qu'il faut le programme à genre 10^6 opérations par seconde

    C'est techniquement impossible. Dans la mesure où un pion se déplace physiquement (ne saute pas d'une barre à l'autre) il faut attendre qu'il ait le temps d'achever son déplacement, sinon la valeur qu'on lirait de sa position horizontale, en pixels, serait non entière et ne correspondrait à rien de concret. Et il y a d'autres calculs à effectuer avant et après ce déplacement, par exemple obtenir le nom du ou des des pions qui devront être supprimés, et les colorer temporairement en rouge, etc. C'est pourquoi un pion est déplacé toutes les 350 ms. J'ai testé des valeurs inférieures, mais plus je descendais bas et plus c'était le chaos.
    a écrit:
    Et je n'ai pas compris tes règles d'équivalence avec Collatz

    Tu prends une bande de papier sur laquelle tu délimites des cellules, puis tu poses dessus des pions de Dame, ou autre, et tu leur appliques les règles de déplacement. A l'issue de chaque itération tu attribues au premier pion la valeur $2^0$ et aux autres pions la valeur 2^(leur distance du premier pion), puis tu en fais la somme. Enfin, tu compares avec une suite de Collatz. De toute façon, ces règles sont dérivées de l'algorithme de Collatz, comme tu peux le lire à l'adresse dont je fournis le lien tout en bas de la page. Si j'ai fourni ce lien c'est pour éviter de me répéter.
  • hello Wilfrid
    je viens de tester ton automate avec 27, c'est sympa à voir.
    je cite "Exécuter une itération de l’automate revient à faire 3 N + 1 suivi de une ou plusieurs divisions par 2. Dans les deux cas on obtient le successeur impair de N dans une suite de Collatz."
    donc j'ai bien vu de mes yeux vu 27 faire 41 itérations puisqu'il a 41 étapes impaires : bravo

    dans mon post à moi "à propos de syracuse" nous (il y a plusiuers membres du forum qui participent activement) on utilise effectivement un modèle "impair" de i' (impair de départ) à i tel 3i+1=2^m en nommant x le nombre d'étapes impaires, n le nbr de div par 2 et
    x = log(2^tdv/i';6) @Collag3n
    n =tdv-(LOG(3i+1;2)+x) @Collag3n
    nous avons aussi dégaé des objets dans [i',tdv] : latitude, longitude, paquets de points

    dernièrement @lourran a contribué à un modèle pair (un peu à expliquer en 2 mots) mais après quelques efforts les deux modèles peuvent être croisés

    je te conseille de parcourir de post et de nous donner ton retour
  • C'est techniquement impossible.

    Non, mais je parlais de "tout voir" à l'écran, même les calculs intermédaires. Mais je ferai un programme. Et bravo pour ta maitrise de JS.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • PMF a écrit:
    je te conseille de parcourir de post et de nous donner ton retour

    Toi tu as une approche mathématique de Collatz, et moi une approche algorithmique. Chacun son truc. (:P)
    christophe c a écrit:
    Non, mais je parlais de "tout voir" à l'écran, même les calculs intermédiaires.

    Pourrais-tu préciser stp ?
  • Bin chaque étape la plus anodine.
    Moi par exemple, quand je vais programmer ça en mémoire écran, je mettrai :

    S pour successeur, D pour double et T pour trilple (donc 3 couleurs de pixels, + celle de fond et le butoir $B$ de début de chaîne et celui de fond U) et les opérations de réécritures seront :
    \begin{align*}
    SSD& \to D\\
    TSD&\to SDST\\
    TU&\to SDU \\
    BSD& \to BS \\
    BD&\to BT
    \end{align*} [small](J'utilise la variante du collatz: $2n+1 \to n+1$ et $2n\to 3n$ au lieu de $2n\to n$ et $2n-1\to 3n-1$)[/small]
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • hello wilfrid
    non mon approche est pratique, expérimentale et ressemble bcp à un algorithme sous une autre forme.

    Un jeu de formules dans excel, une méthode de tri , une macro qui fait ci ou ça c'est de nature algorithmique : c'est reproductible, ça revient finalement à des instructions simples (plus ou moins). Un automate va faire essentiellement des choses par lui-même selon la structure du cerveau qu'on lui a donné. Si des données sortent à la suite d'instructions, les données n'ont pas été fabriquées par les instructions. Mon automate est une machine à creuser la mine, il remonte du minerai, mais il ne le fabrique pas, nuance. Le tien se comporte comme une suite de Collatz parce que son cerveau contient une structure collatzienne.

    La conjoncture de Syracuse est un excellent terrain de jeu pour une approche expérimentale. Il faut du privilégier les expériences avant de formaliser. Ton automate est une super expérience. Pourrait-il- produire des données ? Pourrait-il être conditionné par d'autres paramètres.
  • Je pense que l'idée de CC, c'est d'afficher une première ligne avec le nombre de départ (des points comme tu le fais actuellement)
    Puis sur une 2ème ligne, son successeur
    Et ainsi de suite.
    L'idée d'afficher un nombre en format binaire est assez naturelle quand on parle de Syracuse.

    Ca nous conduit vers cette Discussion . Sur toutes les discussions autour de Syracuse que j'ai pu voir sur ce forum, c'était certainement la plus aboutie. Et c'était basé sur l'écriture en base 2 de chaque entier.
    En relisant en diagonale, je constate d'ailleurs que Wilfrid avait déjà participé à cette discussion.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • PMF a écrit:
    Ton automate est une super expérience. Pourrait-il- produire des données ? Pourrait-il être conditionné par d'autres paramètres.

    Je pourrais lui faire afficher des données, oui, mais serait-ce pertinent ? Et à quelles données penses-tu ?

    Son cerveau, comme tu dis, est déduit de l'algorithme de Collatz, donc il n'est adapté qu'au problème 3N+1. Pour le faire fonctionner avec kN+1 il faudrait revoir complètement les règles. C'est d'ailleurs une question intéressante : existe-t-il un ensemble de règles universelles ?

    @lourran,

    Prenons l'exemple de 28963. En base 2 et avec le bit de poids faible à gauche ça donne 1,1,0,0,0,1,0,0,1,0,0,0,1,1,1 (je mets des virgules pour faciliter sa lecture). Si on remplace les cellules par des tirets bas et les pions par des 1, l'automate affiche pour sa part 1,_,1,_,_,_,_,1,_,_,_,1,_,_,_,_,1,_,1,_,1

    La question est donc : si on remplace le format utilisé par l'automate par le format binaire traditionnel, qu'est-ce qu'on met entre les 1 ? Note également que chaque groupe de $n$ zéros est remplacé par $n+1$ tirets bas.
  • Wilfrid a écrit:
    La valeur maximale d'un entier en Javascript est $2^{53}-1$
    C'est un tout petit nombre ...

    Cordialement.
  • @gerard0,

    Je pense que le mieux est d'oublier temporairement l'équivalence entre l'automate et le problème 3N+1.

    A tout entier N impair correspond un état de l'automate. Lorsqu'on applique à celui-ci les règles de déplacement de ses pions, ils finissent par être tous éliminés sauf un (tout simplement parce qu'il ne peut pas s'autodétruire). Quelle configuration initiale serait telle que l'automate se comporterait différemment ? Peut-on l'imaginer ?

    Ce comportement dépend entièrement des règles de transformation auxquelles il est soumis. Pour qu'il se comporte différemment il faudrait le soumettre à des règles différentes.
  • @lourran,
    Wilfrid a écrit:
    La question est donc : si on remplace le format utilisé par l'automate par le format binaire traditionnel, qu'est-ce qu'on met entre les 1 ? Note également que chaque groupe de n zéros est remplacé par n+1 tirets bas.

    J'ai passé beaucoup de temps sur cet automate (et pas seulement pour le programmer). Je me souviens maintenant du problème posé par la représentation d'un nombre qui satisfasse aux règles que j'avais commencé à élaborer. Comment faire en sorte qu'il y ait au moins un espace entre deux pions (ou deux 1 en représentation binaire) ? Et la solution est apparue avec l'idée de poser les pions sur les lignes verticales plutôt que dans les cellules elles-mêmes, parce que dans ce cas la chose était impossible.

    Cet espace est donc artificiel, il n'a pas d'équivalent en représentation binaire. Pour ce qui concerne l'espace surnuméraire (par rapport au nombre de 0) il s'explique de la même manière. Si tu glisses deux pions sur les deux cellules à leur gauche, tu t'aperçois que l'écart entre eux diminue d'une unité :

    espacement.png

    Les règles de l'automate font état d'un nombre de cellules voisines $=1$, $\leq 1$, $> 1$ ou $\neq 1$, donc qu'il y ait deux ou trois cellules entre deux pions ne change rien. Ce qui change c'est lorsqu'il n'y en a qu'une. Il est impossible de représenter celle-ci avec deux pions placés dans deux cellules adjacentes (à moins que quelqu'un ne démontre le contraire).

    Pour ce qui est du lien que tu fournis dans ton dernier post, en sous-entendant que tout ça est déjà connu puisqu'on en a déjà parlé dans ce fil-là, tu t'es planté. Le bon sujet est celui dans lequel Serge Burckel évoque son algorithme de transformation. Le lien figure dans ce que j'ai nommé "l'historique" de l'automate, à la fin de la page qui lui est consacrée. Je l'ai déjà proposé plus haut, mais je le répète ici pour que ce soit bien clair : historique de l'automate. Il suffit d'ouvrir "Lisez-moi > Algorithme originel" pour pouvoir prendre connaissance des travaux de Serge.

    Et je ne dis pas "prendre connaissance" à la légère : le problème du shtam est qu'il est considéré par beaucoup comme le repaire des demeurés, et comme Serge avait posté son algorithme dans le shtam, bien sûr personne ne l'a lu. J'ai été le seul à y donner suite, avec beaucoup de difficultés parce qu'il utilisait des concepts auxquels je ne comprenais rien, et surtout le seul à avoir saisi immédiatement tout l'intérêt et le potentiel de son algorithme. L'automate est son petit-fils, son fils étant mon algorithme de transformation continue, qui introduisait un ensemble de règles applicables aux exposants. Je l'avais d'ailleurs posté devine où ? Dans le shtam !!! :-D

  • Si l'automate est son petit-fils et que tu as fait l'automate...

    Tu es le fils de Serge ?
  • CQFD : le shtam est donc un espace de travail collaboratif même s'il est peuplé de quelques fous lunatiques et autres trolls ricaneurs, ce qui fait sûrement son charme aussi.
  • si l'automate se comporte comme une suite de Collatz, il doit reproduire ses propriétés même les mieux cachées ;)
    par exemple regarde cette suite de [i', tdv] dans l'illustration jointe
    ces données montrent qu'il existe des suites de i' dont le tdv décroit de 5 par ligne tandis que x décroit de 2, et n de 3 , i étant constant
    (dans l'exemple le saut est de 5 sauf entre la ligne 1 et 2 où une ligne est sautée)
    pour rappel de i' (impair de départ) à i tel que 3i+1=2^m
    x nbr étapes impaires, n nbr de div par 2, et i le dernier impair avant 1
    j'appelle cet alignement une longitude

    Qu'est-ce que ferait l'automate si on lui demandait de ''s'amuser'' à suivre des trajectoires de tdv décroissants de 5 en 5 à partir d'une suite de départ ?102398
  • @PMF,

    Le temps de vol inclut les valeurs paires de $N$ et se calcule après création de la suite entière. L'automate ne sait pas ce qu'est un nombre pair, et son état $N$ ne représente qu'un instantané de ladite suite. C'est comme si tu t'attendais à ce qu'un seul nombre de la suite, peu importe comment il a été obtenu (ça ne fait aucune différence), te fournisse des informations sur l'ensemble de celle-ci.

    L'automate n'est qu'un moyen d'obtenir les valeurs impaires d'une suite de Collatz, rien de plus.

    En posant que $N_0$ est un état donné de l'automate et que $N_1$ est son état après application des règles, j'ai regardé s'il existait une corrélation entre le nombre de divisions possibles de $3N_0+1$ par 2 et le nombre de créations et de suppressions exécutées par l'automate pour se transformer en $N_1$. Pour ça j'ai tapé les valeurs successives 3, 5, 7, 9, ... dans le champ N, cliqué à chaque fois sur "Itérer", et noté le nombre de créations et de suppressions.

    Aucune corrélation. Je vois donc mal comment obtenir les valeurs paires intermédiaires, et je doute qu'on puisse jamais les obtenir, l'automate n'étant pas conçu pour prendre en compte ni $3N+1$ ni les divisions par 2. C'est justement ce qui le différencie de l'algorithme de Collatz.

    Ceci dit, si tu souhaites voir l'automate afficher certaines valeurs qu'il lui est possible de connaître, je peux le faire.
  • @wilfrid
    Dans la base de données que j'ai faite pour les suites de Syracuse, les étapes impaires jouent le rôle principal
    C'est bien pour cela que ton automate m'intéresse.

    On part de i' impair pour arriver à i tel que 3i+1=2^m en ne passant que par des étapes impaires (les i' intermédiaires)
    On se passe donc des étapes paires mais on garde leur nombre n sans détailler le contenu : c'est juste le nombre brut de div par 2

    Le résumé de mon analyse de cette base est que l'on peut tout décrire dans un nuage de points [i',tdv] en connaissant x (étapes impaires), n (div par 2), et i le point d'arrivée. Cette description se fait via 3 objets visibles à l'oeil nu dans le nuage de points [i', tdv]:
    - les clusters de points [i'_tdv] qui sont des i' ayant le même tdv et le même x_n_i.
    - les alignements selon une courbe descendante qui se font en choisissant un seul x_n_i : ils passent par le point situé à l'extrème gauche d'un cluster
    - les alignements selon une courbe montante qui se font en choisissant un seul x et un seul i: ils passent aussi par le point situé à l'extrème gauche d'un cluster

    Moralité : on trouve un point [i',tdv] à chaque croisement entre les 136 latitudes et 54 longitudes que j'ai identifiées pour i' entre 3 et 200.001 et i =5. Ce point est à l'extrème gauche de chaque cluster dont le nombre de points varie de 1 à 1028 (1 donc si le point est seul). Chaque cluster est donc comme attaché à ce point de croisement.
    Tu peux tester ici
    https://drive.google.com/file/d/1ZkXj_Qk6OyLJtDf8aSBLmI1UE0ItEQDQ/view?usp=sharing

    Quoi que fasse ton automate, il reproduit sans le savoir ce mécanisme. C'est bien cela qui me fascine. Je connais assez bien les automates mais dans le monde de l'animation 3D où on utilise le crowd animation. Dans le logiciel Massive, chaque individu possède un cerveau (brain) logique. Il agit dans son environnement (et par rapport aux autres individus) en fonction de son cerveau mais pas d'une animation directe. Si on enferme une foule (dont le cerveau leur dit de se déplacer) dans une enceinte n'ayant qu'une porte, tous les individus finiront par sortir par cette porte (s'ils ne s'écrabouillent pas en voulant tous sortir en même temps). On contrôle surtout ces ''automates" via leur environnement (on leur fait des passages) et évidemment par ce que l'on met dans leur cerveau logique (réflexes de défense, agressivité, ..)

    Si tout cela te parle, je pense que tu peux deviner le type de données que l'on pourrait traquer dans le comportement de ton automate.
  • Wilfrid a écrit:
    Je vois donc mal comment obtenir les valeurs paires intermédiaires, et je doute qu'on puisse jamais les obtenir

    J'ai parlé trop vite. En fait, l'automate fournit une indication visuelle du nombre de divisions par 2 de $3N+1$ (mais pas des valeurs paires intermédiaires, parce qu'il ne les produit pas).

    Pour permettre à chacun de vérifier ce qui suit j'ai ajouté une fonctionnalité à mon application : un clic sur le bouton "Données" affiche une liste de nombres commençant par la valeur N de l'automate à ce moment-là, suivie de l'exposant de 2 correspondant à la position de chacun des pions relativement au premier.

    Voici comment fonctionne l'automate :
    • Il se trouve dans l'état N.
    • Après déplacement de tous ses pions excepté le premier il passe à l'état $3N$ ou $3N-2$.
    • Après $k$ déplacements de son premier pion il passe à l'état $(3N+1)/2^k$.
    L'exposant correspondant à un pion étant égal à la distance (en nombre de cellules) qui le sépare du premier pion, lorsque celui-ci se déplace de $k$ cellules il décrémente automatiquement l'exposant de tous ses successeurs de $k$ unités (je précise qu'il s'agit d'exposants virtuels, car aucune valeur numérique n'est attribuée aux pions).

    Les règles sont telles que le premier pion ne peut normalement se déplacer que de 1 ou 2 cellules. Lorsque $3N+1$ est divisible par $2^k$ avec $k>2$, il se déplace de $k$ cellules en supprimant autant de successeurs que nécessaire (langage très imagé). Un exemple est celui de $N=1237$, tel que $3N+1$ est divisible 7 fois par 2. Si vous tapez ce nombre dans le champ N et que vous cliquez sur les pions verts successifs, vous verrez que le premier pion supprime 5 de ses voisins pour se retrouver 7 cellules à droite de sa position initiale. C'est l'indication visuelle dont je parlais au début.

    NB : pour compter le nombre de cellules dont le premier pion s'est déplacé il est nécessaire qu'il se soit trouvé préalablement sur l'origine de la grille. Les guides ne seront d'aucune utilité s'il se trouvait ailleurs avant son déplacement.

    Ceci montre que l'automate est strictement équivalent à l'algorithme de Collatz, avec toutefois une différence de taille : il ne nécessite aucun calcul.
    PMF a écrit:
    Si tout cela te parle, je pense que tu peux deviner le type de données que l'on pourrait traquer dans le comportement de ton automate.

    Les pions de l'automate sont des objets Javascript autonomes. Ils contiennent les valeurs de leur voisinage (gauche et droite en nombre de cellules) ainsi que le nom de leurs deux voisins (ou unique voisin s'il s'agit du premier ou du dernier pion). Lorsqu'un pion se déplace il ne met pas à jour son voisinage gauche, parce qu'il ne sait pas de combien de cellules son prédécesseur va se déplacer. Lorsque celui-ci se déplace à son tour il met à jour son voisinage droite ainsi que le voisinage gauche de son successeur (valeurs bien sûr égales). Si durant son déplacement il a supprimé un ou plusieurs pions, il met de plus à jour le nom de son successeur ainsi que le nom du prédécesseur de ce dernier (quant à son voisin de gauche, c'est toujours le même). Lorsqu'un nouveau pion est créé, il enregistre le nom de ses voisins, détermine son voisinage à partir du leur, qu'il met à jour en passant, et met à jour le nom du successeur de son prédécesseur ainsi que celui du prédécesseur de son successeur.

    Ce que je suis en train de t'expliquer est qu'un pion n'a "conscience" que de son environnement immédiat. L'automate se comporte comme si à chaque instant il ne comptait que trois pions (ou deux dans le cas cité), qui interagissent entre eux. Il n'a donc pas de "conscience globale" de son état, et par conséquent est très limité dans le nombre et le type des informations qu'il pourrait fournir. Je m'excuse pour lui. :-)

    Je pense que ce mécanisme plaide très sérieusement en faveur de la conjecture de Collatz, pour des raisons évidentes.
  • @wilfrid
    j'entre 19 dans ton automate
    je le laisse jouer quelques secondes et j'arrête au hasard
    après quelques essais, j'ai en données :
    29, 0, 2, 3, 4
    11, 0, 1, 3
    17, 0, 4
    13, 0, 2, 3
    5, 0, 2

    Ce qui matche la suite :19 29 11 17 13 5
    et dont les étapes paires sont : 58 88 44 22 34 52 26 40 20 10

    Je comprends que les données sont la "valeur N de l'automate à ce moment-là, suivie de l'exposant de 2 correspondant à la position de chacun des pions relativement au premier.''

    Donc le chemin que suit ton pion, ces "étapes" à lui, sont bien ces valeurs d'exposant de 2 ?

    Si tu peux exporter pour quelques i' ces données dans un csv ou txt, je suis preneur (la virgule servira de séparateur, une ligne par i')

    Je m'aperçois qu'en croisant ton approche et la mienne, il est possible de dire que :
    si un nuage de points [i',tdv] est le résultat du calcul complet des suites de Syracuse
    il existe au moins 2 méthodes (la tienne et la mienne) pour obtenir un nuage de points équivalent [i', tdv'] où tdv' n'a pas été calculé selon une suite de Syracuse (voir illustration)102502
  • @PMF,

    Je crains que tu ais mal lu mon précédent message. Ce que je disais est ceci :
    1. Tu saisis 19 dans le champ N.
    2. Tu cliques sur les pions verts successifs jusqu'à ce que le premier pion devienne lui-même vert, mais tu ne cliques pas dessus.
    3. Tu cliques sur "Données". La liste 57, 0, 3, 4, 5 s'affiche. Elle signifie que l'état actuel de l'automate est 57, donc 3*19, et que les exposants de 2 sont, dans l'ordre, 0, 3, 4 et 5. Autrement dit, le déplacement des pions jusqu'au deuxième a eu pour effet de multiplier N par 3 (ou 3N-2 dans certains cas, ce qui reste à élucider).
    4. Tu cliques maintenant sur le premier pion, qui se déplace d'une cellule, puis à nouveau sur "Données". La liste qui s'affiche est 29, 0, 2, 3, 4. En se déplaçant d'une unité le premier pion a décrémenté la valeur des exposants (sauf le sien puisqu'il vaut 0 par définition). S'il s'était déplacé de $k$ cellules il les aurait décrémentés de $k$ unités. Ce déplacement d'une cellule fait que $(3 \times 19)+1$ est divisible par $2^1$, opération que l'automate réalise ... en déplaçant son premier pion.
    Ce qu'il faut en retenir est que si l'automate est composé de $m$ pions et que son état est N, déplacer les $m-1$ derniers pions multiplie N par 3 (ou sensiblement 3). Puis déplacer le premier pion de $k$ cellules revient à diviser $3N+1$ par $2^k$. Il n'y aucune trace d'étapes paires dans tout ça.

    Si je t'ai ensuite expliqué le principe de fonctionnement de l'automate c'est pour te montrer qu'il faut le voir comme un ensemble de points au sein duquel trois d'entre eux agissent à tout instant de concert pour se déplacer et se situer les uns par rapport aux autres. Le nombre total de déplacements – ou plutôt d'itérations – nécessaires pour parvenir à un point unique, dépend exclusivement de l'état initial de l'automate, c'est-à-dire de $N_0$.

    C'est un processus purement mécanique, qu'on peut reproduire avec une feuille de papier, un crayon et une gomme. Ce qui te fait croire que l'automate peut t'être d'une quelconque utilité dans le cadre de tes travaux, c'est uniquement son lien avec le problème de Collatz, dont tu es un fin connaisseur. Tu cherches donc à le faire entrer à tout prix dans ce cadre-là. Je pense pour ma part qu'on peut considérer la question depuis le point de vue inverse : est-il possible de démontrer que le processus mécanique en question parviendra toujours à un pion unique ? Si oui, alors la conjecture de Collatz sera elle-même démontrée. Mais si tu pars de l'autre point de vue, celui qui consiste à d'abord démontrer la conjecture, tu risques d'y consacrer les 90 prochaines années en vain.
    PMF a écrit:
    Si tu peux exporter pour quelques i' ces données dans un csv ou txt, je suis preneur (la virgule servira de séparateur, une ligne par i')

    Je ne suis pas contre l'idée d'exporter des données, encore que les bras me tombent rien que de penser au boulot que ça m'occasionnerait, mais quelle est la différence entre les données issues de l'algorithme de Collatz et celles issues de l'automate ? Ce ne serait pas plus simple si tu convertissais $N_0,N_1,N_2,...$ en exposants issus de leur décomposition en base 2 ?

    De plus, l'automate ne dispose d'aucune information relative à son état $N$, comme je le disais dans mon précédent message. Alors pour te donner une idée du boulot que représente l'affichage de la valeur de $N$ à un instant donné, suivie de la liste des exposants associés aux pions, voici comment je procède :
    1. Charger les pions les uns après les autres pour lire leur position horizontale, en pixels, et l'ajouter à une liste. "Les uns après les autres" implique de devoir lire le nom du successeur de chacun d'eux – en commençant par le premier, qu'il est possible d'identifier uniquement parce que son voisinage gauche est 0 – pour ensuite le charger, parce qu'il est impossible de connaître leur ordre à l'avance.
    2. Calculer la différence entre ces nombres et la diviser par la largeur d'une cellule.
    3. Placer un 0 au début et calculer leur somme cumulée, ce qui donne la liste des exposants.
    4. Calculer la somme des puissances de 2 correspondante, ce qui donne $N$.
    Je t'explique ça pour te faire comprendre que la gestion de l'automate, et son mécanisme, n'est pas aussi simple et directe que celle d'un nombre qu'on multiplie par 3 puis qu'on 'incrémente avant de le diviser par 2 autant de fois que nécessaire. Et aussi pour confirmer ce que je viens de dire, à savoir que l'automate est un processus mécanique qui ne se base sur aucunes données autres que deux écarts entre trois pions à un instant donné. C'est d'ailleurs exactement ce que tu ferais si le mettais en œuvre à l'aide d'une grille sur laquelle tu placerais des pions de Dames.
  • Bonjour @wilfrid

    Merci pour ta réponse. Evidemment ne te lance pas dans l'export des données si c'est trop long à faire. Et surtout si ces données comme tu l'indiques n'apportent pas vraiment autre chose que ce l'on trouve dans une suite standard. Je referai les manips comme tu les a décrites et ça ira comme ça. C'est vrai que vu de l'extérieur on se dit que si les données s'affichent sur ton interface , un petit script ira bien les copier quelque part... mais c'est toujours facile ''vu de l'extérieur''.

    Par contre je pense que tu ne comprends pas exactement ce que je veux faire. Je constate comme beaucoup que cette conjecture ne sera peut-être jamais résolue, peut-être comme Paul Erdös l'a adroitement dit en disant ''Les mathématiques ne sont pas faites pour ça''. Un phrase bien ambigüe qui veut dire deux choses en même temps :1) ne perdez pas votre temps avec ce problème 2) les mathématiques sont complétement inadaptées à résoudre ce problème. Si la conclusion de 1) est simple, celle de 2) pose question. Si cette conjecture a traversé un demi-siècle sans solution, la probabilité d'en faire la démonstration un jour est franchement nulle.

    Donc je n'aborde pas du tout le problème sur l'angle de la démonstration, mais à ta manière par une méthode pratique. Tu as fait un automate, j'ai fait l'analyse d'une base de données en essayant de sortir un max d'infos sur ces suites et j'en tire des outils qui permettent déjà certains résultats. Mais tout cela c'est de la pure mécanique. Ni toi ni moi sommes en train de démontrer quoi que ce soit. Donc démontrer non, mais montrer ou démonter oui. On pourrait dire (dé)montrer si on voulait se la jouer façon Lacan ou Derrida.

    Je pense qu'il est possible de trouver des méthodes ''mécaniques" qui reproduisent l'algorithme de Syracuse comme le prouve ton automate. Je suis sur une piste pour attribuer un tdv à un i' sans calculer la suite. Si ça marche cela reviendra aussi à ouvrir des voies nouvelles, si quelqu'un comprend bien sûr pourquoi telle ou telle méthode produit les mêmes résultats.
  • L'automate de Wilfrid fait les mêmes calculs que toi ou moi.
    C'est quoi la différence ?
    Pour écrire le nombre dix+neuf, classiquement, on écrit 19 : une dizaine plus 9 unités. Certains utiliseraient l'écriture hexadécimale, et écriraient 13x (seize+trois) ; Wilfrid écrit 10011b (c.a.d. $2^4+2^1+2^0$ ). Mais tout ça, ça reste le nombre dix+neuf (je mets volontairement un + au lieu du classique tiret...

    En l'occurrence, il dit que dix+neuf, c'est un symbole 1 aux positions 1 2 et 5, en partant de la droite. Mais ça reste la même chose que 10011b.

    Si tu veux du lourd sur Syracuse, sur ce forum, regarde ces 2 discussions :
    Burckel 1
    Burckel 2

    C'est autrement plus sérieux que nos petits jeux. Et c'est ce qui a inspiré Wilfrid pour bâtir cet automate. Sans vouloir minimiser son travail, il n'a fait que mettre sur un visuel dynamique l'approche décrite dans la discussion n°1.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • @lourran,

    Mauvaise pioche une fois de plus : l'origine de l'automate est ce message. La discussion tourne court assez rapidement mais reprend dans celui-ci.

    La phase 2 est représentée par mon algorithme de transformation continue. Voici à quoi il ressemble dans sa version fonctionnelle (Javascript).

    La phase 3 est l'automate. Chacun pourra mesurer la simplification extrême de son algorithme par rapport à celui de la phase 2. Ce dernier traitait les exposants alors que l'automate traite les différences entre eux.

    CQFD

    Ceci dit, je viens de mettre à jour mon application. Elle affiche maintenant systématiquement, à l'issue de chaque itération, la valeur de $N$ ainsi que les exposants. Après avoir déplacé un ou plusieurs pions on peut cliquer sur le bouton "Données actuelles" pour afficher la valeur de $N$ et des exposants en l'état.
  • @ wilfrid
    Peux-tu jeter un oeil sur le dernier message que j'ai posté dans "à propos de Syracuse"
    Je te cite dans ce message, en bien évidemment ;)
    merci de ton retour, je pense que ça peut t'intéresser.
  • Ok. Et toi, pourrais-tu consulter tes messages privés ?
  • ok j'ai vu désolé !
Connectez-vous ou Inscrivez-vous pour répondre.