CUST ZK

 ---------------------

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

这里以连乘积加括号问题为背景:

  由于矩阵的乘积满足结合律,且矩阵乘积必须满足左边矩阵的列数的等于右边矩阵的行数,不同的计算顺序,需要的乘法运算次数不一样。加括号可以改变计算顺序,合理安排计算顺序可以大大降低计算次数。
  给乘积算式加括号的方法数是一个计数问题。它的模型是卡特兰数。
比如有矩阵A,B,C,D,有五种加括号方式
((A*B)*C)*D
(A*(B*C))*D
(A*B)*(C*D)
A*(B*(C*D))
A*((B*C)*D)
  可见,无论是哪种加括号的方式,总有一个'*'运算符在最外面的括号的外面,以它作为分隔符,就好像是a*b一样只有两个参与运算的乘数,比如A*(B*C*D),而这里的B*C*D同样是一个有待加括号的乘积算式,这就说明,加括号可以作为一个递推问题求解。

  (不会用博客园编辑latex,再次截图编辑的latex.....)

卡塔兰数(Catalan数)问题,数学推导和近似公式 算法 第1张

 

这样,就引入了卡塔兰数的定义,接下来我们证明该公式。大家只需要掌握《高等数学》的幂级数,柯西乘积,定积分和《离散数学》的牛顿二项式定理,生成函数即可

卡塔兰数(Catalan数)问题,数学推导和近似公式 算法 第2张

 

这样就证明了该公式,最后我们来求解一下近似公式,毕竟在算法中我们需要估计函数的阶,才能了解算法的复杂度

这个就更简单了,大家只需要了解斯特林公式即可,它仍然可以在《离散数学》计数问题里面找到

卡塔兰数(Catalan数)问题,数学推导和近似公式 算法 第3张

----------------------------------------------------------

CUST, ZK

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄