%I
%S 1,1,1,1,3,2,3,12,1,11,39,11,11,116,133,12,45,449,722,169,45,996,3857,
%T 2832,206
%N Triangle read by rows: T(n,k) is the number of down-up permutations of {1,2,...,n} having genus k.
%C The genus g(p) of a permutation p of {1,2,...,n} is defined by g(p)=(1/2)[n+1-z(p)-z(cp')], where p' is the inverse permutation of p, c = 234...n1 = (1,2,...,n), and z(q) denotes the number of cycles of the permutation q.
%C The sum of the entries in row n is A000111(n) (Euler or up-down numbers).
%C Apparently, row n contains ceiling(n/2) entries.
%C T(2n,0) = T(2n+1,0) = A001003(n) (the little Schroeder numbers).
%C The Maple program yields the entries of row n (specified at the start of the program).
%H S. Dulucq and R. Simion, <a href="http://dx.doi.org/10.1023/A:1008689811936">Combinatorial statistics on alternating permutations</a>, J. Algebraic Combinatorics, 8, 1998, 169-191.
%e T(3,1)=1 because 312 is the only down-up permutation of {1,2,3} with genus 1 (we have p=312=(132), cp'=231*231=312=(132) and so g(p) = (1/2)(3+1-1-1) = 1).
%e Triangle starts:
%e 1;
%e 1;
%e 1, 1;
%e 3, 2;
%e 3, 12, 1;
%e 11, 39, 11;
%e 11, 116, 133, 12;
%p n := 6: with(combinat): descents := proc (p) local A, i: A := {}: for i to nops(p)-1 do if p[i+1] < p[i] then A := `union`(A, {i}) else end if end do: A end proc:
%p DU := proc (n) local du, P, j: du := {}: P := permute(n): for j to factorial(n) do if descents(P[j]) = {seq(2*k-1, k = 1 .. floor((1/2)*n))} then du := `union`(du, {P[j]}) else end if end do: du end proc:
%p inv := proc (p) local j, q: for j to nops(p) do q[p[j]] := j end do: [seq(q[i], i = 1 .. nops(p))] end proc:
%p nrcyc := proc (p) local nrfp, pc: nrfp := proc (p) local ct, j: ct := 0: for j to nops(p) do if p[j] = j then ct := ct+1 else end if end do; ct end proc:
%p pc := convert(p, disjcyc): nops(pc)+nrfp(p) end proc:
%p b := proc (p) local c; c := [seq(i+1, i = 1 .. nops(p)-1), 1]: [seq(c[p[j]], j = 1 .. nops(p))] end proc:
%p gen := proc (p) options operator, arrow: (1/2)*nops(p)+1/2-(1/2)*nrcyc(p)-(1/ 2)*nrcyc(b(inv(p))) end proc: f[n] := sort(add(t^gen(DU(n)[j]), j = 1 .. nops(DU(n)))): seq(coeff(f[n], t, j), j = 0 .. ceil((1/2)*n)-1); # yields the entries of row n (specified at the start of the program)
%Y Cf. A000111, A001003.
%K more,nonn,tabf
%O 1,5
%A _Emeric Deutsch_, May 28 2010
%E Edited by _R. J. Mathar_, Jun 08 2010
|