The Riordan Group and Applications 第1章 笔记

发布时间 2023-09-05 16:02:07作者: yhm138

2022年的一本书,只有376页。证明直接去书里面找。

1 介绍

1.1 啥是RiordanArray

1.2 起源和研究动机

1.3 基础的应用

\[\mathfrak{B}_r=\sum_{n \geq 0} \frac{1}{(r-1) n+1}\left(\begin{array}{c} r n \\ n \end{array}\right) z^n, \]

这个广义二项级数描述的是r-ary 数的生成函数。如果\(r=2\),对应的是Catalan数;如果\(r=3\),对应的是Ternary数\(T_n=\frac{1}{2n+1} \tbinom{3n}{n}\)

接着介绍 A-sequence of a family of trees
形式是序列\((a_0,a_1,a_2,\cdots)\),其中\(a_k\)是 updegree \(k\)的权重或数量。
因此,A-sequence给出了 the numebr of possibilities for the updegree of a vertex.

举例,一般我们设置\(a_k=0\)表示没有顶点具有updegree \(k\)
\(a_k=1\)表示 具有updegree \(k\)的顶点是允许的。

A-sequence的生成函数被称为updegree function,记为\(A(z)\)

举例, Motzkin树是ordered tree,满足每个顶点的updegree是\(0,1,2\)之一。所以对应的A-sequence是\((1,1,1,0,0,\cdots)\),A-function是\(1+z+z^2\)

Complex binary树对应的A-sequence是\((1,0,1,0,0,\cdots)\),A-function是\(1+z^2\)

incomplete binary树可以有right edge或者left edge,对应的A-function是\(1+2z+z^2\)


1.3节按照美式教材的套路告诉了你他是怎么发明这些概念的,怎么找到这些Theorems,formulae的。
但是如果你和我一样是工科生,你不关心这些,你首先关心的是解决问题的算法描述,如果有关于此算法的直观图像当然更好。

我理解的quick start是这样的:

你先了解UUR(Uniform Updegree Requirement) tree,RiordanArray,A-sequence,updegree function(g.f. of A-sequence)这些概念。

知道我们在counting UUR trees时关心这3个矩阵。

\[\mathbb{V}:=(T,L_1)=\mathbb{T}\mathbb{L} \text{ and } \mathbb{L}:=(1,L_1) \text{ and } \mathbb{T}:=(T,z) \]

知道这些生成函数\(T,V,L_1,L=1+L_1+L_1^2+L_1^3+\cdots\)

你想定义一种新的UUR tree的时候,那你肯定要写出它对应的A-function。
你想计数:在边数为\(n\)的你这种UUR tree中,高度为\(k\)的树节点数目,那你关注\(\mathbb{V}\)矩阵。
你想计数:在边数为\(n\)的你这种UUR tree中,高度为\(k\)的叶子节点数目,那你关注\(\mathbb{L}\)矩阵。

你的问题是怎么从A-function得到这2个矩阵?

你打算先求出生成函数\(T\),尝试从这个公式中计算出\(T\):$ A(z T) =T$ (方程不容易解可以使用【多项式牛顿迭代】或者【半在线卷积】计算系数。)

接着用这个 \(L_1=z \cdot A^{\prime}(z T).\) 算出\(L_1\)

之后使用RiordanArray的定义算出这3个矩阵:$\mathbb{V}:=(T,L_1)=\mathbb{T}\mathbb{L} \text{ and } \mathbb{L}:=(1,L_1) \text{ and }
\mathbb{T}:=(T,z) $

常见的如下:

\[\begin{array}{c|c|c} \text { Type of UUR tree } & A \text {-sequence or } A \text{-function } & \mathbb{V}:=(T,L_1)=\mathbb{T}\mathbb{L} \text{ and } \mathbb{L}:=(1,L_1) \text{ and } \mathbb{T}:=(T,z) \text{ matrices } \\ \hline \text { ordered tree } & (1,1,1,1,1,1, \ldots) & T=C, L_1=zC^2 \text{ where C is g.f. of Catalan numbers} \\ \text { Motzkin tree } & (1,1,1,0,0,0, \ldots) \\ \text { incomplete binary tree } & (1,2,1,0,0,0, \ldots) \\ \text { complete binary tree } & (1,0,1,0,0,0, \ldots) \\ \text { even tree } & (1,0,1,0,1,0, \ldots) \\ \text { incomplete ternary tree } & (1,3,3,1,0,0, \ldots) \\ \text { complete ternary tree } & (1,0,0,1,0,0, \ldots) \\ \text { Schröder tree } & (1,2,2,2,2,2, \ldots) \\ \text { spoiled child tree } & (1,2,1,1,1,1, \ldots) \\ \text { Hex tree } & (1,3,1,0,0,0, \ldots) \\ \text { Gamma tree } & (1,0,1,1,1,1, \ldots) \\ \text { simple tree (path) } & (1,1,0,0,0,0, \ldots) \\ \text { Traffic light tree} & A(z)=1/(1-z)^2 & T=g^2, L_1=2(g-1) \text{ where g is g.f. of tenary numbers} \end{array} \]

(*用于快速验证的Mathematica代码*)

Clear["Global`*"]

RiordanArray[p_, q_, numOfRows_Integer] := 
  Table[SeriesCoefficient[p*q^k, {z, 0, n}], {n, 0, numOfRows}, {k, 0,
      n}] // Grid;
GenerateMatricesVLT[T_, L1_, numOfRows_Integer] := 
 Module[{MatrixV, MatrixL, matrixT}, 
  MatrixV = RiordanArray[T, L1, numOfRows]; 
  MatrixL = RiordanArray[1, L1, numOfRows]; 
  MatrixT = RiordanArray[T, z, numOfRows];
  {MatrixV, MatrixL, MatrixT}]


CatalanGF = Sum[CatalanNumber[n]*z^n, {n, 0, Infinity}];
GenerateMatricesVLT[CatalanGF, z*CatalanGF^2, 8]


TenaryNumberGF = Sum[Binomial[3 n, n]/(2*n + 1)*z^n, {n, 0, Infinity}];
GenerateMatricesVLT[TenaryNumberGF^2, 2 (TenaryNumberGF - 1), 8]
Clear["Global`*"];
ASequenceOfTheUURTree[z_] := 1 + z^2;
DerivativeASequenceOfTheUURTree[z_] = D[ASequenceOfTheUURTree[z], z];
T = GF /. Solve[GF == ASequenceOfTheUURTree[z*GF], GF][[1]]
L1 = z*DerivativeASequenceOfTheUURTree[z*T]
RiordanArray[p_, q_, numOfRows_Integer] := 
  Table[SeriesCoefficient[p*q^k, {z, 0, n}], {n, 0, numOfRows}, {k, 0,
      n}] // Grid;
GenerateMatricesVLT[T_, L1_, numOfRows_Integer] := 
 Module[{MatrixV, MatrixL, matrixT}, 
  MatrixV = RiordanArray[T, L1, numOfRows];
  MatrixL = RiordanArray[1, L1, numOfRows];
  MatrixT = RiordanArray[T, z, numOfRows];
  {MatrixV, MatrixL, MatrixT}]
GenerateMatricesVLT[T, L1, 8]



\(\textbf{Theorem 1.1}\) 介绍Couting UUR trees的五个基本方程:

\[(a) V=T L; \\ (b) V=(z T)^{\prime}; \\ (c) L=\frac{1}{1-L_1} = 1+L_1 +L_1^2 + L_1^3 +L_1^4 + \cdots; \\ (d) L_1=z T^{\prime} / V; \\ (e) L_1=z A^{\prime}(z T). \]

练习

点击展开

1.1 使用等式(1.3.1)找到如下RiordanArray矩阵的\((n,k)\)元素的闭形式:
(1) 例子1.1中的\(\mathbb{V}=(C,zC^2)\)\(\mathbb{L}=(1,zC^2)\),其中\(C\)是Catalan数的生成函数
(2) 例子1.2中的\(\mathbb{V}=(g^2,2(g-1))\)\(\mathbb{L}=(1,2(g-1))\),其中\(g\)是ternary数的生成函数。

1.2 证明\(L_1=zA'(zT)\). 见定理1.1的(e)
1.3 解出交通信号灯树的方程,其中,对于任意一个有正updegree的顶点至少有一个绿边。

1.4 说明,对于交通信号灯树

\[\frac{\left[z^n\right] L_1}{\left[z^n\right] T}=\frac{\left[z^n\right] 2(g-1)}{\left[z^n\right] g^2}=\frac{2 \cdot \frac{1}{3 n+1}\left(\begin{array}{c} 3 n+1 \\ n \end{array}\right)}{\frac{2}{3 n+2}\left(\begin{array}{c} 3 n+2 \\ 2 \end{array}\right)}=\frac{2 n+2}{3 n+1} \rightarrow \frac{2}{3} \]

参考