Collatzova hypotéza je matematický oriešok, ktorý ešte len čaká na svoje rozlúsknutie. V tomto blogu si ukážeme jeden z prístupov, ktorý by nám mohol pomôcť k úspechu.
Collatzov algoritmus je definovaný týmito krokmi:
- zvoľte si ľuboboľné prirodzené číslo, vo všeobecnosti ho označme výrazom x.
- Ak je x nepárne, vypočítajte, koľko je y = 3x + 1.
- Ak je x párne, vypočítajte y = x / 2.
- Výsledok dosaďte znova za x: x = y a vráťte sa ku druhému kroku.
Collatzova hypotéza hovorí, že hoci si v prvom kroku vyberieme akékoľvek prirodzené číslo, raz sa v štvrtom kroku dostaneme k hodnote x = 1.
Collatzov algoritmus hore nohami – násobíme dvomi a delíme tromi
V predošlom blogu sme si ukázali, že čísla, ktoré dostaneme vykonávaním Collatzovho algoritmu, nevyznievajú až tak chaoticky akoby sa mohlo na prvý pohľad zdať. Zaujímavé veci sa o algoritme môžeme dozvedieť aj vtedy, keď úlohu otočíme – zaradíme spätný chod. Práve o obráternom postupe Collatzovho algoritmu budeme hovoriť v tomto blogu.Otočme teda obidva pravidlá:
- x patrí do N:
- krok A: y = x * 2
- krok B: y = (x – 1) / 3
Podľa Wikipédie si pri obrátenom postupe môžeme vybrať v každom momente ľubovoľný z dvoch krokov. Jediným obmedzením je pre nás podmienka, aby výsledná hodnota y bola tiež prirodzeným číslom (platnosť tohto tvrdenia si v tomto blogu nebudeme dokazovať).
Pre niektoré hodnoty x platí, že podmienku (y patrí do N) spĺňajú naraz obidva kroky (A aj B). Ktorou cestou sa vtedy vyberieme? Ak bude našim cieľom hĺadanie všetky čísiel, ktoré spĺňajú Colatzovu hypotézu, musíme sa vybrať všetkými možnými cestami.
Pri akých číslach môžeme urobiť krok A?
- ak x patrí do N, tak aj x * 2 patrí do N
Pri akých číslach môžeme urobiť krok B?
Tento krok už bude mať niekoľko úskalí. Výraz (x - 1) musí byť deliteľný menovateľom (v našom prípade tromi), aby bol výsledok prirodzeným číslom. Musí platiť:
- x – 1 mod 3 = 0
- z toho vyplýva: x mod 3 = 1
- 3x + 1 mod 2 = 0
Z toho vyplýva, že krok B môžeme vykonať len pri párnych číslach aj to len pri niektorých z nich.
Vyskúšajme si rátanie takéhoto opačného postupu aj na príkladoch:- x = 5
- 1. krok A: y = 5 * 2 = 10
- 2. krok B: y = (10 – 1) / 3 = 3
- x = 9
- 1. krok A: y = 9 * 2 = 18
- 2. krok B: y = (18 – 1) / 3 = 5 + 2/3
Ako zistíme, koľkokrát za sebou musíme urobiť krok A, aby sme mohli prejsť do kroku B? Ako sme si už povedali, pre hodnotu x musí v takom prípade platiť:
- x mod 3 = 1
- 1*2 mod 3 = 2
- 3*2 mod 3 = 0
- 5*2 mod 3 = 1
- 7*2 mod 3 = 2
- 9*2 mod 3 = 0
- 11*2 mod 3 = 1
- 13*2 mod 3 = 2
- 15*2 mod 3 = 0
- 17*2 mod 3 = 1
Nie je to náhoda. Ak si z postupnosti nepárnych čísel vyjmeme len každé tretie číslo, tak rozdiel medzi nimi bude rovný 6. Takýto rozdiel 6 (čiže 2*3) je deliteľný tromi a preto nijak nezasahuje do zvyšku:
- x mod 3 = (x + 6) mod 3
Tie čísla, pri ktorých vychádza zvyšok nevhodný pre krok B, skúsime vynásobiť dvomi ešte raz:
- 1*2*2 mod 3 = 1
- 7*2*2 mod 3 = 1
- 13*2*2 mod 3 = 1
- a * 2 mod 3 = 0
- a * 2ⁿ mod 3 = 0 (pre každé n patrí N)
Ako zistíme, ktoré nepárne číslo musíme koľkokrát násobiť dvomi, aby sme mohli prejsť ku kroku B? Skúsme teda nepárne číslo násobiť opakovane dvomi a sledujme, ako sa postupne v medzivýpočtoch mení zvyšok po delení tromi. Stanovme si premennú c, kde c patrí do N:
- 3c + 2 mod 3 = 2
- (3c + 2) * 2 = 6c + 4
- 6c + 4 mod 3 = 1
- 3c + 1 mod 3 = 1
- (3c + 1) * 2 mod 3 = 6c + 2
- 6c + 2 mod 3 = 2
- (5 * 2 – 1) / 3 = 3
- (5 * 2 * 2 – 1) / 3 = chyba
- (5 * 2 * 2 * 2 – 1) / 3 = 13
- (5 * 2 * 2 * 2 * 2 – 1) / 3 = chyba
Každé tretie nepárne číslo teda násobíme (okrem iného) aj jedenkrát aby sme mohli prejsť ku kroku B.
Košatý strom čísel uviaznutých v Collatzovej hypotéze
Keď som písal o obrátenom postupe Collatzovho algoritmu, sľúbil som, že pôjdeme od konca, teda od čísla 1 smerom k nekonečnu. Napriek tomu som si vtedy vybral do príkladu iné číslo: 5. Poďme to teraz napraviť a začnime naozaj od konca – od čísla 1. Postupne bude strom čísel košatieť, lebo pri hľadaní nových čísel budeme vytvárať jeho vetvy. Pri niektorých číslach sa bude dať ísť oboma cestami (bude sa dať urobiť krok A, ale aj krok B). My budeme mapovať všetky možné cesty a práve preto budeme vytvárať vetvy stromu, krorý má koreň v čísle 1. Vytváranie stromu si o poznanie zjednodušíme, ak namiesto krokov A a B budeme uvažovať vo všeobecnosti o takejto skupine krokov:- (x * 2ⁿ - 1) / 3
- (1 * 2 – 1) / 3 = 1
- (1 * 2³ – 1) / 3 = 5
- (1 * 2⁵ – 1) / 3 = 21
- (1 * 2⁷ – 1) / 3 = 85
- (1 * 2⁹ – 1) / 3 = 341
- 1₁₀ = 1₂
- 5₁₀ = 101₂
- 21₁₀ = 10101₂
- 85₁₀ = 1010101₂
- 341₁₀ = 101010101₂
- ((3x + 1) / 2ⁿ * 2ⁿ+2 – 1) / 3 = 4x + 1
- Číslo vynásobíme štyrmi tak, že ku číslu sprava pripíšeme dve nuly na konci (násobíme 100-mi)
- Ku párnemu číslu pripočítame jednotku tak, že poslednú nulu zprava nahradíme jednotkou.
Práve pre takéto pravidlá vyzerajú v obrátenom Collatzovi všetci súrodenci ako "cez kopirák".
Čo z toho vyplýva, že vieme, že súrodenci sa riadia výrazom 4x + 1? Ternto výraz si môžeme prepísať do inej podoby a bude čitateľnejší:- 4x + 1 = x + 3x + 1
- x > (x * 2¹ -1 ) / 3
- x < (x * 2ⁿ -1 ) / 3
Páčil sa Vám tento článok? Pridajte si blogera medzi obľúbených a my Vám pošleme email keď napíše ďalší článok