數學基礎 求解優化問題的演算法比較

2021-08-21 06:58:49 字數 1745 閱讀 6763

在對比演算法之前,我們先給出不同型別問題的定義

p問題:可以在多項式時間內求解的問題

np問題:可以在多項式時間內驗證解是否為問題的解,猜解和驗證解的過程,np問題存在多項式級的演算法,所有的p類問題都是np問題,p≠np

npc問題:不存在多項式求解演算法的問題

npc問題是乙個np問題,所有的np問題都可以約化到npc問題。所有的np問題都能約化成npc問題,只要任意乙個npc問題找到了乙個多項式的演算法,那麼所有的np問題都能用這個演算法解決了,np也就等於p 了。npc問題目前沒有多項式演算法,只能用指數級甚至階乘級複雜度的搜尋。

np-hard問題:所有的np問題都可以約化到np-hard問題,但np-hard問題不一定是乙個np問題,np-hard問題同樣難以找到多項式的演算法。

確定演算法和啟發式演算法的區別

確定演算法:

系統地、以確定的步驟去尋求答案,各種可能性都一一進行嘗試,最終能找到問題的答案,但它是在很大的問題空間內,花費大量的時間和精力才能求得答案。

梯度下降法、牛頓法、擬牛頓法、normal equation的對比

這些方法都是是求解無約束最優化問題的演算法

梯度下降法,是用來求函式值最小處的引數值,需要預先選定學習速率,需要多次迭代,需要對特徵進行歸一化(feature scaling),但是每次迭代的代駕較小

牛頓法,是用來求一階導數函式值為0處的引數值,不需要選擇任何引數,不需要對特徵進行歸一化,但是要求函式二階可微,收斂性與初始點的選擇依賴較大,牛頓法每一次迭代需要計算hesse矩陣的逆,計算量大,奇異矩陣導致無法求解。

擬牛頓法,為了避免計算矩陣的逆,擬牛頓法的思路是用乙個n階矩陣來代替hesse矩陣的逆,擬牛頓法包括dfp、bfgs、broyden。

牛頓法和擬牛頓法在李航的《統計學習方法》第219-224頁有詳細的介紹。

normal equation,是線性回歸引數求解方法,normal equation需要大量的矩陣運算,特別是求矩陣的逆。在矩陣很大的情況下,會大大增加計算複雜性以及對計算機記憶體容量的要求。當特徵向量的維度過多,或者存在相關特徵,導致矩陣不可逆,需要對特徵進行處理,例如刪除冗餘的維度。

啟發式演算法

利用過去的經驗,選擇已經行之有效的方法,在有限的搜尋空間內,大大減少嘗試的數量,能迅速地達到問題的解決。但由於這種方法具有嘗試錯誤的特點,所以也有失敗的可能性。科學家的許多重大發現,常常是利用極為簡單的啟發式規則,啟發式演算法是一種技術,這種技術使得在可接受的計算成本內去搜尋最好的解,但不一定能保證所得的可行解和最優解,甚至在多數情況下,無法闡述所得解同最優解的近似程度。啟發式搜尋會造成這樣的結果:找到的解雖然是令人滿意的,卻不是最優的。

啟發式演算法包括,仿動物類的演算法:粒子群優化,螞蟻優化,魚群演算法,蜂群演算法等;仿植物類的演算法:向光性演算法,雜草優化演算法等;仿人類的演算法有:和聲搜尋演算法是較好的演算法;

啟發式演算法的要素:

(1)隨機初始可行解;

(2)給定乙個評價函式(常常與目標函式值有關);

(3)鄰域,產生新的可行解;

(4)選擇和接受解得準則;

(5)終止準則。

引數設定、迭代停止條件、收斂速度是啟發式演算法的關鍵因素。

MPC優化問題求解的推導

參考 為 a predictive controller for autonomous vehicle path tracking 假設我們要求解的代價函式 j 為 j x qx u ru 1 其中,x 為未來 n p 次的狀態 序列,u 為未來 n u 次的控制序列,亦即表示如下 x left b...

乙個數學公式求解的優化

今天學長給了一道演算法優化題讓我做了一下,感覺還是比較有意思的 題目是這樣 給定乙個長度為n的陣列i,乙個數c,按下面的公式求出給定的矩陣ii 分析 按公式求.o n c c 2 這樣固然簡單,但是如果給定n 2000,c 1000呢?利用遞推關係加速.觀察式子發現,ii k,j 和ii k 1,j...

八數碼問題的A 演算法求解

a 演算法是啟發式搜素演算法中較為出名和高效的演算法之一,其關鍵是對於啟發式函式的實際,啟發式函式h x 需要盡可能的接近實際的h x h x 下面是人工智慧八數碼問題使用a 演算法求解的原始碼放在部落格上記錄一下。程式使用放錯位置的棋子的個數作為啟發式函式。include include incl...