Saya tertarik pada tugas-tugas seperti masalah Collatz. Mereka mudah untuk merumuskan dan melatih kepala Anda dengan sempurna, terutama pemikiran algoritmik, yang sangat berguna bagi programmer.
Tugas dirumuskan secara sederhana:
Ambil bilangan asli apa saja n. Jika itu genap, maka bagilah dengan 2, dan jika itu ganjil, maka kalikan dengan 3 dan tambahkan 1 (kita dapatkan 3n +1). Kami melakukan tindakan yang sama pada nomor yang dihasilkan, dan seterusnya.
Hipotesis Collatz adalah tidak peduli berapa pun angka awal yang kita ambil, cepat atau lambat kita akan mendapatkannya.
Secara algoritmik, tampilannya seperti ini:
while (number > 1) { if (number % 2 === 0) number = number / 2; else number = 3 * number +1; } 
Misalnya, ambil n = 5. Ini ganjil, yang berarti kita melakukan aksi pada yang ganjil, yaitu, 3n + 1 => 16. 16 genap, itu berarti kita melakukan aksi pada genap, yaitu, n / 2 => 8 => 4 => 2 => 1.
Urutan yang terbentuk pada n = 5: 16, 8, 4, 2, 1.
Saya meminta Anda untuk memaafkan matematika saya, beri tahu saya jika saya membuat kesalahan di suatu tempat.Marilah kita memilih jumlah total informasi pada unit dan jumlah sebenarnya dari informasi pada unit. Nyatakan langkah-langkah ini.
Pertimbangkan urutan untuk n = 7:
22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
Ada 16 langkah secara total, dan 
langkah - 
langkah sebenarnya yang benar-benar dilemparkan ke dalam himpunan angka lain adalah 5 di antaranya:
7, 11, 17, 13, 5.
Langkah sebenarnya Sa (n) adalah jumlah operasi 
3n + 1 pada nomor yang diperlukan untuk mencapai kesatuan.
Idenya jelas ditunjukkan oleh contoh tabel:
| 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 | Tanggal 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 | 
Dalam tabel seperti itu, urutan, polanya sendiri, sudah terlihat.
Seperti yang Anda lihat, kekuatan dua tidak akan pernah menjadi aneh, sehingga turun ke pembagian sederhana.
Urutan dari Sa (0) dibentuk oleh hanya 1 rumus.
P(0,k)=2∗2k.
Tidak ada langkah nyata yang perlu diambil, dengan pembagian sederhana semuanya akan direduksi menjadi satu.
Mengetahui hal ini, Anda dapat menjatuhkan dari tabel semua angka yang merupakan kelipatan dua.
| 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 | Tanggal 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 | 
Sekarang lebih sulit untuk menangkap polanya, tetapi ada satu. Yang paling menarik saat ini adalah pembentukan urutan. Tidak hanya seperti itu, angka berikutnya setelah 5 adalah 21, dan setelah itu adalah 85.
Sebenarnya, 
Sa (1) adalah urutan 
A002450 (0, 1, 5, 21, 85, 341, 1365, 5461, 21845, 87381 ...). Itu dibentuk oleh rumus:
P(k)=4k−1 lebihdari3.
Urutan yang sama dapat dijelaskan dengan rumus rekursif:
P(k)=4k0+1,dengan k0=1.
P(1)=4∗1+1=5;P(5)=4∗5+1=21;P(21)=4∗21+1=85;Dan seterusnya ...
Serangkaian langkah pertama dibangun, meskipun dapat terus tanpa batas. Mari kita lanjutkan ke langkah kedua. Formula transisi ke langkah 2 dapat diekspresikan dari rumus ganjil.
Mengetahui bahwa kami akan membagikan hasilnya 
3n+1 beberapa kali, dapat ditulis sebagai 
22 alpha dimana 
 alpha - jumlah divisi.
P(k)=3n+1 over22 alpha;22 alphaP(k)=3n+1;3n=22 alphaP(k)−1;
Rumus akhir berupa:
n(P(k), alpha)=22 alphaP(k)−1 over3;
Kami juga memperkenalkan penyesuaian untuk 
 beta seperti 
22 alpha+ beta sehingga opsi untuk membagi angka bukan kelipatan 3 oleh 3 terjadi.
n(P(k), alpha, beta)=22 alpha+ betaP(k)−1 over3;
Mari kita periksa rumusnya, karena alpha tidak diketahui, periksa 5 alpha berturut-turut:
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.Dengan demikian, urutan langkah kedua mulai terbentuk. Namun, dapat dicatat bahwa 113 tidak berurutan, penting untuk diingat bahwa rumus dihitung 
dari 5 .
n = 113 sebenarnya:
n(85,0,2)=(20+2∗85−1)/3=113.Untuk meringkas:
Banyak dari Sa(n+1) dihasilkan oleh fungsi n(P(k), alpha, beta) dari setiap elemen himpunan dari Sa(n) .
Kemudian mengetahui ini, Anda masih bisa mempersingkat tabel dengan menghapus semua kelipatan alfa.
| 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 | ... | 
Untuk memperjelasnya, berikut adalah contoh bagaimana elemen dari suatu himpunan 
Sa(2) menghasilkan elemen set dari 
Sa(3) untuk alpha dari 0 hingga 4.
| P (k) = 3 | P (k) = 113 | P (k) = 227 | 
|---|
| 3 dari α = 0 menghasilkan: Tidak ada
 
 13 dari α = 1 menghasilkan:
 17
 69
 277
 1109
 4437
 
 53 dari α = 2 menghasilkan:
 35
 141
 565
 2261
 9045
 
 213 dari α = 3 menghasilkan:
 Tidak ada
 
 853 dari α = 4 menghasilkan:
 1137
 4549
 18197
 72789
 291157
 
 
 | 113 dari α = 0 menghasilkan: 75
 301
 1205
 4821
 19285
 
 453 dari α = 1 menghasilkan:
 Tidak ada
 
 1813 dari α = 2 menghasilkan:
 2417
 9669
 38677
 154709
 618837
 
 7253 dari α = 3 menghasilkan:
 4835
 19341
 77365
 309461
 1237845
 
 29013 dari α = 4 menghasilkan:
 Tidak ada
 
 
 | 227 dari α = 0 menghasilkan: 151
 605
 2421
 9685
 38741
 
 909 dari α = 1 menghasilkan:
 Tidak ada
 
 3637 dari α = 2 menghasilkan:
 4849
 19397
 77589
 310357
 1241429
 
 14549 dari α = 3 menghasilkan:
 9699
 38797
 155189
 620757
 2483029
 
 58197 dari α = 4 menghasilkan:
 Tidak ada
 
 
 | 
Menggabungkan set ini, kita mendapatkan set dari Sa (3):
17, 35, 69, 75, 141, 151, 277, 301, 565, 605, 1109, 1137, 1205, 2261, 2275, 2417, 2437, 4437, 4549, 4821, 4835, 4849, 9045, 9101, 9669, 9685, 9699, 17749, 18197, 19285, 19341, 19397, 19417 ...
Apalagi menghapus gelar 
 alpha>0 kami mendapatkan:
17, 75, 151 ...
Artinya, turun ke:
n(P(k), beta)=2 betaP(k)−1 over3;
Kenapa di suatu tempat  beta=2 dan di suatu tempat  beta=1 ?Kembali ke urutan A002450. Ada ketergantungan yang menarik:
P(m)=(43m−1)/3 - tidak menghasilkan urutan anak.
P(m)=(43m+1−1)/3 - Menghasilkan urutan anak ketika 
 beta=2 .
P(m)=(43m+2−1)/3 - Menghasilkan urutan anak ketika 
 beta=1 .
Hanya ada 3 array anak potensial untuk suatu nomor.
Jika diterapkan pada rumus rekursif, maka:
Fungsi n( gamma, alpha, beta) dimana  gamma - sembarang nomor kelipatan dari 3 membentuk himpunan kosong ⨂.
A(n( gamma), alpha, beta)=⨂.
Fungsi n( lambda, alpha, beta) dimana  lambda - nomor apa pun yang dihasilkan  gamma di  beta=2 membentuk himpunan bilangan K milik himpunan bilangan N.
K(n(P( gamma), alpha,2))⊆N.
Fungsi n(P( lambda), alpha, beta) di  beta=1 membentuk himpunan bilangan L milik himpunan bilangan asli N.
L(n(P( lambda), alpha,1))⊆N.
Jelas, ini entah bagaimana dapat direduksi menjadi formulasi yang lebih ketat dan berbasis bukti.
Sebenarnya, ini adalah bagaimana urutan terbentuk dalam hipotesis Collatz.
Masih ada satu detail lagi. Kita perlu mengembalikan set lengkap dari langkah absolut dari set yang telah kita peroleh.
Formula untuk Ganjil:
n(P(k), alpha, beta)=22 alpha+ betaP(k)−1 over3;
Selain yang aneh, Anda perlu memulihkan banyak yang genap. Untuk melakukan ini, ingat formula:
P(0,k)=2∗2k.
Tinggal mengkorelasikan semuanya:
n(P(k), alpha, beta, epsilon)=22 alpha+ betaP(k)−1 over3∗2 epsilon.
Versi terakhir:
n(k, alpha, beta, epsilon)=2 epsilon22 alpha+ beta(4k+1)−1 over3;
Dengan demikian, setiap k dapat menghasilkan urutan.
Apakah sebaliknya benar bahwa salah satu bilangan asli pasti milik urutan apa pun dari n(k) ?
Jika demikian, maka sangat mungkin bahwa Collatz benar.
Untuk contoh akhir implementasi fungsi javascript:
 function collatsSequence( number, sequenceLength, alpha, epsilon ) {