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.

A169816 Triangle read by rows: T(n,k) is the number of down-up permutations of {1,2,...,n} having genus k.

Original entry on oeis.org

1, 1, 1, 1, 3, 2, 3, 12, 1, 11, 39, 11, 11, 116, 133, 12, 45, 449, 722, 169, 45, 996, 3857, 2832, 206
Offset: 1

Views

Author

Emeric Deutsch, May 28 2010

Keywords

Comments

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.
The sum of the entries in row n is A000111(n) (Euler or up-down numbers).
Apparently, row n contains ceiling(n/2) entries.
T(2n,0) = T(2n+1,0) = A001003(n) (the little Schroeder numbers).
The Maple program yields the entries of row n (specified at the start of the program).

Examples

			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).
Triangle starts:
   1;
   1;
   1,   1;
   3,   2;
   3,  12,   1;
  11,  39,  11;
  11, 116, 133,  12;
		

Crossrefs

Programs

  • Maple
    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:
    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:
    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:
    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:
    pc := convert(p, disjcyc): nops(pc)+nrfp(p) end proc:
    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:
    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)

Extensions

Edited by R. J. Mathar, Jun 08 2010