渐近地,


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/(1−x)。在您的情况下,您将使用链接到的多项式来计算正k个倒数。
— Suresh Venkat


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

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

Answers:


12

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

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

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

1(1+X)⋯(1+X+⋯+Xk−1)(1+X+⋯+Xk+⋯)n−k=1(1+X)⋯(1+X+⋯+Xk−1)1(1−X)n−k=1(1+X)⋯(1+X+⋯+Xk−1)∑t=0∞(t+n−k−1t)Xt.
c(n,k)=∑t=0k(n+t−k−1t)c(k,k−t),n>k.

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

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

对于非常数,使用( n + t − k − 1k(n+t−k−1t)=(n+t−k−1n−k−1)t∑t=0kc(k,t)≤k!

(n−1k)≤c(n,k)≤k!(n−1k).

使用斯特林近似和二项式边界,我们可以将最后一个表达式简化为 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.