A269921 Triangle read by rows: T(n,f) is the number of rooted maps with n edges and f faces on an orientable surface of genus 1.
1, 10, 10, 70, 167, 70, 420, 1720, 1720, 420, 2310, 14065, 24164, 14065, 2310, 12012, 100156, 256116, 256116, 100156, 12012, 60060, 649950, 2278660, 3392843, 2278660, 649950, 60060, 291720, 3944928, 17970784, 36703824, 36703824, 17970784
Offset: 2
Examples
Triangle starts: n\f [1] [2] [3] [4] [5] [6] [7] [2] 1; [3] 10, 10; [4] 70, 167, 70; [5] 420, 1720, 1720, 420; [6] 2310, 14065, 24164, 14065, 2310; [7] 12012, 100156, 256116, 256116, 100156, 12012; [8] 60060, 649950, 2278660, 3392843, 2278660, 649950, 60060; [9] ...
Links
- Gheorghe Coserea, Rows n = 2..202, flattened
- Sean R. Carrell, Guillaume Chapuy, Simple recurrence formulas to count maps on orientable surfaces, arXiv:1402.6300 [math.CO], 2014.
Crossrefs
Programs
-
Mathematica
M = 9; G = 1; gMax[n_] := Min[Quotient[n, 2], G]; Q = Array[0&, {M + 1, M + 1}]; Qget[n_, g_] := If[g < 0 || g > n/2, 0, Q[[n + 1, g + 1]]]; Qset[n_, g_, v_] := (Q[[n + 1, g + 1]] = v ); Quadric[x_] := (Qset[0, 0, x]; For[n = 1, n <= Length[Q] - 1, n++, For[g = 0, g <= gMax[n], g++, t1 = (1 + x)*(2*n - 1)/3 * Qget[n - 1, g]; t2 = (2*n - 3)*(2*n - 2)*(2*n - 1)/12 * Qget[n - 2, g - 1]; t3 = 1/2 * Sum[ Sum[(2*k - 1) * (2*(n - k) - 1) * Qget[k - 1, i] * Qget[n - k - 1, g - i], {i, 0, g}], {k, 1, n-1}]; Qset[n, g, (t1 + t2 + t3) * 6/(n+1)]]]); Quadric[x]; (List @@@ Table[Qget[n - 1 + 2*G, G] // Expand, {n, 1, M + 1 - 2*G}]) /. x -> 1 // Flatten (* Jean-François Alcover, Jun 13 2017, adapted from PARI *)
-
PARI
N = 9; G = 1; gmax(n) = min(n\2, G); Q = matrix(N + 1, N + 1); Qget(n, g) = { if (g < 0 || g > n/2, 0, Q[n+1, g+1]) }; Qset(n, g, v) = { Q[n+1, g+1] = v }; Quadric({x=1}) = { Qset(0, 0, x); for (n = 1, length(Q)-1, for (g = 0, gmax(n), my(t1 = (1+x)*(2*n-1)/3 * Qget(n-1, g), t2 = (2*n-3)*(2*n-2)*(2*n-1)/12 * Qget(n-2, g-1), t3 = 1/2 * sum(k = 1, n-1, sum(i = 0, g, (2*k-1) * (2*(n-k)-1) * Qget(k-1, i) * Qget(n-k-1, g-i)))); Qset(n, g, (t1 + t2 + t3) * 6/(n+1)))); }; Quadric('x); concat(apply(p->Vecrev(p/'x), vector(N+1 - 2*G, n, Qget(n-1 + 2*G, G))))
Comments