逆序对

维基百科,自由的百科全书
跳转至: 导航搜索
一個排列逆序對的突顯,它可以由序位(2,4)或對位元素(5,2)表示。

设A为一个有n个数字有序集(n>1),其中所有数字各不相同。

如果存在正整數i, j使得1 ≤ i < j ≤ n而且A[i] > A[j],則<A[i], A[j]>這一個有序對稱為A的一個逆序對,也称作逆序。逆序對的數量称作逆序数。

例如:数组<2,3,8,6,1>的逆序对为:<2,1> <3,1> <8,1> <8,6> <6,1>共5个逆序对。

对于<2,1>:1 ≤ 1 < 5 ≤ 5 ,A[1] >A[5],所以<A[1],A[5]>为一个合法的逆序对。

目前求逆序对数目比较普遍的方法是利用归并排序做到时间复杂度

当然,也可以利用树状数组、线段树来实现这种基础功能。复杂度均为


定義[编辑]

逆序[编辑]

為一個排列,如果而且, 這個序位或這一對元素被稱為是的一個逆序。通常逆序是對於排列的定義,但也可以用於序列

是一個序列(或多重排列)。如果而且, 這個序位或這對元素被稱為是的一個逆序。

對於根據元素組成的序列,逆序的定義不是唯一的,因為不同的序位上可能有相同的值對。逆序集是所有逆序的集合。一個排列依其序位而定義的逆序集是,它的反向排列依其序位而定義的逆序集,反之亦然,只是交換了配對的元素。

逆序數[编辑]

逆序數是逆序集的基數,它常用於量度排列或序列的已排序程度。

在一個排列的箭頭指向圖中,它是箭頭指向相交叉的數,也是從自指(identity)排列而得到的Kendall tau距離,以及每個反向相關向量的和,如下列定義。

對於逆序數,依序位或依元素而定義的分別並不重要,因為排列及其反向排列都具有相同的逆序數。

其它測量(預先)排序程度的方式,包括了為排好序列而從序列中可以刪除元素的最小數量,對序列所“進行”排序的次數和長度,每個元素在已排序位置之上的距離總和(Spearman footrule),以及排序過程中必需的最少交換次數。比較排序算法計算逆序數的時間為O(n log n)

相關聯的逆序向量[编辑]

有三個類似的向量用於將排列的逆序,壓縮到確定唯一的向量中。它們通常被稱為逆序向量Lehmer碼。本文將逆序向量記為(),其它的兩個向量有時分別稱為逆序向量;為了避免與前面的逆序向量混淆,本文將另兩個分別稱為左逆序計數右逆序計數。左逆序計數是以反向colexicographic次序的排列,右逆序計數則是以字典次序的排列。

Rothe diagram

逆序向量: 依據元素的定義,是較小(右)分量為的逆序數。是在之中的之前,元素較大的數量。

左逆序計數: 依據位置的定義,是較大(右)分量為的逆序數。是在之中的之前,元素較大的數量。

右逆序計數,通常稱為Lehmer碼: 依據位置的定義,是較小(左)分量為i的逆序數。之中的之後,元素較小的數量。

Rothe圖可以協助找出。Rothe圖是以黑點來表示1的排列矩陣,每一個位置上若為逆序(通常以叉號表示)則在其右側與下方即有一點。是圖中第列排列逆序的加總,而欄中排列逆序的加總。排列矩陣的倒反即是此矩陣的轉置,因此某一排列的即是它轉置的,反之亦然。

範例:四個元素的全部排列[编辑]

四個元素可能的6種排列

下面可排序表顯示了四個元素的集合,它的逆序集會有不同位置的24種排列、逆序相關向量和逆序數(右欄是它的反向排列,用於以colex排序)。可以看出的位數總是相同,而與位逆序集有關。 最右側欄是排列左上右下對角線的總和,如三角形圖示,以及r是左下右上對角線的總和(配對在下降對角線中其右側都是2,3,4組成,而在上升對角線中的左側都是1,2,3組成)。 此表中的預設排序是反向colex次序,這與的colex次序相同。的字典序與的字典序相同。

排列的弱次序[编辑]

对称群的Permutohedron S4

n物品排列的集合其部份次序的結構,稱為排列的弱次序,而構成。 以逆序集的子集關係繪出的哈斯圖,則構成了稱為permutohedron的骨架。 如果依位置將某一排列分配給每個逆序集,所得到的排序是permutohedron的次序,其中的邊對應於連續兩元素的交換。這是排列的弱排序。The identity is its minimum, and the permutation formed by reversing the identity is its maximum. 如果依元素將某一排列分配給每個逆序集,所得到的排序將是凱萊圖的次序,其中的邊對應於連續兩元素的交換。對稱組的凱萊圖與其permutohedron相似,但是每個排列由其反向替換。

另見[编辑]

參考[编辑]