擬陣學習筆記


擬陣學習總結

By Tuifei_oier

Part 1 定義

首先給出一些基本的定義:

一、子集系統

給定二元組 \(M=(S,I)\),若滿足以下條件:

  1. \(S\) 為一個有限集。
  2. \(I\) 為一個元素為 \(S\) 的子集的有限非空集,空集屬於 \(I\)
  3. \(\forall A\in I,B\subseteq A\) 滿足 \(B\in I\)

則稱 \(M\) 為一個子集系統。
其中,第三條性質一般稱為遺傳性。
特別地,稱 \(I\) 中元素為獨立集。
稱一個集合 \(A\) 為極大獨立集,當且僅當 \(\forall x,A\cup\{x\}\notin I\),也稱極大獨立集為基。
定義秩函數 \(r(U)\)\(U\) 中最大獨立集的大小,事實上,通過秩函數的性質,我們可以反過來推導出原子集系統的性質,例如:證明其為一個擬陣。

二、擬陣

給定一個子集系統 \(M=(S,L)\),若滿足:

\(\forall A\in L,B\in L,|A|<|B|,\exist\;x\in B-A\),滿足 \(A\cup\{x\}\in L\)

則稱 \(M\) 為一個擬陣。
其中,該性質一般稱為交換性。

三、對偶擬陣

\(M^*\)\(M=(S,I)\) 的對偶擬陣,即 \(M^*=(S,I^*)\),其中 \(I^*=\{x:\) 存在 \(M\) 中的一個極大獨立集 \(A\subseteq S\backslash x\}\)

以及,我們可以定義一系列擬陣的運算:

  1. 刪除:對於 \(M=(S,I),Z\subseteq S\),定義 \(M\backslash Z\)\(M\) 刪除子集 \(Z\) 的擬陣,即 \(M\backslash Z=(S\backslash Z,I')\),其中 \(I'\) 的定義與 \(I\) 類似,實質是把原來的 \(S\) 變為 \(S\backslash Z\),其他的定義不變。
  2. 收縮:對於 \(M=(S,I),Z\subseteq S\),定義 \(M/Z\)\(M\) 關於子集 \(Z\) 收縮后的擬陣,即 \(M/Z=(M^*\backslash Z)^*\),可以證明收縮的意義為 \(M/Z\) 的任意一個獨立集並上 \(Z\) 中的任意一個獨立集后仍然是原 \(M\) 中的一個獨立集,可以利用秩函數來研究它。

事實上,這兩個運算一般用於證明擬陣。


Part 2 性質

擬陣有一些優美的性質:

  1. 次模性:\(r(A\cup B)+r(A\cap B)\le r(A)+r(B)\)
  2. 擬陣 \(M=(S,I)\)\(I\) 中的所有極大獨立集大小相等。

當然,並不止這些,它最適用於我們的性質將在下文提到。

一些經典的擬陣:

  1. 均勻擬陣 \(U^k_n=(S,I)\),其中 \(|S|=n,I=\{x\subseteq S:|x|\le k\}\),不難證明這是一個擬陣。

  2. 圖擬陣:對於無向圖 \(G=(V,E)\),令 \(M=(E,I),I=\{x\subseteq E:x\) 無環 \(\}\),則 \(M\) 為擬陣,證明如下:

    1. 遺傳性證明顯然;
    2. 對於交換性,由 \(|A|<|B|\)\(A\) 連成的連通塊數量大於 \(B\),因此一定存在一個 \(A\) 中不連通而 \(B\) 中連通的塊,加入該邊即可。

    需要注意的是,對於有向圖是不成立的。

  3. 匹配擬陣:對於無向圖 \(G=(V,E)\),匹配擬陣 \(M=(V,I),I=\{x\subseteq V:x\) 中所有點可被至少一個匹配完全覆蓋 \(\}\),證明略去。

  4. 連通擬陣:對於無向圖 \(G=(V,E)\),考慮刪邊角度,連通擬陣 \(M=(E,I),I=\{x:\) 刪除 \(x\) 中邊后圖連通 \(\}\),不難證明其為擬陣(類似圖擬陣)。事實上,連通擬陣就是圖擬陣的對偶擬陣。


Part 3 OI 應用

在 OI 中,擬陣目前有兩種常用用法:

一、擬陣與貪心

對於擬陣 \(M=(S,I)\),給定一個函數 \(w:S\rightarrow N^*\),定義 \(S\) 一個子集的權值 \(w(x)=\sum_{e\in x}w(e)\),擬陣的最優化問題即找一個最大的 \(w(x)\) 滿足 \(x\in I\)

如果可以證明一個組合優化問題本質是擬陣的最優化問題,就可以套用下面的貪心算法來求解:

  1. \(S\) 中元素 \(e\)\(w(e)\) 從大到小排序。
  2. 維護集合 \(A\),初始為空集, 依次考慮每個 \(e\),如果 \(A\cup\{e\}\in I\),則 \(A\gets A\cup\{e\}\),最后答案即為 \(w(A)\)

證明略過,讀者自證(查資料)不難。

以下是一些可以被證明等價於擬陣最優化問題的問題:

  1. 最小/大生成樹。
  2. 二分圖匹配。

只要構造出擬陣,問題就可以被大大簡化了。

二、擬陣交

首先定義擬陣交。

對於兩個擬陣 \(M_1=(S,I_1),M_2=(S,I_2)\),稱集合 \(A=\{x:x\in I_1\)\(x\in I_2\}\) 為擬陣 \(M_1,M_2\) 的交。
此時,我們就有兩種最優化問題:

  1. \(A\) 中的最大獨立集。
  2. 定義函數 \(w:S\rightarrow N^*\),求 \(A\) 中權值最大的獨立集的權值。

對於兩種問題,我們有一個相同的算法來求解,先介紹求 \(A\) 種最大獨立集的算法。

  1. 初始有一個集合 \(A=\emptyset\)

  2. 每次將屬於 \(A\) 的元素放在左部點,將屬於 \(S\backslash A\) 的元素放在右部點,同時新建起點 \(s\) 和終點 \(t\),按以下方式連邊:

    a. 對於右部點 \(y\),如果滿足 \(A\cup\{y\}\in I_1\),由 \(s\)\(y\) 連邊;如果滿足 \(A\cup\{y\}\in I_2\),由 \(y\)\(t\) 連邊。

    b. 對於左部點 \(x\) 和右部點 \(y\),如果滿足 \(A\backslash\{x\}\cup\{y\}\in I_2\),由 \(y\)\(x\) 連邊;如果滿足 \(A\backslash\{x\}\cup\{y\}\in I_1\),由 \(x\)\(y\) 連邊。

  3. 之后,每次找一條從 \(s\)\(t\) 的最短路,將該路徑上原本屬於 \(A\) 的元素從 \(A\) 中刪除,不屬於 \(A\) 的元素加入 \(A\)(稱該操作為增廣),然后重新建圖,直至不存在最短路。

  4. 此時 \(A\) 即為擬陣交中的一個最大獨立集。

算法的正確性在此略去證明,大致可以發現每次增廣后 \(|A|\) 恰好 \(+1\)
\(r=max(r_1(S),r_2(S)),n=|S|\),則增廣次數不超過 \(r\),每次增廣的復雜度為 \(O(rn)\),於是復雜度為 \(O(r^2n)\)

對於第二個問題,我們使用與上文類似的算法:每個節點賦點權,左部點的權值為 \(-w(e)\),右部點的權值為 \(w(e)\),然后將\(s\)\(t\) 的最短路改為\(s\)\(t\) 的最大點權路徑,在此基礎上盡可能短即可,此時由於存在負點權,使用 spfa,時間復雜度為 \(O(r^2n^2)\)(當然也可以是 \(O(r^2nk)\),雖然但是,\(k=n\))。
事實上可以證明,每次增廣后的 \(A\) 都是大小為 \(|A|\) 時的一個最優解。


Part 4 例題

Pro A Rainbow Graph

給定一張 \(n\) 個點 \(m\) 條邊的無向圖,每條邊有三種顏色 R,G,B 之一,同時帶有邊權 \(w_i\),選擇恰好 \(k\) 條邊使得分別保留選出邊中顏色為 R,G 的邊和顏色為 G,B 的邊時,都使得所有點連通,同時選出的 \(k\) 條邊的邊權和最小,對於 \([1,m]\) 每一個 \(k\) 求出最小權值和。

\(tips:1\le n,m\le100,1\le w_i\le1000\)

Pro B Colorful Graph

給定一張 \(n\) 個點 \(m\) 條邊的無向圖,每條邊有兩個屬性:\(w_i\) 表示邊權,\(c_i\) 表示顏色。
選出一個邊集,滿足:

  1. 該邊集連通所有點;
  2. 每種顏色在邊集中至少出現一次;

求最小的邊集權值和。

\(tips:1\le n\le m\le200,1\le c_i\le m,1\le w_i\le10^9\)

Pro C 二分圖匹配

給定二分圖 \(G=(V,E)\),其中 \(V=V_1+V_2\),求最大匹配。


Part 5 例題題解

Pro A

設 R,G,B 顏色邊集分別為 \(E_R,E_G,E_B\),則構造連通擬陣 \(M_1=(E_R+E_G,I),M_2=(E_G+E_B,I)\),然后帶權擬陣交即可,由於每次增廣后當前 \(A\) 都是大小為 \(|A|\) 時的一個最優解,直接將當前的 \(w(A)\) 作為 \(Ans_{m-|A|}\) 即可。

時間復雜度 \(O(r^2n^2)\)

Pro B

構造擬陣 \(M_1\) 為連通擬陣,\(M_2=(E,I),I=\{x:\) 每種顏色在 \(x\) 中都沒有全部出現 \(\}\),則直接求帶權擬陣交即可。

Pro C

考慮構造 \(M_1=\{E,I_1\},I_1=\{x:V_1\) 中所有點在圖 \((V,x)\) 中度數 \(\le1\}\),類似定義 \(M_2\),然后最大擬陣交即可。


Part 6 后記

咕了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM