创新实训个人记录 : 个人工作总结
創新實訓個人記錄 : 個人工作總結
- 分條目、分進度總結個人工作
- 閱讀書籍(6.8-6.18)
- 近似算法設計(6.19-6.27)
- 程序驗證(6.28-7.1)
- 工作難點
- 接觸近似算法領域,學習新知識
- 找反例進行算法優化
- 大量數據分析算法性能
分條目、分進度總結個人工作
閱讀書籍(6.8-6.18)
其實從6.1組隊完成,我們就開始閱讀書籍了,每2、3天討論一次,對自己所負責的章節進行整理并分享,討論算法思路和近似比的分析。《computational complexity》第1章和第2章是P&NP的概念,使我們對復雜性類別有基礎的理解;《approximate algorithms》前8章是8個不同的近似算法,算是最基礎的近似算法。我負責第1章和第5章的學習;我一共閱讀4章內容,整理鏈接如下。
《computational complexity》
- chapter 1、2 P versus NP(季煒丹)
《approximate algorithms》
- chapter 1 Introduction 近似比、最大匹配和最小點覆蓋(季煒丹)
- chapter 5 k-center k-中心問題(季煒丹)
近似算法設計(6.19-6.27)
閱讀書籍后,了解了一些近似算法和復雜性類別的基礎知識,我們開始針對BR-MTC問題設計近似算法。BR-MTC問題是NP問題,無法在確定性多項式時間內計算出精確解。我們需要先找到一個能計算出可行解的算法框架,再通過算法優化,使近似解逐步逼近最優解。通過閱讀論文,發現BR-MTC問題與MST(最小生成樹)有關聯,借鑒解決MST問題的經典算法之一:prim算法,結合預算B,我提出近似算法框架;在框架的基礎上,黃舒漪提出了可以從除根節點外的所有頂點出發,找最短路徑,借鑒最短路的經典算法之一:Dijkstra,通過討論,我和劉忠航將其簡化從根節點出發,并提出基于Steiner Tree 斯坦納樹的進一步的優化算法。
程序驗證(6.28-7.1)
驗證程序的主體,圖類的封裝等,是由我們組員劉忠航獨立完成的。我和黃舒漪共同完成了具體的程序驗證過程,通過不同的點數、邊數、最大權值和預算,反復循環得到大量數據,我編寫程序可視化曲線圖,分析近似算法的效果。
工作難點
接觸近似算法領域,學習新知識
我們對近似算法這個領域都不是很熟悉,
- P&NP、近似比、k-中心、最小點覆蓋、最大匹配等一系列新名詞;
- 巧妙的近似比求解方法,如三角不等式還有邊的端點覆蓋等;
- 常用的近似比求解套路:求不出OPT,就先求OPT的上限(對于求解最小化問題是找下限),然后希望我們的近似算法能找到上限的常數倍,那么這個常數就是近似比;
這些新知識需要我們在短時間內理解并學會運用,是有難度的。
找反例進行算法優化
找到可行解,再逐步優化逼近最優解,是很常見的求解思路。其實BR-MTC問題的可行解有很多,BR-MTC與K-MST是目標對偶,很容易就聯想到MST,經典的prim算法必定能得到可行解。
可是優化是有難度的,我們通過找反例來進行算法優化。
比如,對于下面這個圖,預算為6時,最優解是藍色部分的頂點數,為5。
但是基于prim算法的近似算法框架得到的近似解如下,頂點數為4。
我們只有先知道從r到A的最短路徑,再去算生成樹,才能得到更優解:
通過這個例子,我們把最短路徑加入算法框架的初始頂點集,得到該例的最優解。
那么,如果有更多像A這樣的點呢?如下圖:
如果預算是29,那么最優解如下,頂點數為22;
結合最短路徑的prim算法得到的解如下,頂點數為21;
所以我們應該先把所有像A的點,即連著一條大邊,又連著許多條小邊的點,先用最短網絡連接起來,即通過steiner tree得到如下圖的初始頂點集和邊集,再進行生成樹的尋找。
大量數據分析算法性能
我們已經設計出近似算法了,而且也已經優化了,現在需要驗證算法的性能,即近似解與最優解的關系,以及我們對于算法優化的效果。
近似比的直接分析難度很大,我們設計的啟發式算法用程序驗證算法效果,分析何時近似算法的優化最有效。這一步也是有難度的,我們需要設置不同的點數、邊數、最大權值和預算,大量隨機生成圖,代入算法得到數據,通過圖可視化來分析變量對于優化效果的影響。
我們跑了大量數據,驗證算法優化的確有效,且發現預算與頂點數的比值在50%左右時,優化效果最好。以下是可以驗證我們發現的2個例子。
給定頂點500-1500,間隔100,預算為400,500,600,700;縱坐標是優化前后的頂點數差值,即優化效果的直觀體現
- 1). 當頂點數為800時,預算400的紅色線優化效果較好;
- 2). 當頂點數為1200時,預算600的綠色線優化效果較好;
- 3). 當頂點數為1400時,預算700的黃色線優化效果較好;
可以看出,預算與頂點數的比值在50%左右,優化效果最好。
第2個例子:驗證100以內的頂點數,最優解、近似解的關系
- 1). 紅色線與綠、藍色線存在差距,即最優解與近似解存在差距;
- 2). 綠色線是優化后的近似解,永遠在藍色線上方,甚至有時候與紅色線重合;即優化后得到的近似解比優化前得到的近似解更加接近最優解;
以上兩點都符合我們的預期。
總結
以上是生活随笔為你收集整理的创新实训个人记录 : 个人工作总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创新实训个人记录:approximati
- 下一篇: 初等数论--整除--带余除法