渐近地,


17

考虑置换σ[1..n]。取反定义为一对索引(i,j),使得和。σ > σ Ĵ i<jσ(i)>σ(j)

将定义为的排列数,最多反转。 [ 1 .. n ] kAk[1..n]k

问题:的紧渐近界是什么?Ak

之前提出了一个相关的问题:具有相同的Kendall-Tau距离的排列数

但是上面的问题是关于计算 Ak。可以使用动态编程来计算它,因为它满足此处显示的重复关系:https : //stackoverflow.com/questions/948341/dynamic-programming-number-of-ways-to-get-at-least-n-bubble排序交换

也已经研究了具有恰好为 k反转的排列数,并且可以将其表示为生成函数:http : //en.wikipedia.org/wiki/Permutation#Inversions

但是我找不到封闭式公式或渐近边界。


2
如果您有一个序列的生成多项式,则只需将多项式乘以就可以得出前缀和的生成多项式1/(1x)。在您的情况下,您将使用链接到的多项式来计算正k个倒数。
Suresh Venkat


1
@SureshVenkat感谢您的提示。但是我仍然会坚持以nk的形式在这个非常复杂的多项式中找到的系数,我不知道该怎么做。xknk
Vinayak Pathak

3
要获得的系数,请采用生成多项式的第k个导数,并在x = 0时对其求xkkx=0
Sasho Nikolov

Answers:


12

根据Wikipedia的描述,中恰好有k个反转的排列数是X k in 1 1 + X 1 + X + X 21 + X + + X n - 1的系数c n k )表示。这表明 c n + 1 SnkXk

1(1+X)(1+X+X2)(1+X++Xn1).
c(n,k) 因此,在排列的数量小号Ñ至多 ķ反转等于在排列的数量小号Ñ + 1与恰好 ķ反转。这具有简洁的组合证明以及(提示:取 π &Element; 小号Ñ + 1和删除 Ñ + 1)。
c(n+1,k)=l=0kc(n,kl).
SnkSn+1kπSn+1n+1

如果我们只对的系数感兴趣,则对于m > k的因数X m不会有任何区别。因此,对于Ñ > ķÇ Ñ ķ 是系数X ķXkXmm>kn>kc(n,k)Xk 这意味着公式 cnk=kt=0n+tk1

1(1+X)(1+X++Xk1)(1+X++Xk+)nk=1(1+X)(1+X++Xk1)1(1X)nk=1(1+X)(1+X++Xk1)t=0(t+nk1t)Xt.
c(n,k)=t=0k(n+tk1t)c(k,kt),n>k.

为常数时,渐近最重要的项是与t = k对应的项,我们有 c n k = n 1kt=kcn+1k)来说,相同的渐近性也起作用。

c(n,k)=(n1k)+Ok(nk1)=1k!nk+Ok(nk1).
c(n+1,k)

对于非常数,使用 n + t k 1k(n+tk1t)=(n+tk1nk1)tt=0kc(k,t)k!

(n1k)c(n,k)k!(n1k).

使用斯特林近似和二项式边界,我们可以将最后一个表达式简化为 Cñķķñ-1个ķËķķ+1个/2Ë-ķËñ-1个/ķķ 所以 CñķËķñ-1个ķ。这当然不是很严格,但是比我从这些近似中所期望的范围更优雅。
SamM
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.