判断大小简单算法_优化 | 贪婪算法有多好?Submodularity告诉你
責任編輯:蘇向陽
本文轉載自知乎專欄 貪婪算法有多好?Submodularity告訴你
原文鏈接:https://zhuanlan.zhihu.com/p/52512602
文章發表于微信公眾號【運籌OR帷幄】:優化 | 貪婪算法有多好?Submodularity告訴你歡迎原鏈接轉發,轉載請私信@運籌OR帷幄獲取信息,盜版必究。
敬請關注和擴散本專欄及同名公眾號,會邀請全球知名學者發布運籌學、人工智能中優化理論等相關干貨、知乎Live及行業動態
更多精彩文章,歡迎訪問我們的機構號:@運籌OR帷幄
作者:喬杰
喬杰,廣東工業大學計算機專業的博士在讀。主要研究方向是因果關系,個人博客
https://blog.csdn.net/a358463121
編者按:
貪婪算法可以說是一種非常直觀的算法了,但是直觀并不代表容易,也不代表沒有深度。本文就將帶你深入了解一下貪婪算法的應用。
貪婪算法可以說是最符合我們人類直覺的算法了,甚至有的時候貪婪算法就可以得到目標的最優解,比如說最小生成樹算法。那么我們自然就會想知道,它能達到最優值嗎?如何判斷?實際上一個叫Matroid的東西是可以幫助我們判斷是否能達到最優值的。但是如果不能達到最優,它到底有多近似呢?submodularity optimization對這個問題給予了一個答案。
submodularity condition
submodularity
對于同一個地方,在雷達覆蓋范圍比較小的時候加入一個雷達(左圖),它的效果肯定比在雷達覆蓋范圍比較大的時候加一個雷達的效果要好(右圖)。基于此我們可以給出一個定義:
接下來再介紹幾個有用的性質,submodular函數的求和還是submodular函數,submodular函數的加權求和(權重非負)也還是submodular函數。這個性質讓我們可以定義一些很簡單的submodular函數,然后把他們加起來組成一個復雜的函數。
現在你的函數有了這兩個性質,而且任務找到一個大小為k的子集S使得f達到最大,那么不同大小的k會造成什么影響呢?該理論的一個漂亮的地方是,如果你函數有Submodularity和Monotonicity這兩個性質那么至少63%的效果是可以保證的。當然在實際中,常常可以高于這個值。以下定理給出了該描述的一個正式證明,該函數在使用貪婪算法,每一步都選擇一個最優的元素來最大化f時,他一定能得到一個1-1/e(63%)的近似。為了證明這個bound,我們給出幾個定義以及一些有用的定理。
Matroid Constraint
那么什么時候,貪婪算法可以得到最優解呢?答案是,如果我們在搜索子集的時候,搜索空間中所有的子集都是“獨立”的,那么我們是有可能用貪婪算法找到最優解的。而Matriod定義了這么一種獨立的性質.
想要進一步了解可以訪問以下參考資料。
參考資料
When Greedy Algorithms are Good Enough: Submodularity and the (1 – 1/e)-Approximation
(https://jeremykun.com/2014/07/07/when-greedy-algorithms-are-good-enough-submodularity-and-the-1-1e-approximation/)
When Greedy Algorithms are Perfect: the Matroid
(https://jeremykun.com/2014/08/26/when-greedy-algorithms-are-perfect-the-matroid/)
Notes on Greedy Algorithms for Submodular Maximization
(https://thibaut.horel.org/submodularity/notes/02-12.pdf)
Submodular Function Maximization
(https://las.inf.ethz.ch/files/krause12survey.pdf)
更多精彩文章歡迎關注我們的機構號@運籌OR帷幄
總結
以上是生活随笔為你收集整理的判断大小简单算法_优化 | 贪婪算法有多好?Submodularity告诉你的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unipapp 解决无法编译sass_S
- 下一篇: python requests post