Je suis attiré par des tâches telles que le problème Collatz. Ils sont faciles à formuler et à former parfaitement votre tête, en particulier la pensée algorithmique, ce qui est très utile pour le programmeur.
La tâche est formulée tout simplement:
Prenez n'importe quel nombre naturel n. S'il est pair, divisez-le par 2, et s'il est impair, multipliez-le par 3 et ajoutez 1 (nous obtenons 3n + 1). Nous effectuons les mêmes actions sur le nombre résultant, et ainsi de suite.
L'hypothèse de Collatz est que, quel que soit le nombre initial n que nous prenons, tôt ou tard nous en obtiendrons un.
Algorithmiquement, cela ressemble à ceci:
while (number > 1) { if (number % 2 === 0) number = number / 2; else number = 3 * number +1; }
Par exemple, prenez n = 5. Il est impair, ce qui signifie que nous effectuerons l'action sur l'impaire, c'est-à-dire 3n + 1 => 16. 16 est pair, c'est-à-dire que nous effectuerons l'action sur le pair, c'est-à-dire n / 2 => 8 => 4 => 2 => 1.
La séquence s'est formée à n = 5: 16, 8, 4, 2, 1.
Je vous demande de me pardonner mes calculs, faites-moi savoir si je fais une erreur quelque part.Supposons le nombre total d'informations sur l'unité et le nombre réel d'informations sur l'unité. Indiquez ces étapes.
Considérez la séquence pour n = 7:
22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
Il y a 16 étapes au total et les
vraies étapes qui sont réellement jetées dans un autre ensemble de nombres sont 5 d'entre elles:
7, 11, 17, 13, 5.
La vraie étape Sa (n) est le nombre d'opérations
3n + 1 sur le nombre nécessaire pour atteindre l'unité.
L'idée est clairement démontrée par l'exemple d'un tableau:
Sn (0) | Sn (1) | Sn (2) | Sn (3) | Sn (4) | Sn (5) | Sn (6) | Sn (7) | Sn (8) | Sn (9) | Sn (10) | Sn (11) | Sn (12) |
---|
2 | 5 | 3 | 17 | 11 | 7 | 9 | 25 | 33 | 43 | 57 | 39 | 105 |
4 | 10 | 6 | 34 | 22 | 14 | 18 | 49 | 65 | 86 | 59 | 78 | 203 |
8 | 20 | 12 | 35 | 23 | 15 | 19 | 50 | 66 | 87 | 114 | 79 | 209 |
16 | 21 | 13 | 68 | 44 | 28 | 36 | 51 | 67 | 89 | 115 | 153 | 210 |
32 | 40 | 24 | 69 | 45 | 29 | 37 | 98 | 130 | 182 | 118 | 156 | 211 |
64 | 42 | 26 | 70 | 46 | 30 | 38 | 99 | 131 | 173 | 119 | 157 | 406 |
128 | 80 | 48 | 75 | 88 | 56 | 72 | 100 | 132 | 174 | 228 | 158 | 407 |
256 | 84 | 52 | 136 | 90 | 58 | 74 | 101 | 133 | 177 | 229 | 305 | 409 |
512 | 85 | 53 | 138 | 92 | 60 | 77 | 102 | 134 | 178 | 230 | 306 | 418 |
Dans un tel tableau, l'ordre, son propre motif, est déjà visible.
Comme vous pouvez le voir, la puissance de deux ne deviendra jamais étrange, donc cela se résume à une simple division.
Une séquence de Sa (0) est formée par une seule formule.
Aucune vraie démarche n’est nécessaire, par simple division, tout sera réduit à l’unité.
Sachant cela, vous pouvez supprimer du tableau tous les nombres qui sont des multiples de deux.
Sn (0) | Sn (1) | Sn (2) | Sn (3) | Sn (4) | Sn (5) | Sn (6) | Sn (7) | Sn (8) | Sn (9) | Sn (10) | Sn (11) | Sn (12) |
---|
| 5 | 3 | 17 | 11 | 7 | 9 | 25 | 33 | 43 | 57 | 39 | 105 |
| 21 | 13 | 35 | 23 | 15 | 19 | 49 | 65 | 87 | 59 | 79 | 203 |
| 85 | 53 | 69 | 45 | 29 | 37 | 51 | 67 | 89 | 115 | 153 | 209 |
| 341 | 113 | 75 | 93 | 61 | 77 | 99 | 131 | 173 | 119 | 157 | 211 |
| 1365 | 213 | 141 | 181 | 117 | 81 | 101 | 133 | 177 | 229 | 305 | 407 |
Maintenant, il est plus difficile de saisir le modèle, mais il y en a un. La chose la plus intéressante maintenant est la formation de séquences. Pas juste comme ça, le chiffre suivant après 5 est 21 et après 85.
En fait,
Sa (1) est la séquence
A002450 (0, 1, 5, 21, 85, 341, 1365, 5461, 21845, 87381 ...). Il est formé par la formule:
La même séquence peut être décrite par une formule récursive:
Et ainsi de suite ...
Une série de la première étape est construite, bien qu'elle puisse se poursuivre indéfiniment. Passons à la deuxième étape. La formule de transition vers l'étape 2 peut être exprimée à partir d'une formule impaire.
Sachant que nous allons partager le résultat

plusieurs fois, il peut s'écrire
où
- nombre de divisions.
La formule finale prend la forme:
Nous introduisons également un ajustement pour
comme
de sorte que l'option de diviser le nombre non un multiple de 3 par 3 se produit.
Vérifions la formule, puisque l'alpha est inconnu, recherchons 5 alpha consécutifs:
Ainsi, la séquence de la deuxième étape commence à se former. Cependant, on peut noter que 113 n'est pas dans l'ordre, il est important de se rappeler que la formule a été calculée à
partir de 5 .
n = 113 en fait:
Pour résumer:
Lot de généré par la fonction de chaque élément de l'ensemble de .
Sachant cela, vous pouvez toujours raccourcir le tableau en supprimant tous les multiples d'alpha.
Sn (0) | Sn (1) | Sn (2) | Sn (3) | Sn (4) | Sn (5) | Sn (6) | Sn (7) ... |
---|
| 5 | 3 | 17 | 11 | 7 | 9 | ... |
| | 113 | 75 | 201 | 267 | 715 | ... |
| | 227 | 151 | 401 | 1073 | 1425 | ... |
Pour être clair, voici un exemple de la façon dont les éléments d'un ensemble de
générer des éléments de l'ensemble à partir de
pour alpha de 0 à 4.
P (k) = 3 | P (k) = 113 | P (k) = 227 |
---|
3 de α = 0 génère: Rien
13 de α = 1 génère: 17 69 277 1109 4437
53 à partir de α = 2 génère: 35 141 565 2261 9045
213 à partir de α = 3 génère: Rien
853 de α = 4 génère: 1137 4549 18197 72789 291157
| 113 à partir de α = 0 génère: 75 301 1205 4821 19285
453 de α = 1 génère: Rien
1813 de α = 2 génère: 2417 9669 38677 154709 618837
7253 de α = 3 génère: 4835 19341 77365 309461 1237845
29013 de α = 4 génère: Rien
| 227 de α = 0 génère: 151 605 2421 9685 38741
909 de α = 1 génère: Rien
3637 à partir de α = 2 génère: 4849 19397 77589 310357 1241429
14549 de α = 3 génère: 9699 38797 155189 620757 2483029
58197 de α = 4 génère: Rien
|
En combinant ces ensembles, nous obtenons l'ensemble de Sa (3):
17, 35, 69, 75, 141, 151, 277, 301, 565, 605, 1109, 1137, 1205, 2261, 2275, 2417, 2421, 4437, 4549, 4821, 4835, 4849, 9045, 9101, 9669, 9685, 9699, 17749, 18197, 19285, 19341, 19397, 19417 ...
De plus, la suppression du degré
nous obtenons:
17, 75, 151 ...
Autrement dit, cela se résume à:
Pourquoi quelque part et quelque part ?Retour à la séquence A002450. Il existe une dépendance intéressante:
- ne produit pas de séquences enfants.
- produit des séquences enfants lorsque
.
- produit des séquences enfants lorsque
.
Il n'y a que 3 tableaux d'enfants potentiels pour un certain nombre.
Si appliqué à une formule récursive, alors:
Fonction où - n'importe quel nombre multiple de 3 forme un ensemble vide ⨂.
Fonction où - tout nombre généré à forme l'ensemble des nombres K appartenant à l'ensemble des nombres naturels N.
Fonction à forme l'ensemble des nombres L appartenant à l'ensemble des nombres naturels N.
De toute évidence, cela peut en quelque sorte être réduit à une formulation plus rigoureuse et fondée sur des preuves.
En fait, c'est ainsi que les séquences se forment dans l'hypothèse Collatz.
Il reste un détail. Il est nécessaire de restaurer des ensembles complets à partir d'étapes absolues à partir des ensembles que nous avons obtenus.
Formule pour Odd:
En plus des impairs, vous devez restaurer de nombreux pairs. Pour ce faire, rappelez la formule:
Il ne reste plus qu'à corréler tous ensemble:
La version finale:
Ainsi, tout k peut générer une séquence.
L'inverse est-il vrai que l'un des nombres naturels appartient définitivement à une séquence de ?
Si oui, alors il est tout à fait possible que Collatz ait eu raison.
Pour le dernier exemple d'implémentation de la fonction javascript:
function collatsSequence( number, sequenceLength, alpha, epsilon ) {