演算法之美 3 2 2 MP演算法

2021-09-07 09:11:48 字數 1041 閱讀 1511

這塊硬骨頭,放在這裡半年的時間了,一直沒有動,今天週末看看,書上把過程寫的比較詳細,自己基本也看懂了,但是對**本身的編寫還是比較生疏,要經常複習,估計才能看透,後面有看了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...