這塊硬骨頭,放在這裡半年的時間了,一直沒有動,今天週末看看,書上把過程寫的比較詳細,自己基本也看懂了,但是對**本身的編寫還是比較生疏,要經常複習,估計才能看透,後面有看了kmp;這兩者之間的關係也是頭大。。。
1/*!2* \file mp_演算法.cpp3*
4* \author ranjiewen
5* \date 2017/02/12 15:066*
7* 8*/
910void premp(const
char *pattern, int m, int mpnext) //
m為pattern的長度
1121 mpnext[++i] = ++j; //
mpnext(j)=f(j-1)+122}
23}2425 #include 26 #include
27using
namespace
std;
2829
void mp(string pattern, string
target)
3038
const
char* x =pattern.c_str();
39const
char* y =target.c_str();
40int i = 0, j = 0, mpnext[128]; //
m+1大小
4142 premp(x, m, mpnext); //
mpnext 進行一下輪比較過程中模式p的起始比較位置
4344
bool flag = false;45
while (i//
i 遍歷target字串
4651 j++;
52 i++;
5354
if (j>=m)
5560}61
if (!flag)
6265}66
67int main(int argc, char**ar**)
68
MP演算法與OMP演算法
稀疏編碼的一般最優化公式為 其中的零範數為非凸優化。那麼如何解這麼乙個非凸優化問題呢?其中乙個常用的解法就是mp演算法。mp演算法是一種貪心演算法 greedy 每次迭代選取與當前樣本殘差最接近的原子,直至殘差滿足一定條件。首先解決兩個問題,怎麼定義 最接近原子 怎麼計算殘差?選擇最接近殘差的原子 ...
演算法之美 3 2 3 KMP演算法
不知道看了幾遍的kmp,反正到現在都沒有弄清楚next j 的計算和kmp的 實現,溫故而知新,經常回來看看,相信慢慢的就回了 從頭到尾徹底理解kmp file kmp 演算法.cpp author ranjiewen date 2017 02 12 16 12 void prekmp const ...
演算法之美9 搜尋
dfs bfs a 啟發式 bfs 廣度優先搜尋,通俗的理解就是,地毯式層層推進,從起始頂點開始,依次往外遍歷。廣度優先搜尋需要借助佇列來實現,遍歷得到的路徑就是,起始頂點到終止頂點的最短路徑。時間複雜度是 o e 空間複雜度是 o v 例子 水滴波紋 def bfs graph,start,end...