首页 > 其他分享 >欧拉数(Genshining)

欧拉数(Genshining)

时间:2023-12-02 14:13:21浏览次数:50  
标签:right matrix Genshining sum rangle binom 欧拉 left

欧拉数

记 \(\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle\) 为 \(n\) 阶排列 \(p[1:n]\) 中有 \(k\) 个 \(p[i]<p[i+1](i<n)\) 的数量。

基础公式和欧拉数·行

有 \(\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle=\left\langle \begin{matrix} n\\n-k-1 \end{matrix} \right\rangle\)。显然,我们把上升改为下降,再令 \(n-k-1\to k\),得到的排列应当构成双射。

仍然考虑增量法构造递推式。

新加最大的数,不构成上升的可能是插在上升中间或者第一个,构成的可能则是其他任何位置。那么递推公式就得出了。

\[\left\langle \begin{matrix} n\\m \end{matrix} \right\rangle=(m+1)\left\langle \begin{matrix} n-1\\m \end{matrix} \right\rangle+(n-m)\left\langle \begin{matrix} n-1\\m-1 \end{matrix} \right\rangle \]

下面使用归纳法证明其通项公式:

\[\left\langle \begin{matrix} n\\m \end{matrix} \right\rangle=\sum_{k=0}^m\binom{n+1}{k}(m-k+1)^n(-1)^k \]

考虑加法公式的右侧展开:

\[(m+1)\sum_{k=0}^m\binom{n}{k}(m-k+1)^{n-1}(-1)^k+(n-m)\sum_{k=0}^{m-1}\binom{n}{k}(m-k)^{n-1}(-1)^k\\ =\sum_{k=0}^m\binom{n}{k}[(m+1)(m-k+1)^{n-1}(-1)^k+(n-m)(m-k)^{n-1}(-1)^k]\\ =\sum_{k=0}^m\binom{n}{k}[(m-k+1)^{n}(-1)^k+\frac{k}{m-k+1}(m-k+1)^{n}(-1)^k+(n-m)(m-k)^{n-1}(-1)^k]\\ =\sum_{k=0}^m\left(\binom{n}{k}+\binom{n-1}{k}\right)(m-k+1)^n(-1)^k\\ +\left(\frac{k}{m-k+1}-\frac{k}{n-k+1}\right)(m-k+1)^n(-1)^k\\ +\sum_{k=0}^m(n-m)(m-k)^{n-1}(-1)^k\binom{n}{k}\\ =\sum_{k=0}^m\binom{n+1}{k}(m-k+1)^n(-1)^k+\frac{k(n-m)}{n-k+1}\binom{n}{k}(m-k+1)^{n-1}(-1)^k\\ +\sum_{k=0}\binom{n}{k-1}(n-m)(m-k)^{n-1}(-1)^k\\ =\sum_{k=0}^m\binom{n+1}{k}(m-k+1)^n(-1)^k+0\\ =\sum_{k=0}^m\binom{n+1}{k}(m-k+1)^n(-1)^k\\ \]

至此,我们可以用卷积

\[f=gh,g_k=(k+1)^n,h_k=\binom{n+1}{k}(-1)^k \]

计算之。

值得一提的是,还有一种有趣的计算方法:

设 \(x_1,x_2,\dots,x_n\) 是均匀分布在 \((0,1)\) 上的实随机变量。可以发现,由于 \(\forall i\neq j,P(x_i=x_j)=0\),所以根据其大小关系得到排列是均匀的。

设 \(y_i=(x_i-x_{i-1}+1)\bmod 1\),容易证明,\(\{y\}\) 和 \(\{x\}\) 构成双射。而 \(\sum y_i= x_n+n-k-1\in(n-k-1,n-k)\),\(k\) 为“上升“的个数。

考虑统计概率(最后再用 \(n!\) 乘起来即可)。 只需要求得 \(\sum y_i\in(n-k-1,n-k)\) 的概率。事实上可以先统计 \(\sum y_i<n-k\) 的概率再做差分。

考虑形式上我们虽然是求概率,但是考虑扩展为“测度”

考虑这样的一列随机变量: \(z_i=\sum _{j\le i}y_j\),若抛开 \(y_i<1\) 的限制,显然其在 \(n\) 维空间 \((0,0,\dots,0)\to (1,1,\dots,1)\) 的测度为 \(\dfrac{(n-k)^n}{n!}\),分母是因为要求 \(z\) 有序。

如果令 \(p\) 个 \(y_j\) 强制 \(\ge1\),发现其测度为 \(\dfrac{(n-k-p)^n}{n!}\) 。进行容斥,得出答案为:

\[\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle=n!\sum_{p=0}^{n-k} \frac{(-1)^p\binom{n}{p}(n-k-p)^n}{n!}-n!\sum_{p=0}^{n-k-1} \frac{(-1)^p\binom{n}{p}(n-k-p-1)^n}{n!}\\ =\sum_{p=0}^{n-k} (-1)^p\binom{n}{p}(n-k-p)^n-\sum_{p=0}^{n-k-1} (-1)^p\binom{n}{p}(n-k-p-1)^n=\left\langle \begin{matrix} n\\n-k-1 \end{matrix} \right\rangle\\ \]

所以

\[\left\langle \begin{matrix} n\\m \end{matrix} \right\rangle=\sum_{p=0}^{m+1}(-1)^p \binom{n}{p}(m-p+1)^n-\sum_{p=0}^m(-1)^p\binom{n}{p}(m-p)^n\\ =\sum_{p=0}^{m+1}(-1)^p \binom{n+1}{p}(m-p+1)^n-\sum_{p=1}^{m+1}\binom{n}{p-1}(-1)^p(m-p+1)^n-\sum_{p=0}^m(-1)^p\binom{n}{p}(m-p)^n\\ =\sum_{p=0}^{m+1}(-1)^p \binom{n+1}{p}(m-p+1)^n \]

Worpitzky 恒等式

\[x^n =\sum_k\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle\binom{x+k}{n} \]

证明:

容易得知:

\[x\binom{x+k}{n}=(k+1)\binom{x+k}{n+1}+(n-k)\binom{x+k+1}{n+1} \]

然后发现拆开右式的

\[\binom{x+k}{n} \]

就可以归纳证明。

借助此恒等式,我们可以知道一阶欧拉数和斯特林数的关系:

对 Worpitzky 恒等式两边求 \(x\) 的 \(m\) 阶有限微积分得到:

\[\Delta^m(x^n)\mid_{x=0}=\Delta^m\left(\sum_k\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle\binom{x+k}{n}\right)\mid_{x=0}\\ \sum_i \binom{m}{i}i^n(-1)^{m-i}=\sum_k\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle\binom{k}{n-m}\\ \sum_k\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle\binom{k}{n-m}=m!{n\brace m}\\ \]

用哑元 \((z-1)^{n-m}\) 乘上两边并对 \(m\) 求和,可得出欧拉数的行生成函数。

\[\sum_k\left\langle \begin{matrix} n\\k \end{matrix} \right\rangle z^k=\sum _k{n\brace k}k!(z-1)^{n-k} \]

令两边 \(\forall k,[z^k]\text{LHS}=[z^k]\text{RHS}\),得出

\[\left\langle \begin{matrix} n\\m \end{matrix} \right\rangle=\sum_k{n\brace k}\binom{n-k}{m}(-1)^{n-m-k}k! \]

在此处 我们发现了另一个公式:

\[\left\langle \begin{matrix} n\\m \end{matrix} \right\rangle=\sum_{k=0}^n\binom{n+1}{k+m+1}(-1)^{n-k-m}k^n \]

证明方法是把组合数用上指标范德蒙德卷积展开。

二阶欧拉数

\(\left\langle\left\langle \begin{matrix} n\\m \end{matrix} \right\rangle\right\rangle\) 定义为多重集 \(\{1,1,2,2,\dots,n,n\}\) 排列中满足以下条件的个数:

\[\sum_{i=1}^{2n-1} [p_i<p_{i+1}]=m \]

2.\(\forall a\in[1,n]\),\(a\) 的两次出现位置之间的数都大于 \(a\)。

增量法容易知道,

\[\left\langle\left\langle \begin{matrix} n\\m \end{matrix} \right\rangle\right\rangle=(m+1)\left\langle\left\langle \begin{matrix} n-1\\m \end{matrix} \right\rangle\right\rangle+(2n-m-1)\left\langle\left\langle \begin{matrix} n-1\\m-1 \end{matrix} \right\rangle\right\rangle \]

标签:right,matrix,Genshining,sum,rangle,binom,欧拉,left
From: https://www.cnblogs.com/british-union/p/eulerian.html

相关文章

  • 欧拉函数
    定义欧拉函数\(\phi(n)\)代表的是\([1,n]\)之间与\(n\)互质的数量。公式\(\phi(n)=n\times(1-\frac{1}{p_1})\times(1-\frac{1}{p_2})\times(1-\frac{1}{p_3})\times……\times(1-\frac{1}{p_k})\)其中:\(n\)有\(k\)个质因数,而\(p_i\)就是其中的一个......
  • 欧拉函数模板
    #include<bits/stdc++.h>usingnamespacestd;//欧拉函数,质数vector<int>euler_range(intn){vector<int>phi(n+1),prime;vector<bool>is_prime(n+1,true);is_prime[1]=0,phi[1]=1;for(inti=2;i<=n;i......
  • 再探欧式筛——一种泛用性更强的欧拉筛法/线性筛法实现
    一、引言欧式筛/欧拉筛法/线性筛法(EulerSieve)是一种能够在\(O(n)\)时间复杂度内,处理\([1,n]\)内质数的方法。其相比埃氏筛/埃拉托斯特尼筛法(EratosthenesSieve)的\(O(n\log\logn)\)时间复杂度,主要的优化在于欧式筛保证了所有正整数\(n\)均只被其最小质因数\({minp}_n......
  • DFS序和欧拉序的降维打击
    1.DFS序和时间戳1.1DFS序定义:树的每一个节点在深度优先遍历中进、出栈的时间序列。如下树的dfs序就是[1,2,8,8,5,5,2,4,3,9,9,3,6,6,4,7,7,1]。下图为生成DFS的过程。对于一棵树进行DFS序,除了进入当前节点时对此节点进行记录,同时在回溯到当前节点时对其也记录一下,所以DF......
  • Unity中欧拉角
    什么是欧拉角?(1)使用单个角度来保存方位(2)X与Z沿自身坐标系旋转,Y沿世界坐标旋转(3)API:Vector3eulerAngle=this.tranform.rulerAngles;优点:(1)仅使用三个数字表达方位,占用空间小(2)沿坐标轴旋转的单位维角度,符合人的思考方式(3)任意三个数字都是合法的,不存在不合法的欧拉角缺点:(1)方......
  • 欧拉函数
    欧拉函数定义法定义法求欧拉函数是O(sqrt(n))的时间复杂度只可以求单个数的欧拉函数,/*欧拉函数φ的定义,φ(i)表示从[1,i]之间和i互质的数量(a和b互质即gcd(a,b)==1)欧拉函数是积性函数,例如a,b都为质数,那么φ(a*b)=φ(a)*φ(b),递推式为φ(a*b)=......
  • WebGL_0019:three.js 欧拉角和四元数
    1,这篇说说欧拉角和四元数,欧拉角和四元数的优缺点是老生常谈的话题了,使用条件我就不多说了,我只说一下使用方法。1.欧拉角(Euler)欧拉角描述一个旋转变换,通过指定轴顺序和其各个轴向上的指定旋转角度来旋转一个物体。下面我们开看看它的方法1.set(x:number,y:number,z:......
  • 实践1:欧拉公式
    题目描述已知一个多面体有a条边,b个面,求这个多面体有几个顶点。输入格式两个整数,用空格隔开,分别代表a,b。输出格式一个整数,代表顶点数量。输入输出样例输入31输出4说明/提示欧拉公式:顶点=边-面+2。答案:a,b=map(int,input().split())c=a-b+2print(c)......
  • 【欧拉图】Euler Graph(Fluery算法,Hierholzer算法)
    还在持续更新ing前言此乃小Oler的一篇算法随笔,从今日后,还会进行详细的修订。注明:有参考自论文《欧拉图相关的生成与计数问题探究》简单介绍著名的哥尼斯堡七桥问题是18世纪著名的古典数学问题之一,该问题在相当长的时间里无人能解。欧拉经过研究,于1736年发表了论文《哥尼......
  • 欧拉序求LCA
    使用欧拉序st表O(1)求LCA 欧拉序 st 表求LCA一开始是从某篇题解里看到的,后来百度了一下就会了(这是一种预处理 O(nlogn) ,查询 O(1) 的优秀算法。什么是欧拉序举个例子,下面是一棵树:上面有 dfs 与回溯的过程。将整个 dfs 与回溯过程写出来:1  →  2......