排列对换操作对逆序对的影响

排列的一个对换必改变原排列逆序对奇偶性 的证明

Proof.

对一个数列,我们知道其 逆序对 可以按照如下方式计算:
∑ i = 1 n ∑ j = 1 i − 1 [ a j > a i ] (*) \sum _{i = 1} ^ n\sum_{j = 1} ^ {i - 1}[a_j >a_i] \tag{*} i=1nj=1i1[aj>ai](*)

不妨假设原数列为 a 1 , a 2 , a 3 , … a I , . . . a J … a n a_1, a_2, a_3, \dots \textcolor {red} {a_{I}}, ... \textcolor {red} {a_{J}} \dots a_n a1,a2,a3,aI,...aJan

我们对 a I , a J a_I, a_J aI,aJ 做一次对换,并按照 ( ∗ ) (*) () 式计算其逆序对改变量 Δ \Delta Δ,为了不引起混淆 我们记 x = a I , y = a J x = a_I, y=a_J x=aI,y=aJ

对于 { 1 , 2 , . . . I − 1 } \{1, 2, ... I - 1\} {1,2,...I1} 位置,前后未发生变化 Δ i = 0 \Delta_i = 0 Δi=0

对于 { I } \{I\} {I} 位置, a I → a J a_I \to a_J aIaJ
Δ I = − ∑ i = 1 I − 1 [ a i > x ] + ∑ i = 1 I − 1 [ a i > y ] \Delta_I = -\sum_{i = 1} ^ {I - 1} [a_{i} > x] + \sum_{i = 1} ^ {I - 1} [a_i > y] ΔI=i=1I1[ai>x]+i=1I1[ai>y]
对于 { I + 1 , I + 2 , . . . J − 1 } \{I + 1, I + 2, ... J - 1\} {I+1,I+2,...J1} 位置,其前方只有 I I I 位置发生变化
Δ i = − [ x > a i ] + [ y > a i ] \Delta_i = -[x > a_i] + [y > a_i] Δi=[x>ai]+[y>ai]

对于 { J } \{J\} {J} 位置, a J → a I a_J \to a_I aJaI
Δ J = − ( [ x > y ] + ∑ [ 1 , I ) ∪ ( I , J ) [ a i > y ] ) + ( [ y > x ] + ∑ [ 1 , I ) ∪ ( I , J ) [ a i > x ] ) \Delta_J = - ([x > y] + \sum_{[1, I) \cup(I, J)} [a_i > y]) + ([y>x] + \sum_{[1, I) \cup (I, J)} [a_i > x]) ΔJ=([x>y]+[1,I)(I,J)[ai>y])+([y>x]+[1,I)(I,J)[ai>x])
对于 { J + 1 , J + 2 , . . . , n } \{J + 1, J + 2, ..., n\} {J+1,J+2,...,n} 位置,其前方整体贡献未发生变化 Δ i = 0 \Delta_i = 0 Δi=0

逆序对总变化量
Δ = ∑ i = 1 n Δ i = − ∑ i ∈ [ 1 , I ) [ a i > x ] + ∑ i ∈ [ 1 , I ) [ a i > y ] + ∑ i ∈ ( I , J ) ( − [ x > a i ] + [ y > a i ] ) − [ x > y ] − ( ∑ i ∈ [ 1 , I ) ∪ ( I , J ) [ a i > y ] ) + [ y > x ] + ∑ i ∈ [ 1 , I ) ∪ ( I , J ) [ a i > x ] = [ y > x ] − [ x > y ] + ∑ i ∈ ( I , J ) ( [ a i > x ] − [ x > a i ] − [ a i > y ] + [ y > a i ] ) \begin{aligned} \Delta &= \sum_{i = 1} ^ n\Delta_i \\ & = \textcolor {red} {-\sum_{i \in [1, I)} [a_{i} > x]} + \textcolor {blue} {\sum_{i \in [1, I)} [a_i > y] }+ \sum_{i \in (I, J)} (-[x > a_i] + [y > a_i]) - [x > y] \\ & \textcolor {blue} { - (\sum_{i \in [1, I) \cup(I, J)} [a_i > y])}{} + [y>x] + \textcolor {red} {\sum_{i \in [1, I) \cup (I, J)} [a_i > x]}\\ & = [y>x]-[x>y] + \sum_{i\in(I, J)} ([a_i>x]-[x>a_i]-[a_i>y]+[y>a_i]) \end{aligned} Δ=i=1nΔi=i[1,I)[ai>x]+i[1,I)[ai>y]+i(I,J)([x>ai]+[y>ai])[x>y](i[1,I)(I,J)[ai>y])+[y>x]+i[1,I)(I,J)[ai>x]=[y>x][x>y]+i(I,J)([ai>x][x>ai][ai>y]+[y>ai])
注意到 a i a_i ai 是一个排列,故 x , y ∉ { a I + 1 , . . . a J − 1 } x, y \not\in \{a_{I + 1}, ... a_{J - 1}\} x,y{aI+1,...aJ1}

我们令 N = J − I − 1 , X = ∑ i ∈ ( I , J ) [ a i > x ] , Y = ∑ i ∈ ( I , J ) [ a i > y ] N = J - I - 1, X = \sum_{i\in (I, J)} [a_i>x], Y = \sum_{i\in(I,J)} [a_i>y] N=JI1,X=i(I,J)[ai>x],Y=i(I,J)[ai>y]
Δ = [ y > x ] − [ x > y ] + ( 2 X − N ) + ( N − 2 Y ) = [ y > x ] − [ x > y ] + 2 ( X − Y ) \Delta = [y>x]-[x>y] + (2X - N) + (N - 2Y) \\ =[y>x]-[x>y]+2(X-Y) Δ=[y>x][x>y]+(2XN)+(N2Y)=[y>x][x>y]+2(XY)
由此 Δ \Delta Δ 必为奇数,故对换必然改变原数列逆序对奇偶性。


另一种想法:

注意到交换相邻元素逆序对的改变量只能为 1 或 -1

swap ( a I , a J ) \text{swap} (a_I, a_J) swap(aI,aJ) 这个操作等价于进行 ( J − I − 1 ) + ( J − I ) = 2 ( J − I ) − 1 (J - I - 1) + (J - I) = 2(J- I) - 1 (JI1)+(JI)=2(JI)1 次交换相邻的操作

故逆序对改变量必为奇数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值