1. 程式人生 > 其它 >2021/10/3(偏序)

2021/10/3(偏序)

引言

資訊學競賽中有個很經典的問題——偏序問題。

可能很多人並沒有聽說過什麼是偏序問題,但大多應該都聽說過逆序對和最長上升子序列問題。這兩個問題都是偏序問題的一種。

先來理解下偏序關係的定義。

定義

偏序關係

設R是集合A上的一個二元關係,若R滿足:

  1. 自反性:對任意xA,有xRx
  2. 反對稱性(即反對稱關係):對任意x,yA,若xRy,且yRx,則x=y
  3. 傳遞性:對任意x,y,zA,若xRy,且yRz,則xRz。

則稱R為A上的偏序關係,通常記作≼。

這一系列數學定義可能比較難懂,但如果你把小於等於號帶入這個R就容易明白了,這個定義就是誕生在小於等於號上的,當然他不僅是代表小於等於號,數學將這些概念抽象化就是為了提煉出更加普適性的概念。比如集合的包含關係也是一種偏序關係,帶入這3個定義,顯然都可以滿足。 同理,我們給小於號也下一個定義。它和小於等於相似但又有不同,我們稱之為嚴格的偏序關係,相對應上面的稱之為非嚴格的偏序關係。

給定集合S,“<”是S上的
二元關係
,若“<”滿足:

  1. 反自反性:∀a∈S,有a≮a;

  2. 非對稱性:∀a,b∈S,a<b ⇒ b≮a;

  3. 傳遞性:∀a,b,c∈S,a<b且b<c,則a<c;

則稱“<”是S上的嚴格偏序或反自反偏序。

與非嚴格的偏序關係不同的地方就是沒有反對稱性,取而代之的是非對稱性。上面寫的包含關係是一種偏序關係,更準確的說,包含關係是非嚴格的偏序關係,而真包含是嚴格的偏序關係。

全序關係

偏序和全序是公里集合論中的概念,全序關係是偏序關係的一個子集,如果是全序關係那必然是偏序關係,全序關係在全序關係上增加了一個完全性。

設R是集合A上的一個二元關係,若R滿足:
  1. R是集合A上的一個偏序關係。
  2. 完全性:對任意x∈A,y∈A,存在 (x,y)∈R或(y,x)∈R

在實數集上的大於小於號等大小關係,更準確的說應該屬於一種全序關係,因為實數集上所有的數都能比較。但如果將數域擴充套件到複數域,複數域中的部分數是不能比較的,所以複數域中的大於小於號等大小關係是偏序關係而不是全序關係。同樣的,集合之間的包含關係也不是全序關係,因為兩集合可以處於不包含也不被包含的互相獨立的狀態。

正文

偏序問題

定序列A,其中有序對(Ai,Aj),滿足 i<j 且Ai<Aj這樣的有序對我們稱之為逆序對

資訊學競賽中的逆序對問題,一般是要我們計數給出序列的逆序對個數的總和。

其實可以把它看成一個特殊的二維偏序問題,或者說是離散化x座標的二維偏序問題。

我們把給定的序列A,加上一個編號,變成一個二元組,即A1-->(A1,1),A2-->(A2,1)Ai-->(Ai,i)。存在兩個二元組(a,b),(c,d),滿足 a > c 且 b < d 的個數。我們將二元組放在一個二維空間中,二元組(x,y)表示座標為(x,y)的點,此時我們就會發現實際上逆序對問題,就是一種二維偏序問題。

何為二維偏序問題? 在二元組中定義一種偏序關係R,統計R集合中元素的個數。

比如逆序對問題,定義的關係就是:兩個二元組(a,b),(c,d),滿足 a > c 且 b < d 。易知它滿足偏序關係的3個定義,並且任意的兩個二元組也不都有關係,所以就不是全序,當然由於逆序對問題一般不會出現重複的數字,所以前兩個定義需要特別判斷,但它可以滿足最後的也是最重要的一條性質——傳遞性。也正是因為傳遞性我們才能使用各種演算法來解決它們。

在資訊學競賽中我們解決逆序對使用的是,線段樹或歸併排序,實際上這裡的歸併排序就是cdq分治,實際上都是使用的分治法。

這兩種方法本質上相同,都是通過排序解決一個維度的問題,然後再使用分治快速處理另外一個維度的問題。