OFFSET
1,3
COMMENTS
The Matula number of a rooted tree can be defined in the following recursive manner: to the one-vertex tree there corresponds the number 1; to a tree T with root degree 1 there corresponds the t-th prime number, where t is the Matula number of the tree obtained from T by deleting the edge emanating from the root; to a tree T with root degree m>=2 there corresponds the product of the Matula numbers of the m branches of T.
The subtree polynomial of a tree T is the bivariate generating polynomial of the subtrees of T with at least one edge with respect to the number of edges (marked by x) and number of pendant vertices (marked by y). See the Martin et. al, reference. For example, the subtree polynomial of the tree \/ is 2xy^2 + x^2 y^2.
If G(n;x,y) is the subtree polynomial of the rooted tree with Matula number n, then, obviously, a(n) = G(n;1,1). The Maple program uses this circuitous way for finding a(n). With the given Maple program, the command G(n) yields the subtree polynomial of the rooted tree having Matula number n (this is my "secret" reason to include this sequence).
LINKS
Emeric Deutsch, Rooted tree statistics from Matula numbers, arXiv:1111.4288 [math.CO], 2011.
Emeric Deutsch, Rooted tree statistics from Matula numbers, Discrete Appl. Math., 160, 2012, 2314-2322.
F. Goebel, On a 1-1-correspondence between rooted trees and natural numbers, J. Combin. Theory, B 29 (1980), 141-143.
I. Gutman and A. Ivic, On Matula numbers, Discrete Math., 150, 1996, 131-142.
I. Gutman and Yeong-Nan Yeh, Deducing properties of trees from their Matula numbers, Publ. Inst. Math., 53 (67), 1993, 17-22.
D. W. Matula, A natural rooted tree enumeration by prime factorization, SIAM Rev. 10 (1968) 273.
EXAMPLE
a((4)=3 because the rooted tree with Matula number 4 is \/ with subtrees \ , / , and \/ .
MAPLE
with(numtheory): g := proc (n) local r, s: r := proc (n) options operator, arrow: op(1, factorset(n)) end proc: s := proc (n) options operator, arrow: n/r(n) end proc; if n = 1 then 0 elif bigomega(n) = 1 then expand(x*y^2+x*g(pi(n))+x*y*h(pi(n))) else expand(g(r(n))+g(s(n))) end if end proc: h := proc (n) local r, s: r := proc (n) options operator, arrow: op(1, factorset(n)) end proc; s := proc (n) options operator, arrow; n/r(n) end proc: if n = 1 then 0 elif bigomega(n) = 1 then 0 else expand(h(r(n))+h(s(n))+g(r(n))*g(s(n))/y^2+g(r(n))*h(s(n))/y+h(r(n))*g(s(n))/y+h(r(n))*h(s(n))) end if end proc: G := proc (n) local r, s: r := proc (n) options operator, arrow; op(1, factorset(n)) end proc: s := proc (n) options operator, arrow; n/r(n) end proc: if n = 1 then 0 elif bigomega(n) = 1 then g(n)+G(pi(n)) else expand(G(r(n))+G(s(n))+h(n)-h(r(n))-h(s(n))) end if end proc: seq(subs({x = 1, y = 1}, G(i)), i = 1 .. 150);
MATHEMATICA
r[n_] := FactorInteger[n][[1, 1]];
s[n_] := n/r[n];
g[n_] := If[n == 1, 0, If[PrimeOmega[n] == 1, Expand[x*y^2 + x*g[PrimePi[n]] + x*y*h[PrimePi[n]]], Expand[g[r[n]] + g[s[n]]]]];
h[n_] := If[n == 1, 0, If[PrimeOmega[n] == 1, 0, Expand[h[r[n]] + h[s[n]] + g[r[n]]*g[s[n]]/y^2 + g[r[n]]*h[s[n]]/y + h[r[n]]*g[s[n]]/y + h[r[n]]*h[s[n]]]]];
G[n_] := G[n] = If[n == 1, 0, If[PrimeOmega[n] == 1, g[n] + G[PrimePi[n]], Expand[G[r[n]] + G[s[n]] + h[n] - h[r[n]] - h[s[n]]]]];
a[n_] := G[n] /. {x -> 1, y -> 1};
Table[a[n], {n, 1, 100}] (* Jean-François Alcover, Jun 18 2024, after Maple code *)
CROSSREFS
KEYWORD
nonn
AUTHOR
Emeric Deutsch, Apr 28 2015
STATUS
approved