前一篇已经讨论了反序的一些基本概念和有趣的对应关系,有人会思考这和排序有什么关系,肤浅地看,排序就是把有高反序的排列变成0反序的,还记得那个多面体么。从一个点到顶端。这似乎有着比较有趣的关系。
反序数
前一节我们讨论的都是一些对应关系,那么反序数对于一个n元素的所有排列,到底是多少个呢,那么我们定义In(k),表示n个元素的所有排列中有k个反序数的排列的个数。
我们有如下表:
从上表可以看出很多有趣的规律。
In(0)=1,这是因为唯一没有反序的排列只有一个,即排好序。
In(1)=n-1,这是因为有一个反序的排列,是在排好序的那个排序,基础上调整邻近的两个元素,可以调的就是n-1个位置,所以就有n-1个。
还有对称性质:
这个证明也比较容易,我们知道每个元素的反序数是独立的,那么把原排列从最右边反排到最左边,得到一个新的排列,就某个元素来说,其反序数应该是原排列该元素的反序数极大值与其反序数之差,所以所有元素加起来,则新排列的反序数应该是反序数极大值与原排列的反序数之差,由于各元素是独立的,那么反序数极大值就是各个元素反序数极大值之和,即0+1+...+(n-1)=n(n-1)/2,即所求。所以每一个排列都可以找到另一个排列与其有对应(可能是本身),所以就有对称性质,并且有上述公式。
我们令生成函数为Gn(z) = In(0) + In(l)z + In(2)z2 + .......,该生成函数满足Gn(z) =(1+z+z2+...+zn-1) Gn-1(z);
这个满足递归关系正文也说不难看出,看来我愚钝了,要看很久才看出。
首先,每一个n-1个元素的排列,添加一个元素都将都成n个新的排列,排列的总个数也是原来的n倍,那么这么多新的排列会对反序数造成什么影响呢,反序数的最大值也将从(n-1)(n-2)/2增大到n(n-1)/2,而对于In-1(0)来说,由于第n个元素是独立于其他元素的,所以,原排列中反序数为0的排列将产生反序数为0,1,.....,n-1,原排列中反序数为1的排列将产生反序数为1,2,.....,n以此类推,就可以知道那递归关系是满足的。
再进行深度递归,分子分母相乘(1-z)n化简,得出式子:
再结合表,我们能够推广出下面的式子:
从前面的分析,我们知道,每一个原排列反序数小于等于k的都将为新排列反序数为k的做一次贡献,那么In(k)=In-1(k)+In-1(k-1)+.....+In-1(0)对于k<n,将此式子的k换成k-1,照样成立,那么In(k-1)=n-1(k-1)+In-1(k-2)+...+In-1(0),代换,那么上面的式子得证。
到这里,我们是不是想起了杨辉三角。这里并不想说杨辉三角和这里有什么关系,但是杨辉三角和组合数的一些性质有关,和多项式系数也有关,这里面和反序数到底有没有本质上的联系?这应该留待我们去发掘和讨论。
那么对于n和k,可以不可以马上计算出In(k)的值呢?答案是肯定的。
这公式比较难证明,作者叫我们先看看习题14,那我们还看看习题14讲的是什么。
首先考虑的是加法分划的问题,
n = pi + p2 + ...+ Pk, where p1> P2 > .....> Pk > 0. For example, the partitions of 7 into distinct parts are 7, 6 + 1, 5 + 2, 4 + 3, 4 + 2 + 1。
Let fk(n) be the number of partitions of n into k distinct parts; prove that ∑k (-1)k fk(n) =0, unless n has the form (3j2 ± j)/2, for some nonnegative integer j; in the latter case the sum is (-1)j.
这一题说一个数n可以分划成k个正整数之和,然后令fk(n)是n可以分成k部分的不同分法次数,要证明这些∑k (-1)k fk(n) =0,当存某个整数j,令u=(3j2 ± j)/2,∑k (-1)k fk(n) = (-1)j 。
这个证明的方法是一个叫富兰克林的人的,相当有趣。如图
我们让n的其中一个划分,从p1到pk往下排,第一行画p1个黑点,第二画p2个黑点,以此类推,我们就得到类似左边的图。
然后我们把满足p(j+1)<p(j) - 1的最少j,把头j行的最后一个黑点圈起来,如图,如果j(即圈起来黑点数)小于pk(最后一行的黑点数),那么把圈起来的j个点放在最下面,成为新的一行,如右边的图。类似的,如果是j大于等于pk,就可以把pk那一行转45°放在圈起来黑点的右边,成为另一个图。
这样的转化,我们可以知道,每一个偶行加法划分都存在着对应的奇行加法划分,除非某个划分是没办法找到对应的。
假设j<k,则无论j和pk是什么关系,都可以有对应。当j=k时,j只有在等于pk和pk-1时没办法(注意这里的p1>p2>...>pk)
这样就意味只有当j=k=pk或者j=k=p(k) - 1才没有对应
故此有j行,每行相差1,pk是j或者j-1,可以得到n=(2j-1)+..+j=(3j2-j)/2和n=2j+..+(j-1)=(3j2+j)/2 。
那么没有对应的项,就会使∑k (-1)k fk(n)!=0,而是∑k (-1)k fk(n) = (-1)j (k=j ,fk(n)=1)。
插句题外话,这里是比较特殊的加法划分,不能有相等的项出现,但是扩展到相等的项,也很容易,只不过p(j+1)<=p(j) - 1,而且只有j=k=pk才没有对应。也很容易得出结论。
上面的加法划分到底可以用来计算什么呢?计算欧拉公式
这个通过拆项,我们就知道,通过加法划分,刚好可以得出这条式子,比如,z7的系数,有可能的组合就是就是-z7,(-z6)(-z1),(-z5)(-z2),(-z4)(-z3),(-z4)(-z5)(-z1),几个项的系数和,相同个乘数的提取下公因子-1,就刚好变成前面例子中的加法划分求和公式,由于7是满了(3j2+j)/2,所以可以j=2,所以结果是(-1)j,故系数是1,与此类似就可以得到上面的式子。
ps:习题中提到欧拉是用不同的方式证明的,但是没具体深入,有兴趣的同学可以去翻看相关书籍。
这下面还有个地方不太明白说啥,留笔。
得到欧拉公式后,我们回头看看我们要求的In(k),这里虽然计算了生成函数的分子,但是本人能力有限,还是计算不出各个系数,求数学高手帮助!