Problem Collatza
Problem Collatza (znany też jako problem 3x+1, problem Ulama) – nierozstrzygnięty dotychczas problem o wyjątkowo prostym – jak wiele innych problemów teorii liczb – sformułowaniu. Nazwa pochodzi od nazwiska niemieckiego matematyka Lothara Collatza (1937). Zagadnienie to było również rozpatrywane przez polskiego matematyka Stanisława Ulama.
[edytuj] Definicja
Weźmy dowolną liczbę naturalną c0 (większą od 0). Jeśli jest ona parzysta, to za c1 przyjmijmy c0/2, w przeciwnym wypadku niech c1=3c0 + 1. Następnie, z liczbą c1 postępujemy podobnie jak z c0 i kontynuujemy ten proces. Otrzymamy w ten sposób ciąg liczb naturalnych określony rekurencyjnie przez formułę
lub
Hipoteza Collatza stwierdza, że niezależnie od jakiej liczby
wystartujemy, w końcu dojdziemy do liczby 1.
[edytuj] Przykłady
- Zaczynając od n = 11 mamy,
11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.
- Zaczynając od n = 27 mamy,
27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1
dla n = 27 cały proces zajmuje aż 111 kroków z maksymalną wartością 9232.
[edytuj] Problem Collatza jako hipoteza
Wykazano prawdziwość hipotezy Collatza dla liczb c0 mniejszych niż 20 × 258 ≈ 5.764×1018[1].
Są dwie możliwości zaprzeczenia hipotezie:
- dla jakiejś liczby początkowej otrzymany ciąg wpada w cykl inny niż (..., 4, 2, 1, ...);
- dla jakiejś liczby początkowej otrzymany ciąg jest rozbieżny do nieskończoności,
przy czym możliwości te nie wykluczają się.
Paul Erdős wypowiedział o problemie Collatza słynne zdanie: "mathematics is not yet ready for such problems" – "matematyka nie jest jeszcze gotowa na takie problemy". Niewątpliwie świadczy to o złożoności ewentualnego rozwiązania, z drugiej strony kontrast pomiędzy ową złożonością a prostotą sformułowania jest intrygujący.
[edytuj] Uogólnienie problemu Collatza na liczby całkowite ujemne
Jak dotąd wykryto trzy cykle (pętle) tego typu:
-1, -2, -1
-5, -14, -7, -20, -10, -5
-68, -34, -17, -50, -25, -74, -37, -110, -55, -164, -82, -41, -122, -61, -182, -91, -272, -136, -68.
[edytuj] Cykle n-stopnia
W 1978 roku R. Steiner oraz w 1996 i 2002 roku J. Simons i B. de Weger (bazując na metodzie Steinera) udowodnili, że pewne rodzaje cykli nie mogą istnieć.
Aby to wyjaśnić zdefiniujmy transformację dla liczb całkowitych dodatnich a i b oraz A:
b = T(a;A) znaczy b = (3*a+1)/2^A
- gdzie A to maksymalna potęga liczby 2^A która dzieli liczbę b bez reszty
Przykład: a = 15, wtedy b = T(15,A) 3*15+1 = 46, więc A = 1 b = (3*15+1)/2^1 = 23 23 = T(15;1)
- Określmy konkatenację (rozszerzalną do dowolnej długości):
b = T(T(a;A);B) = T(a;A,B)
Przykład: b = T(15;A,B) = T(15;1,1) = ((3*15+1)/2^1*3+1)/2^B = (3*23+1)/2^B = 70/2^1 = 35 35 = T(15;1,1)
- Zdefiniujmy transformację dla której mamy L wykładników równych 1 i ostatni A większy od liczby 1:
b = T(a;1,1,1,1,1,....,1,A) = T(a;(1)L,A)
- przy czym liczba L może być dowolnie duża
Przykład: b = T(15;1,1,1,A) = T(15;(1)3,A) = (53*3+1)/2^A = 160/2^5 = 5 5 = T(15;(1)3,5)
- Wówczas funkcja:
b = T(a;(1)L,A)
gdzie b = a, to cykl I stopnia o długości N = L + 1 iteracji.
[edytuj] Twierdzenia
- Ray Steiner udowodnił w 1978 r., że nie istnieje cykl I stopnia. Oznacza to, że niezależnie od tego ile iteracji L zostanie wykonanych, oraz ile będzie wynosił wykładnik A zaczynając od liczby a nigdy nie otrzymamy liczby b = a.
- w 1996 r. John Simons (opierając się na metodzie Steinera) udowodnił, iż nie istnieje cykl II stopnia: a = T(a;(1)L,A,(1)M,B), niezależnie od tego ile będzie wynosić L oraz M.
- w 2002 r. John Simons oraz Benne de Weger wykazali, że nie istnieje cykl mniejszy lub równy cyklowi 68 stopnia: a = T(a;(1)L1,A1,(1)L2,A2,...,(1)L68,A68).
- w 2002 r. John Simons oraz Benne de Weger wykazali, także, że nie istnieje cykl większy o kilka wartości od cyklu 68 stopnia (szacując to na podstawie poprzedniego wyniku)
[edytuj] Hipoteza Collatza w ujęciu diofantycznym
Warunki hipotezy można ująć za pomocą pewnych równań diofantycznych; aby to wyjaśnić posłużymy się pewną skróconą formułą opisującą ciąg.
[edytuj] Skrócona formuła rekurencyjna
Każdą operację typu
w ciągu Collatza wykonywaną zgodnie z definicją na nieparzystym
można skrócić do postaci
, gdyż liczba
jest zawsze parzysta, a zatem zawsze w następnej kolejności wywołuje dzielenie przez
. Dlatego ciąg Collatza możemy równoważnie zdefiniować za pomocą następującej skróconej formuły:
[edytuj] Przykłady
- Zaczynając od n = 7 mamy:
7, 11, 17, 26, 13, 20, 10, 5, 8, 4, 2, 1.
- Zaczynając od n = 15 mamy:
15, 23, 35, 53, 80, 40, 20, 10, 5, 8, 4, 2, 1.
[edytuj] Ciąg Collatza w ujęciu diofantycznym
Obserwując zachowanie się skróconego ciągu dla określonych liczb można zauważyć, iż niektóre liczby nieparzyste wywołują kilka operacji typu
pod rząd – do momentu gdy zostanie osiągnięta liczba parzysta, inne natomiast tylko jedną. Liczby te można zapisać przy użyciu dwóch naturalnych zmiennych
oraz
warunkujących wielkość danej liczby oraz ilość powtarzalnych operacji typu
które dana liczba determinuje za pomocą następującego wyrażenia:
Przy czym zmienna
jest determinantą ilości następujących po sobie operacji typu
, natomiast
tylko wielkości liczby. Każda liczba postaci
generuje w ciągu Collatza po
operacjach liczbę postaci:
Weźmy np. liczbę 15:
, a zatem liczba która następuje po niej po
operacjach wynosi:
,
jednak liczbę 15 można również zapisać następująco:
, wtedy jej następnik po
operacjach wyniesie:
.
Obie konstatacje są poprawne, ale tylko gdy zapiszemy liczbę
tak, iż współczynnik
będzie nieparzysty otrzymamy ostatnią parzystą składową ciągu operacji typu
. Bazując na powyższym zapisie możemy zdefiniować ciąg jeszcze ogólniej, ujmując powtarzalne dzielenie liczb parzystych przez liczbę 2 potęgowo:
[edytuj] Przykłady
- Zaczynając od n = 21 mamy:

- Zaczynając od n = 7 mamy:

[edytuj] Cykl w ujęciu diofantycznym
Warunkiem powstania cyklu w ciągu Collatza jest zajście równości pomiędzy pierwszym, a n-tym wyrazem ciągu. Musi być spełnione zatem jedno z równań:

lub

lub

itd.
Przy czym, jeżeli na przykład:

to naturalnie spełnione muszą być również równania:

oraz

Ogólnie w zależności od długości cyklu rozważamy zatem układ n tego typu równań (poniżej n=3):

Każdy taki układ po uporządkowaniu daje się zapisać jako iloczyn następujących czynników:
Potęgi dwójek skracają się do postaci
. Warunek jakiegokolwiek cyklu będzie zatem następującym równaniem diofantycznym:
Przy czym ilość ilorazowych czynników iloczynu może być dowolna, a wszystkie zmienne to liczby naturalne.
- Powyższy n-czynnikowy iloczyn jest tożsamy z cyklem n-stopnia. Mają tu zastosowanie zatem twierdzenia Steinera, Simonsa oraz de Wegera (o których mowa w punkcie 5.1). Hipotetycznie gdyby istniało rozwiązanie równania dla n czynników moglibyśmy mówić o istnieniu pętli n-tego stopnia (pomijamy tu przypadek pętli trywialnej).
[edytuj] Przykład
Pętla trywialna:

[edytuj] Problem rozbieżności do nieskończoności w ujęciu diofantycznym
Bazując na przedstawionym zapisie diofantycznym możemy zdefiniować również warunek rozbieżności do nieskończoności ciągu Collatza. Pewność, że ciąg dla danej liczby nie jest rozbieżny do nieskończoności daje nam zapętlanie się tej liczby (co zostało rozważone powyżej), wpadanie liczby w pętlę lub wystąpienie w ciągu liczby 1 (po skończonej liczbie iteracji), co również jest szczególnym przypadkiem wpadania liczby w pętlę trywialną. Pomijając przypadki hipotetycznych pętli (innych niż 1,2,1,...) ciąg Collatza dla dowolnej nierozbieżnej do nieskończoności liczby początkowej
można zapisać jako następujący skończony iloczyn:
Wynika to z tego, iż wszystkie czynniki w takim iloczynie z racji relacji jaka między nimi zachodzi skracają się wzajemnie do postaci potęgi liczby dwa, poza licznikiem ostatniego czynnika który sam musi być potęgą dwójki (co de facto gwarantuje wystąpienie liczby 1), aby równanie mogło być spełnione. Jeżeli dla jakiejś liczby początkowej licznik następujący po skończonej liczbie operacji nie będzie potęgą liczby 2, bo ciąg nigdy nie osiągnie liczby 1 lub osiąga ją w nieskończoności nie jest możliwe skonstruowanie skończonego iloczynu spełniającego równanie. Próba rozstrzygnięcia problemu w tej drodze powinna zatem skutkować dowodem, że iloczyn spełniający powyższe równanie dla dowolonej liczby
będzie skończony.
[edytuj] Przykłady
- Zaczynając od 9 mamy:
- Zaczynając od 21 mamy:
[edytuj] Uogólnienie równań na liczby ujemne
Warunki hipotezy można ująć za pomocą równań diofantycznych również dla liczb ujemnych. W owych równaniach zmieniamy wtedy tylko znaki "-" przed jedynkami na "+". Warunek cyklu zapiszemy zatem jako następujące równanie:
Natomiast warunek rozbieżności do nieskończoności dla dowolnej liczby ujemnej przyjmie postać:
[edytuj] Przykłady
Trzy znane pętle dla liczb ujemnych w ciągu Collatza reprezentują następujące równania:
- Zaczynając od liczby -1 mamy:
- Zaczynając od liczby -5 mamy:
- Zaczynając od liczby -17 mamy:
[edytuj] Liczby postaci 3n jako liczby które się nie zapętlają
Dla dowolnej liczby
która zapętla się w ciągu Collatza istnieje nieskończenie wiele jej następników oraz poprzedników. Przykładowo w cyklu trywialnym po liczbie jeden następuje nieskończenie wiele jej następników, jednak możemy wyznaczyć również równie wiele jej poprzedników. Hipotetycznie, zgodnie z zapisem diofantycznym ciągu Collatza poprzednikiem dowolnej liczby
będzie zawsze jakaś liczba:

Jednakże gdy liczba
jest postaci
, to równanie diofantyczne:

Nie może być spełnione dla żadnej liczby
, ponieważ prawa strona równania dzieli się przez 3 bez reszty, natomiast lewa nie. Oznacza to, iż żadna liczba postaci
nie ma poprzednika w ciągu Collatza, a zatem nie może spełniać również warunków pętli.
[edytuj] Generalizacja problemu 3x+1
Ogólnie każdy ciąg zdefiniowany dowolnym skończonym ciągiem działań arytmetycznych dla liczby nieparzystej oraz redukcją liczby parzystej do liczby nieparzystej poprzez dzielenie jej przez liczbę dwa daje się zapisać za pomocą podobnych jak w ciągu Collatza równań diofantycznych. Przy czym zależność pomiędzy definicją ciągu a pojedynczym wyrażeniem diofantycznym jest następująca:
[edytuj] Przykłady
- Weźmy ciąg zdefiniowany następująco:
Pierwszym krokiem będzie wyznaczenie wielkości
oraz
, dopiero potem
, jednak kolejność nie ma tu znaczenia, należy zachować tylko jedną zasadę: aby wyrażenie faktycznie opisywało ciąg wielkości
oraz
muszą być dobrane tak aby iloraz
był ułamkiem nieskracalnym:

Zatem:

Natomiast:


Nasze wyrażenie przyjmuje, więc postać:

Możemy na tej podstawie skonstruować również warunki zapętlania się ciągu oraz rozbieżności do nieskończoności.
- Rozważmy jeszcze inny ciąg:
Nasze wyrażenie przyjmuje wtedy następującą postać:

Taki ciąg zapętla się już dla niewielkich liczb. Na przykład dla liczby 3:

Pętla występuje też dla liczby 39:

[edytuj] Ciąg Collatza w ujęciu programistycznym
Problem Collatza jest prawdopodobnie niealgorytmiczny. Oznacza to, że prawdopodobnie nie istnieje algorytm pozwalający rozstrzygnąć hipotezę.
[edytuj] Problem stopu a problem Collatza
Z prawdopodobnej niealgorytmiczności problemu wynika między innymi to, iż nie wiadomo czy algorytm realizujący ciąg Collatza opisany poniższym pseudokodem zatrzymuje się oraz prawdopodobnie nie da się tego rozstrzygnąć w tej drodze:
x:=x0 repeat if x jest parzyste then x := x/2 else x := 3*x + 1 until x = 1
W tym sensie problem jest niealgorytmiczny, bo nie wiemy czy procedura zatrzyma się w skończonym czasie. Pytanie o własność stopu tego programu pozostaje otwarte.
[edytuj] Program w języku Perl
Program obliczający ciąg Collatza w języku Perl:
#!/usr/bin/perl $num = shift or die "usage: ./$0 <num>\n"; print "$num\n"; while ($num!=1) { if ($num%2==0) { $num = $num/2 } else { $num=(3*$num)+1 } print "$num\n"; }
[edytuj] Program w języku Python
Program obliczający ciąg Collatza w języku Python:
def Collatz(n): print n while n != 1: if n % 2 == 0: n /= 2 print n else: n = 3*n+1 print n
[edytuj] Próba rozwiązania problemu
Wiele osób zaangażowanych w program BOINC uczestniczyło w projekcie 3x+1@home którego celem było rozwiązanie tego problemu poprzez znalezienie kontrprzykładu. Obecnie na stronie tego zamkniętego projektu można znaleźć listę liczb-kandydatów, użytych w projekcie, dla których długość ciągu przed osiągnięciem pętli {4,2,1} wyniosła 1000 iteracji.
Kontynuacją zakończonego projektu 3x+1@home jest Collatz Conjecture również wykorzystujący infrastrukturę BOINC.
Przypisy
- ↑ Computational verification of the 3x+1 conjecture. [dostęp 27 November 2011].
[edytuj] Linki zewnętrzne
- Problem Collatza (ang.) w encyklopedii MathWorld
- Collatz cycles? (pdf) (ang.)
- Collatz cycles (ang.)

















