從矩陣向量與圖論的角度理解matriod擬陣與貪心算法

前兩天算法課上講到貪心,老師順便提到了擬陣。
這個詞很有意思,中英文都可以看到矩陣的影子,但似乎又不是一般的矩陣。
擬陣Matroid的概念由Haussler Whitney在1935年提出,創建了矩陣中 線性無關(linear independence) 與其他領域一些概念的對應關係,比如圖論。

從矩陣與向量的角度入手看擬陣的基本定義

  1. 前提:S 是一個有窮的線性無關的向量集合(或稱有限集)
  2. 遺傳性質:如果 I 是 S 的一個子集,那麼 I 也是一個線性無關的向量集合。
  3. 增廣性質:如果 A 和 B 都屬於 I ,都是線性無關向量集,且A中向量個數少於B中向量個數,即|A| < |B|,那麼存在一個向量 vBAv \in B-A 使得 A{v}A \cup \{v\} 也是一個線性無關向量集。

前兩條都很好理解,第三條性質則需要有一些思考,這一條也是貪心算法的理論基礎。(但擬陣不能覆蓋所有的貪心算法情況,比如霍夫曼編碼)
更抽象正規的定義請移步百科。

與圖論的關係

向量與圖論的關係是最吸引我興趣的地方。
給定一個圖G=<V, E>

  • 遺傳性質:如果B是一個無環的邊子集,且有 ABA \in B ,那麼A也是一個無環的邊子集。無環邊子集可能是一棵樹,也可能是多棵樹(森林)。
  • 增廣性質:如果A和B都是無環的邊子集,且 |A| < |B| ,則必定存在一條邊 eBAe \in B-A 使得A{e}A \cup \{e\} 的邊構成的圖仍舊是無環的。

這個理論最神奇的地方在於,把矩陣(線性代數)和圖論看起來兩個相距甚遠的領域連結起來了。向量集的線性無關和圖的無環性質是等價的!

擬陣與貪心算法的關係

剛剛提到了圖,自然就想到了圖論裏的經典問題 最小生成樹 問題,該問題的經典解法 Prim算法和Kruskal算法 都是貪心算法的經典應用。
Prim算法是從點集合出發遍歷近鄰邊,貪心的納入權值最小的邊;Kruskal算法是遍歷邊集合,貪心的選擇權值最小且不構成環的邊。算法細節不再贅述,兩者的理論基礎都是擬陣。

擴展

貪心算法的另一個理論基礎叫做 次模函數(submodular set functions),可以簡單理解爲類似凸函數類似的東西,可以求得一個近似解。但是目前還沒搞懂這個是否能cover所有貪心的情形,留坑待填。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章