

A127291


Signaturepermutation of Elizalde's and Deutsch's 2003 bijection for Dyck paths.


10



0, 1, 3, 2, 6, 7, 8, 5, 4, 15, 18, 14, 16, 17, 20, 22, 19, 11, 12, 21, 13, 10, 9, 39, 47, 40, 48, 50, 41, 49, 38, 43, 46, 37, 42, 44, 45, 53, 60, 54, 61, 63, 55, 62, 52, 29, 32, 51, 28, 30, 31, 59, 64, 57, 34, 36, 56, 33, 25, 26, 58, 35, 27, 24, 23, 113, 136, 116, 139, 146
(list;
graph;
refs;
listen;
history;
text;
internal format)



OFFSET

0,3


COMMENTS

Deutsch and Elizalde show in their paper that this automorphism converts certain properties concerning "tunnels" of Dyck path to another set of properties concerning the number of hills, even and odd rises, as well as the number of returns (A057515), thus proving the equidistribution of the said parameters.
This automorphism is implemented with function "tau" (Scheme code given below) that takes as its arguments an Sexpression and a Catalan automorphism that permutes only the top level of the list (i.e., the toplevel branches of a general tree, or the whole arches of a Dyck path) and thus when the permuting automorphism is applied to a list (parenthesization) of length 2n it induces some permutation of [1..2n].
However, it remains open what are the exact criteria of the "picking automorphism" and the corresponding permutation that this method would induce a bijection. For example, if we give *A127288 (the inverse of *A127287) to function "tau" it will not induce *A127292 and actually not a bijection at all.
Instead, we have to compute the inverse of this automorphism with another, more specific algorithm that implements Deutsch's and Elizalde's description and is given in A127300.


LINKS



PROG

(MIT/GNU Scheme)
(define (tau s permuter) (let* ((sper (transposlist>permvec (sexp>kk s))) (visivec (makevector (vectorlength sper) ()))) (let loop ((tper (if (null? s) s (permuter (iota0 (1+ (vectorlength sper)))))) (s 0)) (cond ((null? tper) (A080300 s)) (else (let ((x (vectorref sper (car tper)))) (cond ((not (vectorref visivec x)) (vectorset! visivec (car tper) #t) (loop (cdr tper) (+ s s 1))) (else (loop (cdr tper) (+ s s))))))))))
(define (transposlist>permvec tplist) (let ((permvec (makeinitializedvector (* 2 (length tplist)) (lambda (i) i)))) (let loop ((tplist tplist)) (cond ((null? tplist) permvec) (else (let* ((tp (car tplist)) (x (car tp)) (y (cdr tp)) (temp (vectorref permvec x))) (vectorset! permvec x (vectorref permvec y)) (vectorset! permvec y temp) (loop (cdr tplist)))))))) ;; Converts a list of transpositions to a permutation vector [0..(n1)]
(define (iota0 upto_n) (let loop ((n upto_n) (result (list))) (cond ((zero? n) (cons 0 result)) (else (loop ( n 1) (cons n result)))))) ;; (iota0 5) gives (0 1 2 3 4 5)
(define (sexp>kk p) (let ((c (list (list))) (maxnode (list 1))) (let recurse ((p p)) (cond ((pair? p) (let ((thistrans (cons (1+ (car maxnode)) 0))) (setcar! maxnode (1+ (car maxnode))) (attach! thistrans c) (recurse (car p)) (setcar! maxnode (1+ (car maxnode))) (setcdr! thistrans (car maxnode)) (recurse (cdr p)))))) (cdr (reverse! c)))) ;; Converts a symbolless Sexpression to a list of noncrossing transpositions in a standard way.
(define (attach! elem lista) (setcdr! lista (cons (car lista) (cdr lista))) (setcar! lista elem) lista) ;; Attaches an element physically to the front of nonempty list.


CROSSREFS

Inverse: A127292. a(n) = A127289(A057164(n)) = A057164(A127299(A057164(n))). A127291(A057548(n)) = A072795(A127291(n)), A127291(A072795(n)) = A127307(A127291(A057502(n))) for all n >= 1. The number of cycles, maximum cycle sizes and LCM's of all cycle sizes in range [A014137(n1)..A014138(n1)] of this permutation are given by A127293, A127294 and A127295. Number of fixed points begins as 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, ...


KEYWORD



AUTHOR



STATUS

approved



