Collatz conjecture: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Line 146: Line 146:
<source lang="java">
<source lang="java">
public class Collatz {
public class Collatz {
public static void main(String[] args) {
public static void main(String[] args) {
collatz(Integer.parseInt(args[0]));
int x = Integer.parseInt(args[0]);
}
while (x > 1) {
public static int collatz(int x) {
if (x % 2 == 0) {
System.out.println(x);
x /= 2;
if (x == 1) {
}
return x;
else {
}
x = 3 * x + 1;
if (x%2 == 0) {
}
return collatz(x/2);
System.out.println(x);
}
}
}
else {
return collatz((3*x)+1);
}
}
}
}
</source>
</source>

Revision as of 16:23, 5 March 2010

Directed graph showing the orbits of small numbers under the Collatz map. The Collatz conjecture is equivalent to the statement that all paths eventually lead to 1.
Directed graph showing the orbits of the first 1000 numbers.

The Collatz conjecture is an unsolved conjecture in mathematics. It is named after Lothar Collatz, who first proposed it in 1937. The conjecture is also known as the 3n + 1 conjecture, the Ulam conjecture (after Stanislaw Ulam), the Kakutani's Problem, or the Syracuse problem;[1] the sequence of numbers involved is referred to as the hailstone sequence or hailstone numbers,[2] or as wondrous numbers.[3]

Take any natural number n. If n is even, halve it (n / 2), otherwise multiply it by 3 and add 1 to obtain 3n + 1. The conjecture is that for all numbers this process converges to 1. It has been called "Half Or Triple Plus One", sometimes called HOTPO.[4]

Paul Erdős said about the Collatz conjecture: "Mathematics is not yet ready for such confusing, troubling, and hard problems." He offered $500 for its solution. (Lagarias 1985)

In 2006, researchers Kurtz and Simon, building on earlier work by J.H. Conway in the 1970s,[5] proved that a natural generalization of the Collatz problem is undecidable.[6] However, this proof depends upon the generalization and cannot be applied to the original Collatz problem.

Statement of the problem

Consider the following operation on an arbitrary positive integer:

  • If the number is even, divide it by two.
  • If the number is odd, triple it and add one.

In modular arithmetic notation, define the function f as follows:

Numbers from 1 to 9999 and their corresponding total stopping time.

Now, form a sequence by performing this operation repeatedly, beginning with any positive integer, and taking the result at each step as the input at the next.

In notation:

or

The Collatz conjecture is: This process will eventually reach the number 1, regardless of which positive integer is chosen initially.

That smallest i such that ai=1 is called the total stopping time of n. The conjecture asserts that every n has a well-defined stopping time. If, for some n, such an i doesn't exist, we say that n has infinite total stopping time and the conjecture is false.

If the conjecture is false, it can only be because there is some starting number which gives rise to a sequence which does not contain 1. Such a sequence might enter a repeating cycle that excludes 1, or increase without bound. No such sequence has been found.

Examples

For instance, starting with n = 6, one gets the sequence 6, 3, 10, 5, 16, 8, 4, 2, 1.

Starting with n = 11, the sequence takes longer to reach 1: 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.

If the starting value n = 27 is chosen, the sequence, listed and graphed below, takes 111 steps, climbing very high (over 9,000) before descending to 1.

{ 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 }

The number less than 100 million with the longest total stopping time is 63,728,127, with 949 steps.

The number less than 1 billion with the longest total stopping time is 670,617,279, with 986 steps.

Starting values, n, with longer stopping time than any smaller n (high water marks) are given by sequence OEISA006877 in OEIS, and the number of steps for each n are given by OEISA006878.

Program to calculate Collatz sequences

A specific Collatz sequence can be easily computed, as is shown by this pseudocode example:

function collatz(n)
  show n
  if n > 1
    if n is odd
      call collatz(3n + 1)
    else
      call collatz(n / 2)

This program halts when the sequence reaches 1, in order to avoid printing an endless cycle of 4, 2, 1. If the Collatz conjecture is true, the program will always halt no matter what positive starting integer is given to it. (See Halting Problem for a discussion of the relationship between open-ended computer programs and unsolved mathematics problems.)

Example in Haskell:

collatz :: Integer -> Integer
collatz n
    | n == 1    = 1
    | even n    = collatz (n `div` 2)
    | otherwise = collatz (3 * n + 1)

Example in C++:

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    while (n > 1) {
	if (n%2 != 0) {
	    n = n*3 + 1;
	} else {
	    n = n/2;
	}
	cout << n << endl;
    }
}

Example in Perl:

#!/usr/bin/perl

die("Usage: $0 n\n") if (!$ARGV[0] || !int($ARGV[0]));

my $steps = 0;
my $n = int($ARGV[0]);
my $max = $n;

while ($n > 1) {
  $n = ($n % 2 != 0) ? $n * 3 + 1 : $n / 2;
  $steps++;
  $max = ($n > $max) ? $n : $max;
}
print "Steps: $steps\n";
print "Max: $max\n";

Example in PHP:

while($n > 1)
{
   if($n % 2 != 0)
   {
      $n = $n*3 + 1;
   }
   else
   {
      $n = $n/2;
   }
   echo $n . '<br/>';
}

Example in Java:

public class Collatz {
  public static void main(String[] args) {
    int x = Integer.parseInt(args[0]);
    while (x > 1) {
      if (x % 2 == 0) {
        x /= 2;
      }
      else {
        x = 3 * x + 1;
      }
      System.out.println(x);
    }
  }
}

Example in Python:

def collatz(n):
    while n > 1:
        print n
        if n%2==0:
            n = n/2
        else:
            n = (n*3)+1
    print n

Example in Scala:

def collatz(n:BigInt):Stream[BigInt] = 
    if (n == 1) {
        Stream(1);
    } else {
        def next(n:BigInt):BigInt = if ((n % 2) == 0) (n / 2) else (n * 3 + 1);
        Stream.cons(n, collatz(next(n)));
    }

m-cycles

The proof of the conjecture can indirectly be done by proving the following:

  • no infinite divergent trajectory occurs
  • no cycle occurs

thus all numbers have a trajectory down to 1.

In 1977 R. Steiner and 2000 and 2002 J. Simons and B. deWeger (based on Steiner) proved the nonexistence of certain types of cycles.

Notation

To explain this we refer to the definition as given in syracuse-function below:

  • Define the transformation for odd positive integer numbers a and b, positive integer numbers A
  b = T(a;A)   meaning   b = (3*a + 1)/2^A 
where A has the maximum value which leaves b integer.
 Example:
  a=7, then b=T(7,A)  3*7+1=22, so A=1   b = (3*7+1)/2^1 = 11 
  11 = T(7;1)
  • Define the concatenation (extensible up to arbitrary length):
   b = T(T(a;A);B) = T(a;A,B) 
 Example:
   b = T(7;A,B) = T(7;1,1) = ((3*7+1)/2^1*3 + 1)/2^B = (3*11+1)/2^B = 34/2^1 = 17
  17 = T(7;1,1) 
  • Define a "one-peak-transformation" of L ascending and 1 descending exponents/steps:
   b = T(a;1,1,1,1,1,....,1,A) = T(a;(1)L,A)
with L (arbitrary) many exponents 1 and exactly one exponent A>1
 Example
   b = T(7;1,1,A) = T(7;(1)2,A) = (17*3+1)/2^A = 52/2^2 = 13
  13 = T(7;(1)2,2)
  • then call the construct
   a = T(a;(1)L,A)   // arbitrary positive value for number of increasing steps L

a "1-cycle" of length N=L+1 (steps).

Theorems

  • Steiner proved 1977: there is no 1-cycle, however many L steps may be chosen; a number a satisfying the loop-condition is never integer.
  • Simons proved 2000 (based on Steiner's method): there is no 2-cycle a = T(a;(1)L,A,(1)M,B) however many L and M steps may be chosen.
  • Simons/deWeger extended 2003 their own proof up to "68-cycles": there is no m-cycle up to m=68 a=T(a;(1)L1,A1,(1)L2,A2,...,(1)L68,A68) whatever number of steps in L1 to L68 and whatever exponents A1 to A68 one may choose: there is no positive odd integer number a satisfying the cycle-condition.

Steiner claimed in usenet-discussion he could extend this up to m=72.

Supporting arguments

Although the conjecture has not been proven, most mathematicians who have looked into the problem think the conjecture is true because experimental evidence and heuristic arguments support it.

Experimental evidence

The conjecture has been checked by computer for all starting values up to 20 × 258 ≈ 5.764×1018.[7] While impressive, such computer evidence should be interpreted cautiously. More than one important conjecture has been found false, but only with very large counterexamples. (See for example the Pólya conjecture, the Mertens conjecture and the Skewes' number.)

All initial values tested so far eventually end in the repeating cycle {4,2,1}, which has only three terms. It is also known that {4,2,1} is the only repeating cycle possible with fewer than 35400 terms.[8]

A probabilistic heuristic

If one considers only the odd numbers in the sequence generated by the Collatz process, then each odd number is on average 3/4 of the previous one.[9] (More precisely, the geometric mean of the ratios of outcomes is 3/4.) This yields a heuristic argument that every Collatz sequence should decrease in the long run, although this is not evidence against other cycles, only against divergence. The argument is not a proof because it pretends that Collatz sequences are assembled from uncorrelated probabilistic events. (It does rigorously establish that the 2-adic extension of the Collatz process has 2 division steps for every multiplication step for almost all 2-adic starting values.)

Other formulations of the conjecture

In reverse

There is another approach to prove the conjecture, which considers the bottom-up method of growing the so called Collatz graph. The Collatz graph is a graph defined by the inverse relation

So, instead of proving that all natural numbers eventually lead to 1, we can prove that 1 leads to all natural numbers. For any integer n, n ≡ 1 (mod 2) iff 3n + 1 ≡ 4 (mod 6). Equivalently, (n − 1)/3 ≡ 1 (mod 2) iff n ≡ 4 (mod 6). Also, the inverse relation forms a tree except for the 1-2-4 loop (the inverse of the 1-4-2 loop of the unaltered function f defined in the statement of the problem above). When the relation 3n + 1 of the function f is replaced by the common substitute "shortcut" relation (3n + 1)/2, the Collatz graph is defined by the inverse relation,

Conjecturally, this inverse relation forms a tree except for a 1-2 loop (the inverse of the 1-2 loop of the function f(n) revised as indicated above).

As rational numbers

The natural numbers can be converted to rational numbers in a certain way. To get the rational version, find the highest power of two less than or equal to the number, use it as the denominator, and subtract it from the original number for the numerator (527 → 15/512). To get the natural version, add the numerator and denominator (255/256 → 511).

The Collatz conjecture then says that the numerator will eventually equal zero. The Collatz function changes to:

(n = numerator; d = denominator).

This works because 3x + 1 = 3(d + n) + 1 = (2d) + (3n + d + 1) = (4d) + (3n - d + 1). Reducing a rational before every operation is required to get x as an odd.

As an abstract machine that computes in base two

Repeated applications of the Collatz function can be represented as an abstract machine that handles strings of bits. The machine will perform the following three steps on any odd number until only one "1" remains:

  1. Append 1 to the (right) end of the number in binary (giving 2n+1);
  2. Add this to the original number by binary addition (giving 2n+1 + n = 3n+1);
  3. Remove all trailing "0"s (i.e. repeatedly divide by two until the result is odd).

This prescription is plainly equivalent to computing a Collatz sequence in base two.

Example

The starting number 7 is written in base two as 111. The resulting Collatz sequence is:

         111
        1111
       10110
      10111 
     100010 
    100011  
    110100  
   11011    
  101000    
 1011       
10000       

As a parity sequence

For this section, consider the Collatz function in the slightly modified form

This can be done because when n is odd, 3n + 1 is always even.

If P(…) is the parity of a number, that is P(2n) = 0 and P(2n + 1) = 1, then we can define the Collatz parity sequence for a number n as pi = P(ai), where a0 = n, and ai+1 = f(ai).

Using this form for f(n), it can be shown that the parity sequences for two numbers m and n will agree in the first k terms if and only if m and n are equivalent modulo 2k. This implies that every number is uniquely identified by its parity sequence, and moreover that if there are multiple Collatz cycles, then their corresponding parity cycles must be different.

The proof is simple: it is easy to verify by hand that applying the f function k times to the number a 2k+b will give the result a 3c+d, where d is the result of applying the f function k times to b, and c is how many odd numbers were encountered during that sequence. So the parity of the first k numbers is determined purely by b, and the parity of the (k+1)th number will change if the least significant bit of a is changed.

The Collatz Conjecture can be rephrased as stating that the Collatz parity sequence for every number eventually enters the cycle 0 → 1 → 0.

As a tag system

For the Collatz function in the form

Collatz sequences can be computed by the extremely simple 2-tag system with production rules abc, ba, caaa. In this system, the positive integer n is represented by a string of n a's, and iteration of the tag operation halts on any word of length less than 2. (Adapted from De Mol.)

The Collatz conjecture equivalently states that this tag system, with an arbitrary finite string of a's as the initial word, eventually halts (see Tag system#Example: Computation of Collatz sequences for a worked example).

Extensions to larger domains

Iterating on all integers

An obvious extension is to include negative as well as positive integers. This is equivalent to the (3n−1) problem on positive integers.

Interestingly, there are in this case a total of 5 known cycles, which all integers seem to eventually fall into under iteration of f. These cycles are listed here, starting with the well-known cycle for positive n.

To save steps, we list only the odd numbers of each cycle (except for the trivial cycle {0}). Each odd number n, when f is applied repeatedly, will next reach an odd number at (3n+1) / (the largest power of 2 that divides 3n+1); each cycle is listed with its member of least absolute value first. We follow each cycle with its full length in parentheses, full meaning that the even terms are counted as well.

  1. 1 → 1 (length 3)
  2. 0 → 0 (length 1)
  3. −1 → −1 (length 2)
  4. −5 → −7 → −5 (length 5)
  5. −17 → −25 → −37 → −55 → −41 → −61 → −91 → −17 (length 18)

The Generalized Collatz Conjecture is the assertion that every integer, under iteration by f, eventually falls into one of these five cycles.

Iterating with odd denominators or 2-adic integers

The standard Collatz map can be extended to (positive or negative) rational numbers which have odd denominators when written in lowest terms. The number is taken to be odd or even according to whether its numerator is odd or even. A closely related fact is that the Collatz map extends to the ring of 2-adic integers, which contains the ring of rationals with odd denominators as a subring.

The parity sequences as defined above are no longer unique for fractions. However, it can be shown that any possible parity cycle is the parity sequence for exactly one fraction: if a cycle has length n and includes odd numbers exactly m times at indices k0, …, km−1, then the unique fraction which generates that parity cycle is

.

For example, the parity cycle (1 0 1 1 0 0 1) has length 7 and has 4 odd numbers at indices 0, 2, 3, and 6. The unique fraction which generates that parity cycle is

.

The complete cycle being: 151/47 → 250/47 → 125/47 → 211/47 → 340/47 → 170/47 → 85/47 → 151/47

Although the cyclic permutations of the original parity sequence are unique fractions, the cycle is not unique, each permutation's fraction being the next number in the loop cycle:

(0 1 1 0 0 1 1) →


(1 1 0 0 1 1 0) →


(1 0 0 1 1 0 1) →


(0 0 1 1 0 1 1) →


(0 1 1 0 1 1 0) →


(1 1 0 1 1 0 0) →

Also, for uniqueness, the parity sequence should be "prime", i.e., not partitionable into identical sub-sequences. For example, parity sequence (1 1 0 0 1 1 0 0) can be partitioned into two identical sub-sequences (1 1 0 0)(1 1 0 0). Calculating the 8-element sequence fraction gives

(1 1 0 0 1 1 0 0) →

But when reduced to lowest terms {5/7}, it is the same as that of the 4-element sub-sequence

(1 1 0 0) →

And this is because the 8-element parity sequence actually represents two circuits of the loop cycle defined by the 4-element parity sequence.

In this context, the Collatz conjecture is equivalent to saying that (0 1) is the only cycle which is generated by positive whole numbers (i.e. 1 and 2).

Iterating on real or complex numbers

Cobweb plot of the orbit 10-5-8-4-2-1-2-1-2-1-etc. in the real extension of the Collatz map (optimized by replacing "3n + 1" with "(3n + 1)/2" )

The Collatz map can be viewed as the restriction to the integers of the smooth real and complex map

,

which simplifies to .

If the standard Collatz map defined above is optimized by replacing the relation 3n + 1 with the common substitute "shortcut" relation (3n + 1)/2, it can be viewed as the restriction to the integers of the smooth real and complex map

,

which simplifies to .

Iterating the above optimized map in the complex plane produces the Collatz fractal.

Collatz map fractal in a neighbourhood of the real line

Optimizations

The "parity" section above gives a way to speed up simulation of the sequence. To jump ahead k steps on each iteration (using the f function from that section), break up the current number into two parts, b (the k least significant bits, interpreted as an integer), and a (the rest of the bits as an integer). The result of jumping ahead k steps can be found as:

f k(a 2k+b) = a 3c[b]+d[b].

The c and d arrays are precalculated for all possible k-bit numbers b, where d [b] is the result of applying the f function k times to b, and c [b] is the number of odd numbers encountered on the way. For example, if k=5, you can jump ahead 5 steps on each iteration by separating out the 5 least significant bits of a number and using:

c [0...31] = {0,3,2,2,2,2,2,4,1,4,1,3,2,2,3,4,1,2,3,3,1,1,3,3,2,3,2,4,3,3,4,5}
d [0...31] = {0,2,1,1,2,2,2,20,1,26,1,10,4,4,13,40,2,5,17,17,2,2,20,20,8,22,8,71,26,26,80,242}.

This requires 2k precomputation and storage to speed up the resulting calculation by a factor of k (see space-time tradeoff)

For the special purpose of searching for a counterexample to the Collatz conjecture, this precomputation leads to an even more important acceleration which is due to Tomás Oliveira e Silva and is used in the record confirmation of the Collatz conjecture. If, for some given b and k, the inequality

f k(a 2k+b) = a 3c[b]+d[b] < a 2k+b

holds for all a, then the first counterexample, if it exists, cannot be b modulo 2k. For instance, the first counterexample must be odd because f(2n) = n; and it must be 3 mod 4 because f3(4n+1) = 3n+1. For each starting value a which is not a counterexample to the Collatz conjecture, there is a k for which such an inequality holds, so checking the Collatz conjecture for one starting value is as good as checking an entire congruence class. As k increases, the search only needs to check those residues b that are not eliminated by lower values of k. On the order of 3k/2 residues survive. For example, the only surviving residues mod 32 are 7, 15, 27, and 31; only 573,162 residues survive mod 225 = 33,554,432.

Syracuse function

If k is an odd integer, then 3k + 1 is even, so we can write 3k + 1 = 2ak′, with k' odd and a ≥ 1. We define a function f from the set of odd integers into itself, called the Syracuse Function, by taking f (k) = k′ (sequence A075677 in the OEIS).

Some properties of the Syracuse function are:

  • f (4k + 1) = f (k) for all k in .
  • For all p ≥ 2 and h odd, f p−1(2 p h − 1) = 2 3 p − 1h − 1 (here, f p−1 is function iteration notation).
  • For all odd h, f (2h − 1) ≤ (3h − 1)/2

The Syracuse Conjecture is that for all k in , there exists an integer n ≥ 1 such that f n(k) = 1. Equivalently, let E be the set of odd integers k for which there exists an integer n ≥ 1 such that f n(k) = 1. The problem is to show that E = . The following is the beginning of an attempt at a proof by induction:

1, 3, 5, 7, and 9 are known to exist in E. Let k be an odd integer greater than 9. Suppose that the odd numbers up to and including k − 2 are in E and let us try to prove that k is in E. As k is odd, k + 1 is even, so we can write k + 1 = 2ph for p ≥ 1, h odd, and k = 2ph−1. Now we have:

  • If p = 1, then k = 2h − 1. It is easy to check that f (k) < k , so f (k) ∈ E; hence kE.
  • If p ≥ 2 and h is a multiple of 3, we can write h = 3h′. Let k′ = 2p + 1h′ − 1; we have f (k′) = k , and as k′ < k , k′ is in E; therefore k = f (k′) ∈ E.
  • If p ≥ 2 and h is not a multiple of 3 but h ≡ (−1)p mod 4, we can still show that kE.

The problematic case is that where p ≥ 2 , h not multiple of 3 and h ≡ (−1)p+1 mod 4. Here, if we manage to show that for every odd integer k′, 1 ≤ k′ ≤ k−2 ; 3k′ ∈ E we are done.

See also

Notes

  1. ^ Maddux, Cleborne D. (1997). Logo: A Retrospective. New York: Haworth Press. p. 160. ISBN 0789003740. The problem is also known by several other names, including: Ulam's conjecture, the Hailstone problem, the Syracuse problem, Kakutani's problem, Hasse's algorithm, and the Collatz problem. {{cite book}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  2. ^ Pickover, Clifford A. (2001). Wonders of Numbers. Oxford: Oxford University Press. pp. 116–118. ISBN 0195133420. {{cite book}}: Cite has empty unknown parameter: |coauthors= (help)
  3. ^ Hofstadter, Douglas R. (1979). Gödel, Escher, Bach. New York: Basic Books. pp. 400–402. ISBN 0465026850. {{cite book}}: Cite has empty unknown parameter: |coauthors= (help)
  4. ^ Friendly, Michael (1988). Advanced Logo: A Language for Learning. Hillsdale, NJ: Lawrence Erlbaum Associates. ISBN 0898599334. {{cite book}}: Cite has empty unknown parameter: |coauthors= (help)
  5. ^ Quoting Lagarias 1985: "J. H. Conway proved the remarkable result that a simple generalization of the problem is algorithmically undecidable." The work was reported by Conway in:
    • J. H. Conway, "Unpredictable Iterations", Proc. 1972 Number Theory Conference, University of Colorado, Boulder, Colorado (1972) 49–52.
  6. ^ Kurtz, Stuart A.; Simon, Janos, "The Undecidability of the. Generalized Collatz Problem", in Proceedings of the 4th International Conference on Theory and Applications of Models of Computation, TAMC 2007, held in Shanghai, China in May 2007. ISBN 3540725032. doi:10.1007/978-3-540-72504-6_49
  7. ^ http://www.ieeta.pt/~tos/3x+1.html
  8. ^ Garner, Lynn E. (1981). "On the Collatz 3n + 1 Algorithm". Proceedings of the American Mathematical Society. 82 (1): 19–22. doi:10.2307/2044308. {{cite journal}}: Cite has empty unknown parameters: |month= and |coauthors= (help)
  9. ^ http://www.cecm.sfu.ca/organics/papers/lagarias/paper/html/node3.html

References and external links

Papers

Books

General