login
A239903
List of Restricted-Growth Strings a_{k-1}a_{k-2}...a_{2}a_{1}, with k=2 and a_1 in {0,1} or k>2, a_{k-1}=1 and a_{j+1}>=1+a_j, for k-1>j>0.
14
0, 1, 10, 11, 12, 100, 101, 110, 111, 112, 120, 121, 122, 123, 1000, 1001, 1010, 1011, 1012, 1100, 1101, 1110, 1111, 1112, 1120, 1121, 1122, 1123, 1200, 1201, 1210, 1211, 1212, 1220, 1221, 1222, 1223, 1230, 1231, 1232, 1233, 1234, 10000, 10001, 10010, 10011
OFFSET
0,3
COMMENTS
We write the nonnegative integers as restricted growth strings (so called by J. Arndt in his book fxtbook.pdf, p. 325) in such a way that the Catalan numbers (cf. A000108) are expressed: 1=1, 10=2, 100=5, 1000=14, etc., 10...0 (with k zeros) = the k-th Catalan number. Once the entries of a restricted-growth string grow above 9, one would need commas or parentheses, say, to separate those entries. See Dejter (2017) for the precise definition.
In the paper "A system of numeration for middle-levels", restricted growth strings (RGSs) are defined as sequences that begin with either 0 or 1, with each successive number to the right being at least zero and at most one greater than its immediate left neighbor. Moreover, apart from case a(0), the RGSs are finite integer sequences of restricted growth which always start with 1 as their first element b_1 in position 1, and from then on, each successive element b_{i+1} in the sequence is restricted to be in range [0,(b_i)+1].
This sequence gives all such finite sequences in size-wise and lexicographic order, represented as decimal numbers by concatenating the integers of such finite sequences (e.g., from [1,2,0,1] we get 1201). The 58784th such sequence is [1, 2, 3, 4, 5, 6, 7, 8, 9, 9], thus a(58784) = 1234567899, after which comes the first RGS, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], where an element larger than 9 is present, which means that the decimal system employed here is unambiguous only up to n=58784. Note that 58785 = A000108(11)-1.
Also, if one considers Stanley's interpretation (u) of Catalan numbers, "sequences of a_1, a_2, ..., a_n of integers such that a_1 = 0 and 0 <= a_{i+1} <= a_{i} + 1" (e.g., 000, 001, 010, 011, 012 for C_3), and discards their initial zero, then one has a bijective correspondence with Dejter's RGSs of one element shorter length, which in turn are in bijective correspondence with the first C_n terms of this sequence (by discarding any leading zeros), from a(0) to a(C_n - 1). From this follows that the k-th Catalan number, A000108(k) (k>0), is represented in this system as 1 followed by k-1 zeros: a(1)=1, a(2)=10, a(5)=100, a(14)=1000, etc., and also that there exist exactly A000245(k) RGSs of length k.
Note how this differs from other number representations utilizing Catalan numbers, A014418 and A244159, in that while the latter are base-systems, where a simple weighted Sum_{k} digit(k)*C(k) recovers the natural number n (which the n-th numeral of such system represents), in contrast here it is the sum of appropriate terms in Catalan's Triangle (A009766, A030237), obtained by unranking a unique instance of a certain combinatorial structure (one of the Catalan interpretations), that gives a correspondence with a unique natural number. (Cf. also A014486.)
This sequence differs from "Semigreedy Catalan Representation", A244159, for the first time at n=10, where a(10) = 120, while A244159(10) = 121. That is also the first position where A244158(a(n)) <> n.
Please see Dejter's preprint for a more formal mathematical definition and how this number system is applied in relation to Havel's Conjecture on the existence of Hamiltonian cycles in the middle-levels graphs.
a(n) is given by the concatenation (with leading zeros removed) of the terms of row n + 23714 of A370222. - Paolo Xausa, Feb 17 2024
REFERENCES
D. E. Knuth, The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, third edition, Addison-Wesley, 1977, p. 192.
R. P. Stanley, Enumerative Combinatorics, Cambridge, Vol. 2, 1999, Exercise 19, interpretation (u).
LINKS
Joerg Arndt, Matters Computational: Ideas, Algorithm, Source Code, Springer, 2011; freely downloadable here: Fxtbook.
Georg Cantor, Über die einfachen Zahlensysteme, Zeitschrift fur Mathematik und Physik, 14 (1869), 121-128.
Italo J. Dejter, A system of numeration for middle levels, arXiv:1012.0995 [math.CO], (2014).
Italo J. Dejter, Reinterpreting Mütze's theorem via natural enumeration of ordered rooted trees, arXiv:1911.02100 [math.CO], (2019).
Italo J. Dejter, A numeral system for the middle-levels graphs, Elec. J. Graph Theory and Applications (2021) Vol. 9, No. 1, 137-156. See p. 138.
Italo J. Dejter, Integer sequence of Dyck-path single changes, arXiv:2209.11122 [math.CO], 2022.
Italo J. Dejter, A Dyck-word tree that controls all odd graphs, arXiv:2306.14249 [math.CO], 2023.
Aviezri S. Fraenkel, The Use and Usefulness of Numeration Systems, Inf. Comput., 81(1), (1989), 46-61.
Aviezri S. Fraenkel, Systems of numeration, IEEE Symposium on Computer Arithmetic, (1983), 37-42.
Aviezri S. Fraenkel, Systems of numeration, The American Mathematical Monthly, Vol. 92, No. 2 (Feb., 1985), pp. 105-114.
Antti Karttunen, Catalan ranking and unranking functions, OEIS Wiki.
R. P. Stanley, Exercises on Catalan and Related Numbers, interpretation (u) of Catalan numbers, on page 224 (page 4/27 in the November 1 2000 version of the PDF-file).
FORMULA
To find an RGS corresponding to natural number n, one first finds a maximum row index k such that T(k,k-1) <= n in the Catalan Triangle (A009766) illustrated in the Example section. Note that as the last two columns of this triangle consist of Catalan numbers (that is, T(k,k-1) = T(k,k) = A000108(k)), it means that the first number to be subtracted from n is A081290(n) which occurs as a penultimate element of the row A081288(n)-1, in the column A081288(n)-2. The unranking algorithm then proceeds diagonally downwards, keeping the column index the same, and incrementing the row index, as long as it will encounter terms such that their total sum stays less than or equal to n.
If the total sum of encountered terms on that diagonal would exceed n, the algorithm jumps back to the penultimate column of the triangle, but one row higher from where it started the last time, and again starts summing the terms as long as the total sum stays <= n.
When the algorithm eventually reaches either row zero or column less than zero, the result will be a list of numbers, each element being the number of terms summed from each diagonal, so that the diagonal first traversed appears as the first 1 (as that first diagonal will never allow more than one term), and the number of terms summed from the last traversed diagonal appears the last number in the list. These lists of numbers are then concatenated together as decimal numbers.
These steps can also be played backwards in order to recover the corresponding decimal integer n from such a list of numbers, giving a "ranking function" which will be the inverse to this "unranking function".
For n=1..16794 (where 16794 = A000108(10)-2), a(n) = A235049(A071159(A081291(n))). - Antti Karttunen, Apr 14 2014
Alternative, simpler description of the algorithm from Antti Karttunen, Apr 21 2014: (Start)
Consider the following square array, which is Catalan triangle A009766 without its rightmost, "duplicate" column, appropriately transposed (cf. also tables A030237, A033184 and A054445):
Row| Terms on that row
---+--------------------------
1 | 1 1 1 1 1 ...
2 | 2 3 4 5 6 ...
3 | 5 9 14 20 27 ...
4 | 14 28 48 75 110 ...
5 | 42 90 165 275 429 ...
6 | 132 297 572 1001 1638 ...
To compute the n-th RGS, search first for the greatest Catalan number C_k which is <= n (this is A081290(n), found as the first term of row A081288(n)-1). Then, by a greedy algorithm, select from each successive row (moving towards the top of table) as many terms from the beginning of that row as will still fit into n, subtracting them from n as you go. The number of terms selected from the beginning of each row gives each element of the n-th RGS, so that the number of terms selected from the topmost row (all 1's) appears as its last element.
(End)
EXAMPLE
Catalan's Triangle T(row,col) = A009766 begins with row n=0 and 0<=col<=n as:
Row 0: 1
Row 1: 1, 1
Row 2: 1, 2, 2
Row 3: 1, 3, 5, 5
Row 4: 1, 4, 9, 14, 14
Row 5: 1, 5, 14, 28, 42, 42
Row 6: 1, 6, 20, 48, 90, 132, 132
(the leftmost diagonal of 1s is "column 0").
...
For example, for n=38, we find that A081290(38)=14, which occurs on row A081288(n)-1 = 4, in columns A081288(n)-1 and A081288(n)-2, i.e., as T(4,4) and T(4,3). Thus we subtract 38-14 to get 24, and we see that the next term downward on the same diagonal, 28, is too large to accommodate into the same sum, so we go one diagonal up, starting now from T(3,2) = 5. This fits in, so we now have 24 - 5 = 19, and also the next term on the same diagonal, T(4,2) = 9, fits in, so we now have 19-9 = 10. The next term on the same diagonal, T(5,2) = 14, would not fit in anymore, so we rewind ourselves back to penultimate column, but one step up from where we started on this diagonal, so T(2,1) = 2, which fits in, 10 - 2 = 8, also the next one T(3,1) = 3, 8 - 3 = 5, and the next one T(4,1) = 4, 5 - 4 = 1, after which comes T(5,1) = 5 > 1, thus we jump to T(1,0) = 1, 1-1 = 0, and T(2,0)=1 would not fit anymore, thus next time the row would be zero, and the algorithm is ready with 1 (14), 2 (5+9), 3 (2+3+4) and 1 (1) terms collected, whose total sum 14+5+9+2+3+4+1 = 38, thus a(38) = 1231.
For n=20, the same algorithm results in 1 (14), 1 (5), 0 (not even the first tentative term T(2,1) = 2 from the column 1 would fit, so it is skipped), and from one row higher we get the needed 1 (1), so the total sum of these is 14+5+0+1 = 20, thus a(20) = 1101.
MATHEMATICA
A239903full = With[{r = 2*Range[2, 11]-1}, Reverse[Map[FromDigits[r-#] &, Rest[Select[Subsets[Range[2, 21], {10}, 125477], Min[r-#] >= 0 &]]]]];
A239903full[[;; 100]] (* Paolo Xausa, Feb 17 2024 *)
PROG
(Maxima)
define (t(j, k), (factorial(k+j)*(k-j+1))/(factorial(j)*factorial(k+1)));
i:0;
x:19;
z:0; y:0; s:0;
while x>=t(i, i+1) do (i:i+1);
y:t(i-1, i); a:zeromatrix(1, i); a[1, 1]:1; k:2; z:x-y; m:1;
while (z>0) do (
w:0, s:0, p=0,
while (w<=z) do (
p:w,
w:w+t(i-1-m, i-m+s),
s:s+1
),
m:m+1,
a[1, k]:s-1, k:k+1,
z:z-p
);
print(a);
(MATLAB)
function [ c ] = catrep(z)
i=0; x=0; y=0; s=0;
while z>=(factorial(2*i+1)*(2))/(factorial(i)*factorial(i+2))
i=i+1;
end
y=(factorial(2*i-1)*(2))/(factorial(i-1)*factorial(i+1));
a=zeros(1, i); a(1, 1)=1; k=2; x=z-y; m=1;
while x>0
w=0; s=0; p=0;
while w<=x
p=w;
w=w+(factorial(2*i-2*m+s-1)*(s+2))/(factorial(i-1-m)*factorial(i-m+s+1));
s=s+1;
end
m=m+1; a(1, k)=s-1; k=k+1; x=x-p;
end
a
end
(Scheme)
(define (A239903_only_upto_16794 n) (if (zero? n) n (A235049 (A071159 (A081291 n))))) ;; Gives correct results only up to 16794.
;; The following gives correct results all the way up to n=58784.
(define (A239903 n) (baselist-as-decimal (A239903raw n)))
(definec (A239903raw n) (if (zero? n) (list) (let loop ((n n) (row (A244160 n)) (col (- (A244160 n) 1)) (srow (- (A244160 n) 1)) (catstring (list 0))) (cond ((or (zero? row) (negative? col)) (reverse! (cdr catstring))) ((> (A009766tr row col) n) (loop n srow (- col 1) (- srow 1) (cons 0 catstring))) (else (loop (- n (A009766tr row col)) (+ row 1) col srow (cons (+ 1 (car catstring)) (cdr catstring))))))))
(define (baselist-as-decimal lista) (baselist->n 10 lista))
(define (baselist->n base bex) (let loop ((bex bex) (n 0)) (cond ((null? bex) n) (else (loop (cdr bex) (+ (* n base) (car bex)))))))
;; From Antti Karttunen, Apr 14-19 2014
(Julia)
function CatalanNumerals(z)
z == 0 && return 0
f(n) = factorial(n)
t(j, k) = div(f(k+j)*(k-j+1), f(j)*f(k+1))
k, i = 2, 0
while z >= t(i, i + 1) i += 1 end
dig = fill(0, i); dig[1] = 1
x = z - t(i - 1, i)
m = i - 1
while x > 0
w, s, p = 0, 0, 0
while w <= x
p = w
w += t(m - 1, m + s)
s += 1
end
dig[k] = s - 1
m -= 1; k += 1; x -= p
end
s = ""; for d in dig s *= string(d) end
parse(Int, s)
end
[CatalanNumerals(n) for n in 0:42] |> println # Peter Luschny, Nov 10 2019
(PARI) \\ Valid for n<58786 (=A000108(11)).
nxt(w)=if(w[1]==#w, vector(#w+1, i, i>#w), my(k=1); while(w[k]>w[k+1], w[k]=0; k++); w[k]++; w)
seq(n)={my(a=vector(n), w=[1]); a[1]=0; for(i=2, #v, a[i]=fromdigits(Vecrev(w)); w=nxt(w)); a} \\ Andrew Howroyd, Jan 24 2023
CROSSREFS
Cf. A000108 (Catalan numbers), A000245 (their first differences), A009766 (Catalan's triangle), A236855 (the sum of elements in k-th RGS), A236859 (for n>=1, gives the length of the initial ascent 123... in term a(n)), A244159 (different kinds of Catalan number systems).
Other Catalan combinatorial structures represented as integer sequences: A014486/A063171: Dyck words, parenthesizations, etc., A071156/A071158: Similar restricted words encoded with help of A007623 (Integers written in factorial base), A071153/A079436 (Łukasiewicz words).
Sequence in context: A048002 A256523 A125098 * A244159 A171752 A058944
KEYWORD
nonn,base,fini
AUTHOR
N. J. A. Sloane, Apr 06 2014
EXTENSIONS
Description, formula and examples edited/rewritten by Italo J Dejter, Apr 13 2014 and Antti Karttunen, Apr 18 2014
STATUS
approved