Ich bin von Aufgaben wie dem Collatz-Problem angezogen. Sie sind einfach zu formulieren und trainieren Ihren Kopf perfekt, insbesondere algorithmisches Denken, was für den Programmierer sehr nützlich ist.
Die Aufgabe ist ganz einfach formuliert:
Nimm eine natürliche Zahl n. Wenn es gerade ist, teilen Sie es durch 2, und wenn es ungerade ist, multiplizieren Sie es mit 3 und addieren Sie 1 (wir erhalten 3n + 1). Wir führen die gleichen Aktionen für die resultierende Anzahl aus und so weiter.
Collatz 'Hypothese ist, dass wir früher oder später eine bekommen werden, egal welche Anfangszahl n wir nehmen.
Algorithmisch sieht es so aus:
while (number > 1) { if (number % 2 === 0) number = number / 2; else number = 3 * number +1; } 
Nehmen Sie zum Beispiel n = 5. Es ist ungerade, was bedeutet, dass wir die Aktion für die ungerade ausführen, dh 3n + 1 => 16. 16 ist gerade, das heißt, wir führen die Aktion für die gerade aus, dh n / 2 => 8 => 4 => 2 => 1.
Die bei n = 5: 16, 8, 4, 2, 1 gebildete Sequenz.
Ich bitte Sie, mir meine Mathematik zu verzeihen. Lassen Sie mich wissen, wenn ich irgendwo einen Fehler mache.Lassen Sie uns die Gesamtzahl der Informationen über das Gerät und die tatsächliche Anzahl der Informationen über das Gerät herausgreifen. Bezeichnen Sie diese Schritte.
Betrachten Sie die Reihenfolge für n = 7:
22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
Insgesamt gibt es 16 Schritte. Und die 
wahren Schritte , die tatsächlich in einen anderen Zahlensatz geworfen werden, sind 5 davon:
7, 11, 17, 13, 5.
Der wahre Schritt Sa (n) ist die Anzahl der Operationen 
3n + 1 für die Anzahl, die erforderlich ist, um die Einheit zu erreichen.
Die Idee wird am Beispiel einer Tabelle deutlich:
| 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 | 
In einer solchen Tabelle ist die Reihenfolge, ihr eigenes Muster, bereits sichtbar.
Wie Sie sehen können, wird die Zweierpotenz niemals ungerade, daher kommt es auf eine einfache Teilung an.
Eine Sequenz aus Sa (0) wird durch nur 1 Formel gebildet.
P(0,k)=2∗2k.
Es müssen keine wahren Schritte unternommen werden, durch einfache Teilung wird alles auf Einheit reduziert.
Wenn Sie dies wissen, können Sie alle Zahlen, die ein Vielfaches von zwei sind, aus der Tabelle streichen.
| 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 | 
Jetzt ist es schwieriger, das Muster zu erfassen, aber es gibt eines. Das Interessanteste ist jetzt die Bildung von Sequenzen. Nicht nur so, die nächste Ziffer nach 5 ist 21 und danach 85.
Tatsächlich ist 
Sa (1) die Sequenz 
A002450 (0, 1, 5, 21, 85, 341, 1365, 5461, 21845, 87381 ...). Es wird durch die Formel gebildet:
P(k)=4k−1 über3.
Die gleiche Sequenz kann durch eine rekursive Formel beschrieben werden:
P(k)=4k0+1,mit k0=1.
P(1)=4∗1+1=5;P(5)=4·5+1=21;P(21)=4·21+1=85;Usw…
Eine Reihe des ersten Schritts wird erstellt, obwohl er auf unbestimmte Zeit fortgesetzt werden kann. Fahren wir mit Schritt zwei fort. Die Übergangsformel zu Schritt 2 kann aus einer ungeraden Formel ausgedrückt werden.
Zu wissen, dass wir das Ergebnis teilen werden 
3n+1 mehrmals kann es geschrieben werden als 
22 alpha wo 
 alpha - Anzahl der Abteilungen.
P(k)=3n+1 over22 alpha;22 alphaP(k)=3n+1;3n=22 alphaP.(k)−1;
Die endgültige Formel hat folgende Form:
n(P(k), alpha)=22 alphaP(k)−1 over3;
Wir führen auch eine Anpassung für ein 
 beta wie 
22 alpha+ beta so dass die Option, die Zahl nicht ein Vielfaches von 3 durch 3 zu teilen, passiert.
n(P(k), alpha, beta)=22 alpha+ betaP(k)−1 over3;
Lassen Sie uns die Formel überprüfen, da das Alpha unbekannt ist, und auf 5 aufeinanderfolgende Alpha prüfen:
n(5, alpha, beta)=22 alpha+ beta∗5−1 over3;
n(5,0,1)=(20+1∗5−1)/3=3.n(5,1,1)=(22+1∗5−1)/3=13.n(5,2,1)=(25∗5−1)/3=53.n(5,3,1)=(27∗5−1)/3=213.n(5,4,1)=(29∗5−1)/3=853.Somit beginnt sich die Sequenz des zweiten Schritts zu bilden. Es kann jedoch festgestellt werden, dass 113 nicht der Reihe nach ist. Es ist wichtig zu bedenken, dass die Formel 
aus 5 berechnet wurde.
n = 113 in der Tat:
n(85,0,2)=(20+2∗85−1)/3=113.Zusammenfassend:
Lot von Sa(n+1) generiert durch Funktion n(P(k), alpha, beta) von jedem Element der Menge aus Sa(n) .
Wenn Sie dies wissen, können Sie die Tabelle trotzdem kürzen, indem Sie alle Vielfachen von Alpha entfernen.
| 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 | ... | 
Um es klar zu machen, hier ein Beispiel, wie die Elemente einer Menge aus 
Sa(2) Generieren Sie Elemente der Menge aus 
Sa(3) für Alpha von 0 bis 4.
| P (k) = 3 | P (k) = 113 | P (k) = 227 | 
|---|
| 3 aus α = 0 erzeugt: Nichts
 
 13 aus α = 1 erzeugt:
 17
 69
 277
 1109
 4437
 
 53 aus α = 2 erzeugt:
 35
 141
 565
 2261
 9045
 
 213 aus α = 3 erzeugt:
 Nichts
 
 853 aus α = 4 erzeugt:
 1137
 4549
 18197
 72789
 291157
 
 
 | 113 aus α = 0 erzeugt: 75
 301
 1205
 4821
 19285
 
 453 aus α = 1 erzeugt:
 Nichts
 
 1813 aus α = 2 erzeugt:
 2417
 9669
 38677
 154709
 618837
 
 7253 aus α = 3 erzeugt:
 4835
 19341
 77365
 309461
 1237845
 
 29013 aus α = 4 erzeugt:
 Nichts
 
 
 | 227 aus α = 0 erzeugt: 151
 605
 2421
 9685
 38741
 
 909 aus α = 1 erzeugt:
 Nichts
 
 3637 aus α = 2 erzeugt:
 4849
 19397
 77589
 310357
 1241429
 
 14549 aus α = 3 erzeugt:
 9699
 38797
 155189
 620757
 2483029
 
 58197 aus α = 4 erzeugt:
 Nichts
 
 
 | 
Wenn wir diese Mengen kombinieren, erhalten wir die Menge aus 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 ...
Darüber hinaus wird der Grad entfernt 
 alpha>0 wir bekommen:
17, 75, 151 ...
Das heißt, es kommt auf:
n(P(k), beta)=2 betaP(k)−1 over3;
Warum irgendwo  beta=2 und irgendwo  beta=1 ?Zurück zur Sequenz A002450. Es gibt eine interessante Abhängigkeit:
P(m)=(43m−1)/3 - erzeugt keine untergeordneten Sequenzen.
P(m)=(43m+1−1)/3 - erzeugt untergeordnete Sequenzen, wenn 
 beta=2 .
P(m)=(43m+2−1)/3 - erzeugt untergeordnete Sequenzen, wenn 
 beta=1 .
Es gibt nur 3 potenzielle untergeordnete Arrays für eine Nummer.
Wenn auf eine rekursive Formel angewendet, dann:
Funktion n( gamma, alpha, beta) wo  gamma - Ein beliebiges Vielfaches von 3 bildet eine leere Menge ⨂.
A(n( gamma), alpha, beta)=⨂.
Funktion n( lambda, alpha, beta) wo  lambda - eine beliebige generierte Nummer  gamma bei  beta=2 bildet die Menge von Zahlen K, die zu der Menge von natürlichen Zahlen N gehört.
K(n(P( gamma), alpha,2))⊆N.
Funktion n(P( lambda), alpha, beta) bei  beta=1 bildet die Menge von Zahlen L, die zu der Menge von natürlichen Zahlen N gehört.
L(n(P( Lambda), Alpha,1))⊆N.
Offensichtlich kann dies irgendwie auf eine strengere und evidenzbasierte Formulierung reduziert werden.
Auf diese Weise werden Sequenzen in der Collatz-Hypothese gebildet.
Es ist noch ein Detail übrig. Es ist notwendig, vollständige Sätze aus absoluten Schritten aus den erhaltenen Sätzen wiederherzustellen.
Formel für ungerade:
n(P(k), alpha, beta)=22 alpha+ betaP(k)−1 over3;
Zusätzlich zu den ungeraden müssen Sie viele gerade wiederherstellen. Rufen Sie dazu die Formel auf:
P(0,k)=2∗2k.
Es bleibt nur alles zusammen zu korrelieren:
n(P(k), alpha, beta, epsilon)=22 alpha+ betaP(k)−1 over3∗2 epsilon.
Die endgültige Version:
n(k, alpha, beta, epsilon)=2 epsilon22 alpha+ beta(4k+1)−1 over3;
Somit kann jedes k eine Sequenz erzeugen.
Ist das Gegenteil der Fall, dass eine der natürlichen Zahlen definitiv zu einer Sequenz aus gehört? n(k) ?
Wenn ja, dann ist es durchaus möglich, dass Collatz Recht hatte.
Für das letzte Beispiel der Implementierung der Javascript-Funktion:
 function collatsSequence( number, sequenceLength, alpha, epsilon ) {