1. 程式人生 > 其它 >一類約化解空間法在演算法競賽中的應用

一類約化解空間法在演算法競賽中的應用

約化解空間法(Reducing Solution Space)是一類通過減小列舉量從而有效降低時間複雜度的演算法。在演算法競賽中,這種演算法通常被冠以貪心(Greedy)的名字,且不太常見,對選手思維的要求較高。而本文旨在形式化地探討這種方法以及其具體應用。而約化解空間的名字來源於泛函分析中不變子空間[1]的概念。

約化解空間法(Reducing Solution Space)是一類通過減小列舉量從而有效降低時間複雜度的演算法。在演算法競賽中,這種演算法通常被冠以貪心(Greedy)的名字,且不太常見,對選手思維的要求較高。而本文旨在形式化地探討這種方法以及其具體應用。而約化解空間的名字來源於泛函分析中不變子空間[1]的概念。

注意本文中所有關於解空間的名詞命名均為本文新定義,若有更好的命名方式請聯絡筆者。

1 Introduction

在泛函分析中不變子空間問題是一個著名的懸而未決的問題,它有時也被樂觀地稱為不變子空間猜想[1]:

給定一個維度大於 \(1\) 的復希爾伯特空間[2] \(H\),以及一個有界運算元 \(f:H\rightarrow H\)

,問是否存在一個 \(H\) 的非平凡子空間 \(W\)(\(W\neq H\)\(W \neq \{0\}\)) 使得 \(f(W)\subseteq W\)

滿足上述條件的子空間 \(W\) 被稱為 \(H\) 關於 \(f\) 的不變子空間。

將不變子空間的概念推廣到解空間上則有:

Remark 1.1 設組合問題 \(P\) 的解空間為 \(S\),設存在一個有界運算元 \(f:S\rightarrow S\),若 \(T \subseteq S\),且 \(f(T)\subseteq T\),則稱 \(T\)\(S\) 關於 \(f\) 的一個不變子解空間

考慮一種特殊的不變子解空間:

Remark 1.2 設組合問題 \(P\) 的解空間為 \(S\),設存在一個有界運算元 \(f:S\rightarrow S\),若 \(T \subseteq S\),且 \(f(T)=T\),則稱 \(T\)\(S\) 關於 \(f\) 的一個最簡不變子解空間

注意到若 \(T_1\)\(T_2\)\(S\) 關於 \(f\) 的最簡不變子解空間,則 \(T_1\cup T_2\) 也是 \(S\) 關於 \(f\) 的最簡不變子解空間,於是有:

Theorem 1.1 對於解空間 \(S\) 與有界運算元 \(f:S\rightarrow S\),存在唯一的 \(S\)

關於 \(f\) 的最簡不變子解空間 \(T_m\),對於 \(\forall T\)\(S\) 關於 \(f\) 的最簡不變子解空間有 \(T\subseteq T_m\)

Remark 1.3 我們稱 \(T_m\)\(S\) 關於 \(f\) 的最大最簡子解空間,或約化子解空間,記作 \(T_m=f_m(S)\)

為了讓約化子解空間在組合問題中得到應用,我們需要對運算元 \(f\) 做出一定的限制。

Remark 1.4 對於組合問題 \(P\),在其解空間 \(S\) 上有一個代價函式 \(g:S\rightarrow K\),其中 \(K\) 是一個全序集,若有界運算元 \(f:S\rightarrow S\) 滿足對 \(\forall x \in S\) \(g(f(x))\le g(x)\)\(\forall x \in S\) \(g(f(x))\ge g(x)\),則稱 \(f\) 是關於組合問題 \(P\) 的一個約化運算元。其中,若 \(g(f(x))\le g(x)\) 則稱 \(f\)最小化約化運算元,反之則稱為最大化約化運算元

於是我們獲得瞭解決組合問題的一個有力工具:

Theorem 1.2 若組合問題 \(P\) 的解空間為 \(S\),代價函式為 \(g:S\rightarrow K\)\(K\) 為全序集。若 \(f\)\(P\) 的一個最小化約化運算元,則有 \(\min\limits_{x\in S}\{g(x)\}=\min\limits_{x\in f_m(S)}\{g(x)\}\);若 \(f\)\(P\) 的一個最大化約化運算元,則有 \(\max\limits_{x\in S}\{g(x)\}=\max\limits_{x\in f_m(S)}\{g(x)\}\)

由此,我們通過約化運算元 \(f\) 將組合問題的解空間 \(S\) 約化到了 \(f_m(S)\)。只要恰當地選取運算元,\(f_m(S)\) 通常可以獲得比 \(S\) 更小的空間或者更優的結構,方便進一步列舉、貪心或 DP。

2 Application

2.1 約化解空間法在組合最優化問題中的應用例項

Example 2.1.1 來源 Luogu6832:給定一個字串 \(s\),求其出現次數最多的子串的出現次數。

本題解空間可以描述為 \(S=\Sigma *\),代價函式 \(g:S\rightarrow \mathbb{N}\),表示串在 \(s\) 中的出現次數。

\(f:S\rightarrow S\)\(f(x)\) 表示 \(x\) 的任一非平凡子串,顯然有 \(g(f(x))\ge f(x)\)。所以 \(f\)\(S\) 最大化約化運算元。

\(f_m(\Sigma *)=\Sigma\),所以該問題答案為 \(\max\limits_{x\in \Sigma}(g(x))\)

可以很簡單地 \(O(|S|)\) 求解。

Emample 2.1.2 來源 ICPC 2021 Jiangxi:

2.2 約化解空間法在組合存在性問題中的應用例項

Example 2.2.1 來源 XXI Open Cup. Grand Prix of Korea Problem.B:給定陣列 \(\{a_n\}\)\(\{b_m\}\),矩形平面網格的權值為 \(C_{i,j}=A_i+B_j\)。運動員每次只能向右或向下走一格,不能經過 \(C_{i,j}<0\) 的格子。問存在多少對 \((i,j)\) 使得存在至少一條路徑可以從 \((i,1)\) 走到 \((j,m)\)

考慮每一對 \((i,j)\) 是否存在路徑,問題可以轉化為是否存在一個能阻隔所有路徑的位置集合,其上權值均小於 \(0\)。所以解空間是 \(S=\{p能阻斷路徑|p\in 2^{\{(x,y)|i\le x\le j,1\le y\le m\}}\}\)。而代價函式 \(g:S\rightarrow \{0,1\}\)\(g(x)=\prod\limits_{(p,q)\in x}[c_{p,q}<0]\)

構造運算元 \(f_1\)。若阻隔點集合為 \(x\),令 \((m_x,p_m)=\min\limits_{(p,q)\in x}\{(A_p,p)\}\)\(y\)\(\bigcup\limits_{(p,q)\in x}(p_m,q)\cup x\)\(f_1(x)=y\)。若 \(g(x)=1\)\(\forall (p,q) \in x\)\(A_p+B_q<0\) 所以 \(\forall (p,q) \in x\)\(m_x+B_q<0\),所以 \(g(y)=1\),所以 \(f_1\) 是最大化約化運算元。

構造運算元 \(f_2\)。若阻隔點集合為 \(x\),令 \((m_y,q_m)=\min\limits_{(p,q)\in x}\{(B_q,q)\}\)\(y\)\(\bigcup\limits_{(p,q)\in x}(p,q_m)\cup x\)\(f_2(x)=y\)。同理可證 \(f_2\) 是最大化約化運算元。

構造運算元 \(f_3\)。若阻隔點集合為 \(x\)\(y=x-\bigcup\limits_{(p,q)\in x,p\neq p_m,q \neq q_m}(p,q)\)\(f_3(x)=y\)。由於 \(y\subseteq x\),所以 \(g(y)\ge g(x)\)\(f_3\) 是最大化約化運算元。

然後構造 \(f_4,f_5,f_6,f_7\) 分別表示刪除 \(x\) 最上,最下,最左,最右的一個點,顯然均是最大化約化運算元。

所以最終 \((S)f_1f_2f_3f_4f_5 f_6f_7=\{矩形(i,1)-(j,m)中所有的行和列以及包住起點或終點的 L 形\}\)

於是列舉量大大減小,最後結合一些二分優化可以做到 \(O(n\log n)\)

References

  1. 不變子空間問題,維基百科
    https://zh.wikipedia.org/wiki/不變子空間問題
  2. 希爾伯特空間,維基百科
    https://zh.wikipedia.org/wiki/希爾伯特空間