这个问题问的是,当我们将 $N$ 个互异的数(也就是不重复的数)随机排列成一个数组时,这个数组的“逆序数”的分布是怎样的。
什么是逆序数?
首先,我们得明确“逆序数”是什么意思。在一个数组(或者说一个排列)中,如果一对元素的顺序跟它们的数值大小顺序相反,那么这对元素就被称为一个“逆序对”。数组的逆序数就是指数组中所有逆序对的数量。
举个例子,假设我们有一个数组 $[3, 1, 2]$。
我们看元素 3 和 1:3 大于 1,但是 3 在 1 的前面,所以 $(3, 1)$ 是一个逆序对。
我们看元素 3 和 2:3 大于 2,但是 3 在 2 的前面,所以 $(3, 2)$ 是一个逆序对。
我们看元素 1 和 2:1 小于 2,而且 1 在 2 的前面,所以 $(1, 2)$ 不是逆序对。
所以,数组 $[3, 1, 2]$ 的逆序数是 2。
随机排列和概率
“N个互异数随机组成的数组”意味着我们考虑的是这 $N$ 个数的所有可能的排列。如果这 $N$ 个数是 $1, 2, dots, N$,那么总共有 $N!$ (N的阶乘) 种不同的排列方式。并且,每种排列方式出现的概率是相等的,都是 $1/N!$。
逆序数可能的取值
我们知道,对于 $N$ 个互异的数,最小的逆序数是多少?当数组是升序排列的时候,比如 $[1, 2, 3, dots, N]$,这时没有任何一对元素的顺序是颠倒的,所以逆序数是 0。
最大的逆序数是多少?当数组是降序排列的时候,比如 $[N, N1, dots, 2, 1]$,这时每一对元素都是逆序对。对于 $N$ 个数,总共有 $N(N1)/2$ 对元素。所以,最大的逆序数就是 $N(N1)/2$。
所以,一个长度为 $N$ 的随机排列的逆序数,可以取从 0 到 $N(N1)/2$ 之间的任何一个整数值。
分布的“公式”
我们寻找的是“分布公式”。这通常意味着我们想知道,对于一个特定的逆序数 $k$,有多少种排列会产生这个逆序数,或者说,一个随机排列的逆序数恰好是 $k$ 的概率是多少。
问题在于,对于一般的 $N$,并没有一个简洁的“公式”可以直接给出任何一个 $k$ 对应的概率。
这不像某些分布,比如二项分布,你可以直接写出 $P(X=k) = inom{n}{k} p^k (1p)^{nk}$。
然而,我们可以通过以下几种方式来描述或理解这个分布:
1. 生成函数(Generating Functions):
这是描述这种组合计数问题的强大工具。
假设 $A_N(x)$ 是一个多项式,其中 $x^k$ 的系数表示恰好有 $k$ 个逆序的 $N$ 个元素的排列的数量。
那么,$A_N(x)$ 被称为 $N$ 的逆序数生成函数。
对于 $N=1$,排列是 $[1]$,逆序数是 0。$A_1(x) = 1$。
对于 $N=2$,排列有 $[1, 2]$ (0逆序),$[2, 1]$ (1逆序)。$A_2(x) = 1 + x$。
对于 $N=3$,排列有:
$[1, 2, 3]$ (0逆序)
$[1, 3, 2]$ (1逆序)
$[2, 1, 3]$ (1逆序)
$[2, 3, 1]$ (2逆序)
$[3, 1, 2]$ (2逆序)
$[3, 2, 1]$ (3逆序)
所以,$A_3(x) = 1 + 2x + 2x^2 + x^3$。
人们发现,这个生成函数有一个非常优美的递归关系:
$A_N(x) = (1 + x + x^2 + dots + x^{N1}) A_{N1}(x)$
或者更简洁地写成:
$A_N(x) = frac{1x^N}{1x} A_{N1}(x)$
结合 $A_1(x) = 1$,我们可以推导出:
$A_N(x) = prod_{i=1}^N (1 + x + x^2 + dots + x^{i1})$
$A_N(x) = prod_{i=1}^N frac{1x^i}{1x}$
$A_N(x) = frac{(1x)(1x^2)dots(1x^N)}{(1x)^N}$
这个 $A_N(x)$ 的展开式,其中 $x^k$ 的系数就是有多少种排列的逆序数是 $k$。
因此,一个随机排列的逆序数为 $k$ 的概率是:
$P( ext{逆序数} = k) = frac{[x^k]A_N(x)}{N!}$
其中 $[x^k]A_N(x)$ 表示多项式 $A_N(x)$ 中 $x^k$ 的系数。
这就是描述分布的“公式”——通过生成函数来定义。 不过,直接从这个公式计算出某个特定 $k$ 的系数,对于大的 $N$ 来说,手动计算是非常困难的。
2. 渐进分布(Asymptotic Distribution):
当 $N$ 变得非常大时,逆序数的分布会趋于一个已知的连续概率分布。
期望值(Mean):
随机排列的平均逆序数是 $N(N1)/4$。
方差(Variance):
随机排列的逆序数方差是 $N(N1)(2N+5)/72$。
正态近似(Normal Approximation):
当 $N$ 足够大时,根据中心极限定理的思路,如果我们将逆序数进行适当的标准化(减去均值,除以标准差),它的分布会近似于一个标准正态分布。
设 $I_N$ 是长度为 $N$ 的随机排列的逆序数。
$Z_N = frac{I_N E[I_N]}{sqrt{ ext{Var}(I_N)}}$
当 $N o infty$ 时,$Z_N$ 的分布趋向于标准正态分布 $N(0, 1)$。
这意味着,对于一个大的 $N$,我们可以用正态分布来近似计算某个范围内的逆序数出现的概率。例如,一个随机排列的逆序数落到 $(N(N1)/4 delta, N(N1)/4 + delta)$ 这个区间的概率,可以用正态分布的累积分布函数来估计。
所以,从统计的“分布公式”角度来看,渐进的正态分布是一个非常重要的描述。
3. 特定分布的名称:
这个分布被称为马尔可夫生成分布(Markov's Generating Distribution),或者有时也称为随机排列的逆序数分布。虽然没有一个单一的、简单的代数公式来给出任意 $k$ 的概率,但其生成函数是确定性的。
总结一下
精确描述(通过生成函数):
一个长度为 $N$ 的随机排列的逆序数 $k$ 的出现次数(也是精确概率的分子)由生成函数 $A_N(x) = prod_{i=1}^N frac{1x^i}{1x}$ 中 $x^k$ 的系数给出。总排列数是 $N!$。
近似描述(当 $N$ 很大时):
逆序数的分布可以用均值为 $N(N1)/4$、方差为 $N(N1)(2N+5)/72$ 的正态分布来近似。
所以,如果你需要一个“公式”,那么生成函数是精确的定义。如果你需要一个更实用的、能让你计算概率的工具(尤其是在 $N$ 很大时),那么正态近似是你的选择。没有一个像二项分布那样简单的封闭形式的概率质量函数(PMF)来直接描述 $P( ext{逆序数}=k)$。
打个比方: 想象你有一堆不同大小的积木,你要随机地把它们叠起来。逆序数就像是“有多少个积木下面压着比它大的积木”。你可以计算出平均情况是多少,也能知道最极端的情况(全反着叠),但要知道“正好有 5 个这样的情况”具体有多少种组合,就需要一种更复杂的数学工具,像生成函数这样的,来系统地记录所有可能性。当积木非常非常多的时候($N$ 很大),这种“混乱”的程度(逆序数)会趋于一个非常稳定的、可以预测的模式,就像正态分布一样。