The case of maps via the quadrangulation approach (Thm 1.1 and Thm 5.2) 

 

> # This is the explicit (non-polynomial) recurrence to compute the numbers of maps by edges and genus
# obtained from BKP with shifts. This is Thm 1.1 in the paper.
Hng:= proc(N,G)
option remember;
# Initial conditions
if N<0 or G<0 or 2*G>N then return 0:
elif G=0   and N=0 then return 1;
elif G=0   and N=1 then return 2;
elif G=0   and N=2 then return 9;
elif G=1/2 and N=1 then return 1;
elif G=1/2 and N=2 then return 10;
elif G=1   and N=2 then return 5;
# main case
else
 return
2/(N+1)/(N-2) * (
 
N*(2*N-1)*( 2*Hng(N-1,G) + Hng(N-1,G-1/2) )
 +(2*N-3)*(2*N-2)*(2*N-1)*(2*N)/2*
Hng(N-2,G-1)
 +12*
add(add(((2*(N-n1)-1)/2*Hng(N-n1-1,(2*G-G1)/2)*(2*n1-1)*(2*n1)/2*Hng(n1-1,G1/2)),G1=0..2*G),n1=0..N)
 -
add(add(add(binomial(n1+2-2*G0/2,n1-2*G1/2)*(2)^(2+2*(G1/2-G0/2))*(1+(-1)^(2*(G0/2-G1/2)))/2*Hng(n1,G0/2)
          
,G0=0..G1)* ((2*(N-n1)-1)*(2*(N-n1)-2)*(2*(N-n1)-3)/2*Hng((N-n1)-2,(G-G1/2)-1)
           ###### the term on the next line has to be excluded from the sum if n1=0 and G1=2 so we use Hngexclude
           +((n1-N-1)/4*
Hngexclude((N-n1),(G-G1/2),N,G)  )
           -3*(2*(N-n1)-1)/6*( - 2*
Hng((N-n1)-1,(G-G1/2)) - Hng((N-n1)-1,(G-G1/2)-1/2) )
          +6*
add(add( (2*n3-1)*Hng(n3-1,G3/2)/2*(2*((N-n1)-n3)-1)/2*Hng(((N-n1)-n3)-1,(2*(G-G1/2)-G3)/2)
            
,n3=0..N-n1),  G3=0..2*(G-G1/2)))
 
,G1=0..2*G),n1=0..N-1)) ;
fi:
end:
# needed to exclude the top term from the sum corresponds to the term with Kronecker symbol in the paper
Hngexclude:=proc(N,G,Nexclude, Gexclude)
if N=Nexclude and G=Gexclude then return 0;
else return Hng(N,G); fi;
end:
 

> # Example: maps of genus 7/2 with 14 edges
Hng(14,7/2);

 

476412224477845444 (2.1.1)
 

> # This is the explicit (non-polynomial) recurrence to compute the numbers of maps by edges and genus
# and with a weight u/z per vertices/faces. This is Thm 5.2 in the paper.
HngW:= proc(N,G)
option remember;
# Initial conditions
if N<0 or G<0 or 2*G>N then return 0:
elif G=0   and N=0 then return u*z;
elif G=0   and N=1 then return (u+z)*u*z;
elif G=0   and N=2 then return u*z*(u+2*z)*(2*u+z);
elif G=1/2 and N=1 then return u*z;
elif G=1/2 and N=2 then return 5*u*z*(u+z);
elif G=1   and N=2 then return 5*u*z;
# Main case
else
 return factor(
2/(N^2-N-2) *(
N*(2*N-1)*( (u+z)*
HngW(N-1,G) + HngW(N-1,G-1/2) )
+   (2*N-3)*(2*N-2)*(2*N-1)*(2*N)/2*
HngW(N-2,G-1)
+   
12*
add(add( (2*(N-n1)-1)/2*HngW(N-n1-1,(2*G-G1)/2)*(2*n1-1)*(2*n1)/2*HngW(n1-1,G1/2) ,G1=0..2*G),n1=0..N)
-
add(add(add(add(Qijg(p,n1-2*G0/2+2-p,G0/2)*(2^(2+2*G1/2-2*G0/2)*phi(p,n1-2*G0/2+2-p,n1-2*G1/2,r,s))*(1+(-1)^(G1-G0))/2
       
,p=1..n1-2*G0/2+2-1),G0=0..G1)
        *( (2*(N-n1)-1)*(2*(N-n1)-2)*(2*(N-n1)-3)/2*
HngW((N-n1)-2,(G-G1/2)-1)
        ###### (**) the term on the next line has to be excluded in certain cases so we use Qngexclude
        +( (n1-N-1)/4*
HngWexclude((N-n1),(G-G1/2),N,G)  )
        -3*(2*(N-n1)-1)/6*( - (u+z)*
HngW((N-n1)-1,(G-G1/2)) - HngW((N-n1)-1,(G-G1/2)-1/2) )
        +6*
add(add( (2*n3-1)*HngW(n3-1,G3/2)/2*(2*((N-n1)-n3)-1)/2*HngW(((N-n1)-n3)-1,(2*(G-G1/2)-G3)/2),n3=0..N-n1),G3=0..2*(G-G1/2)) )
,
G1=0..2*G),n1=0..N-1) ));
fi:
end:

# needed to exclude the top term from the sum
HngWexclude:=proc(N,G,Nexclude, Gexclude)
 if N=Nexclude and G=Gexclude then return 0;
 else return HngW(N,G); fi;
end:

# maps by vertices/faces/genus
Qijg:=proc(i,j,G)
option remember;
return coeff(coeff(HngW(i+j+2*G-2,G),u,i),z,j);
end:

#auxiliary function
phi:=proc(p,q,m,r,s)
option remember;
return add(binomial(p,i)*binomial(q,m-i)*u^i*z^(m-i),i=0..m);
end:

 

> # Example: maps of genus 7/2 with 14 edges, by vertices and faces
HngW(14,7/2);
subs(u=1,z=1,%);
 

 

`+`(`*`(2, `*`(u, `*`(z, `*`(`+`(u, z), `*`(`+`(`*`(742397089465460, `*`(`^`(u, 6))), `*`(8041094756931900, `*`(`^`(u, 5), `*`(z))), `*`(28894156759093592, `*`(`^`(u, 4), `*`(`^`(z, 2)))), `*`(4374775...
`+`(`*`(2, `*`(u, `*`(z, `*`(`+`(u, z), `*`(`+`(`*`(742397089465460, `*`(`^`(u, 6))), `*`(8041094756931900, `*`(`^`(u, 5), `*`(z))), `*`(28894156759093592, `*`(`^`(u, 4), `*`(`^`(z, 2)))), `*`(4374775...
476412224477845444 (2.1.2)