cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A368546 Alternative version of the Markov tree A327345.

Original entry on oeis.org

5, 13, 29, 34, 194, 433, 169, 89, 1325, 7561, 2897, 6466, 37666, 14701, 985, 233, 9077, 135137, 51641, 294685, 4400489, 1686049, 43261, 96557, 8399329, 48928105, 3276509, 1278818, 7453378, 499393, 5741, 610, 62210, 2423525, 925765, 13782649, 537169541
Offset: 0

Views

Author

William P. Orrick, Jan 04 2024

Keywords

Comments

The Markov tree is a complete, infinite binary tree. Vertices are labeled by triples. The root vertex is (1, 5, 2). The left child of (a, b, c) is (a, 3*a*b - c, b); its right child is (b, 3*b*c - a, c). The sequence is a triangle read by rows consisting of the middle element of each triple, which is always the largest element of the triple. Row r contains 2^r elements.
The tree contains contains exactly one representative of each class of permutation equivalent nonsingular solutions to Markov's equation, a^2 + b^2 + c^2 = 3 * a * b * c. Nonsingular solutions are those in which a, b, and c are three distinct numbers. The two singular triples (1, 1, 1) and (1, 2, 1) are omitted in this sequence.
A consequence of Markov's equation is that the recurrence for the tree may be reformulated as follows: the left child of (a, b, c) is (a, (a^2 + b^2) / c, b); its right child is (b, (b^2 + c^2) / a, c).
An open problem is to prove the uniqueness conjecture, which asserts that the largest element of a triple determines the other two.
Frobenius proposed assigning a rational number index in (0,1) to each vertex of the tree, and hence to each term in this sequence. This is the Farey index, obtained by assigning the triple (0/1, 1/2, 1/1) to the root vertex and using the following rules to assign triples to the rest of the tree: the vertex labeled (u/v, w/x, y/z) with w = u + u and x = v + z has left child (u/v, (u+w)/(v+x), w/x) and right child (w/x, (w+y)/(x+z), y/z). The Farey index is the center element of the triple. Each rational number in (0, 1) appears as the Farey index of exactly one vertex of the tree. The index of a(n) is A007305(n+2) / A007306(n+2).
A sequence of leftward steps in the tree produces odd-indexed Fibonacci numbers, A001519, which have Farey indices of the form 1 / n. A sequence of rightward steps in the tree produces odd-indexed Pell numbers, A001653, which have Farey indices of the form (n - 1) / n. A sequence of leftward steps followed by a single rightward step produces A350922, corresponding to Farey indices of the form 2 / (2 * n + 1). Alternating steps right, left, right, left, right, ... produces A064098, which corresponds to Farey indices of the form F(n) / F(n + 1), where F(n) is the n-th Fibonacci number.

Examples

			The initial levels of the tree are as follows. (See p. 47 of Aigner's book.)
                               (1,5,2)
             (1,13,5)                              (5,29,2)
   (1,34,13)         (13,194,5)         (5,433,29)             (29,169,2)
(1,        (34,     (13,     (194,    (5,       (433,       (29,       (169,
 89,        1325,    7561,    2897,    6466,     37666,      14701,     985,
 ,34)        13)      194)     5)       433)      29)         169)       2)
		

References

  • Martin Aigner, Markov's theorem and 100 years of the uniqueness conjecture. A mathematical journey from irrational numbers to perfect matchings. Springer, 2013. x+257 pp. ISBN: 978-3-319-00887-5; 978-3-319-00888-2 MR3098784.

Crossrefs

Other presentations of the Markov numbers, Markov triples, or the Markov tree: A002559, A253809, A291694, A305313, A305314, A327345.
Subsequences in the Markov tree: A001519, A001653, A350922, A064098.
Farey tree: A007305, A007306.

Programs

  • Python
    def Mtree(x): return(x[0],(3*x[0]*x[1])-x[2],x[1]), (x[1],(3*x[1]*x[2])-x[0],x[2])
    def A368546_rowlist(maxrow):
        A,B = [[(1,5,2)]],[]
        for n in range(maxrow+1):
            A.append([])
            for j in A[n]:
                B.append(max(j))
                for k in Mtree(j):
                    A[n+1].append(k)
        return(B) # John Tyler Rascoe, Feb 09 2024
  • SageMath
    def stripUpToFirst1(w):
        x = w
        while x % 2 == 0:
            x = x // 2
        return(x // 2)
    def stripUpToFirst0(w):
        x = w
        while x % 2 == 1:
            x = x // 2
        if x == 0:
            return(None)
        else:
            return(x // 2)
    @CachedFunction
    def markovNumber(w):
        if w == None:
            return(2)
        elif w == 0:
            return(1)
        elif w == 1:
            return(5)
        elif w % 2 == 0:
            return(3*markovNumber(stripUpToFirst1(w))*markovNumber(w//2) - markovNumber(stripUpToFirst0(w//2)))
        else:
            return(3*markovNumber(stripUpToFirst0(w))*markovNumber(w//2) - markovNumber(stripUpToFirst1(w//2)))
    [markovNumber(w) for w in range(1,38)]