login
Number of walks of length 4n in the first octant using steps (1,1,1), (-1,0,0), (0,-1,0), and (0,0,-1) that start and end at the origin.
2

%I #17 Jul 10 2021 16:22:21

%S 1,6,288,24444,2738592,361998432,53414223552,8525232846072,

%T 1443209364298944,255769050813120576,47020653859202576640,

%U 8907614785269428079168,1730208409741026141405696,343266632435192859791576064,69350551439109880798294334208

%N Number of walks of length 4n in the first octant using steps (1,1,1), (-1,0,0), (0,-1,0), and (0,0,-1) that start and end at the origin.

%C There are no such walks with length that is not a multiple of 4.

%C a(n) is also the number of arrangements of n copies each of "a", "b", "c", and "d" such that no prefix has more b's, c's, or d's than a's.

%C The analogous problem in dimensions 1 and 2 are given respectively by A000108 (the Catalan numbers) and A006335.

%C No closed form is known. In fact, it is not known whether this sequence is D-finite (see Bacher et al.).

%H Alois P. Heinz, <a href="/A340540/b340540.txt">Table of n, a(n) for n = 0..150</a>

%H Axel Bacher, Manuel Kauers, and Rika Yatchak, <a href="https://arxiv.org/abs/1511.05763">Continued Classification of 3D Lattice Walks in the Positive Octant</a>, arXiv:1511.05763 [math.CO], 2015.

%p b:= proc(n, l) option remember; `if`(n=0, 1, `if`(add(i, i=l)+3<n,

%p b(n-1, map(x-> x+1, l)), 0) +add(`if`(l[i]>0,

%p b(n-1, sort(subsop(i=l[i]-1, l))), 0), i=1..3))

%p end:

%p a:= n-> b(4*n, [0$3]):

%p seq(a(n), n=0..15); # _Alois P. Heinz_, Jan 12 2021

%t b[n_, l_] := b[n, l] = If[n == 0, 1, If[Total[l] + 3 < n,

%t b[n-1, l+1]], 0] + Sum[If[l[[i]] > 0,

%t b[n-1, Sort[ReplacePart[l, i -> l[[i]]-1]]], 0], {i, 1, 3}] /. Null -> 0;

%t a[n_] := b[4n, {0, 0, 0}];

%t Table[a[n], {n, 0, 15}] (* _Jean-François Alcover_, Jul 10 2021, after _Alois P. Heinz_ *)

%o (Python)

%o import itertools as it

%o i = 0

%o while 1:

%o counts = {(a,b,c):0 for a,b,c in it.product(range(i+1), repeat=3)}

%o counts[0,0,0] = 1

%o for _ in range(4*i):

%o update = {(a,b,c):0 for a,b,c in it.product(range(i+1), repeat=3)}

%o for x,y,z in counts:

%o if counts[x,y,z] != 0:

%o for coord in [(x+1,y+1,z+1), (x-1,y,z), (x,y-1,z), (x,y,z-1)]:

%o if coord in update:

%o update[coord] += counts[x,y,z]

%o counts = update

%o print(i, counts[0,0,0])

%o i += 1

%Y Cf. A000108, A006335, A149424.

%Y Column k=3 of A340591.

%K nonn,walk

%O 0,2

%A _Daniel Carter_, Jan 10 2021