%I #12 Mar 07 2017 11:26:02
%S 0,-1,4,4,-12,-12,-12,-12,32,32,32,32,32,32,-80,32,32,-80,32,-80,-80,
%T -80,-80,-80,192,-80,192,-80,-80,192,-80,-80,192,-80,192,192,-80,-80,
%U 192,192,-80,192,-80,192,-448,192,192,192,192,-448,192,192,-80,-448,-448,192,192,192,-80,-448
%N The determinant of the distance matrix of the rooted tree having Matula number n.
%C The Matula-Goebel 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-Goebel 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-Goebel numbers of the m branches of T.
%D F. Goebel, On a 1-1 correspondence between rooted trees and natural numbers, J. Combin. Theory, B 29 (1980), 141-143.
%D I. Gutman and A. Ivic, On Matula numbers, Discrete Math., 150, 1996, 131-142.
%D I. Gutman and Y-N. Yeh, Deducing properties of trees from their Matula numbers, Publ. Inst. Math., 53 (67), 1993, 17-22.
%D D. W. Matula, A natural rooted tree enumeration by prime factorization, SIAM Review, 10, 1968, 273.
%H E. Deutsch, <a href="http://arxiv.org/abs/1111.4288"> Rooted tree statistics from Matula numbers</a>, arXiv:1111.4288.
%H <a href="/index/Mat#matula">Index entries for sequences related to Matula-Goebel numbers</a>
%F The Maple program d finds recursively the distance matrix (time consuming).
%e a(2)=-1 because the rooted tree with Matula number 2 is the one-edge tree with distance matrix [(0,1, (1,0)].
%p with(numtheory): with(linalg): with(LinearAlgebra): V := 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 1 elif bigomega(n) = 1 then 1+V(pi(n)) else V(r(n))+V(s(n))-1 end if end proc: d := proc (n) local r, s, C, a: r := proc (n) options operator, arrow: op(1, factorset(n)) end proc: s := proc (n) options operator, arrow: n/r(n) end proc: C := proc (A, B) local c: c := proc (i, j) options operator, arrow: A[1, i]+B[1, j+1] end proc: Matrix(RowDimension(A), RowDimension(B)-1, c) end proc: a := proc (i, j) if i = 1 and j = 1 then 0 elif 2 <= i and 2 <= j then d(pi(n))[i-1, j-1] elif i = 1 then 1+d(pi(n))[1, j-1] elif j = 1 then 1+d(pi(n))[i-1, 1] else end if end proc: if n = 1 then Matrix(1, 1, [0]) elif bigomega(n) = 1 then Matrix(V(n), V(n), a) else Matrix(blockmatrix(2, 2, [d(r(n)), C(d(r(n)), d(s(n))), Transpose(C(d(r(n)), d(s(n)))), SubMatrix(d(s(n)), 2 .. RowDimension(d(s(n))), 2 .. RowDimension(d(s(n))))])) end if end proc: for n to 60 do dd[n] := d(n) end do: seq(Determinant(dd[n]), n = 1 .. 60);
%K sign
%O 1,3
%A _Emeric Deutsch_, Apr 14 2012
|