4.執行結果
5.源**
本週學習了動態規劃,講到了編輯距離的演算法。恰好看到了leetcode上有這樣的題目,因此選擇了這道題,就當作鞏固知識了!
動態規劃的經典問題,既有思路。ap首先考慮兩個單詞每個字元的匹配情況:
ple0
apol
ogy
appl
e012
345a
1p2o
3l4o
5g6y
7
接下來,再讓我們來看一下其他的空應當怎麼填。ap考慮剛才的四種情況,很容易知道我們如果想取得最短的編輯距離,那麼就需要判斷是要將當前的兩個字元對齊還是用乙個空格代替其中的乙個字元。就很容易轉化為下列問題:
如果我們要求
(x, y)
點的值,只需要考慮(x - 1, y)
(x, y - 1)
(x - 1, y - 1)
。分別對應:將上面的字元用空格代替,將下面的字元用空格代替,將兩個字元對齊。很容易發現,將兩個字元對齊對應兩種情況:1和2。那麼什麼時候該+1就取決於兩個字元是否相等。得到式子:
ed(x, y) = min(ed(x, y - 1) + 1, ed(x - 1, y) - 1, ed(x - 1, y - 1) + a(x) == b(y) ? 0 : 1)
填滿**:
ple0
1234
5a10
1234
p210
123o
3211
23l4
3221
2o54
3322
g654
433y
7655
44
得到了最後的結果:4
構建矩陣並初始化ed(0, i) = i; ed(j, 0) = j
遍歷計算所有節點ed(x, y) = min(ed(x, y - 1) + 1, ed(x - 1, y) - 1, ed(x - 1, y - 1) + a(x) == b(y) ? 0 : 1)
返回ed(x, y)//使用0初始化所有的行和列,得到完全不匹配的結果
for (int i = 0; i < row; i++)
for (int i = 0; i < col; ++i)
//構造編輯距離圖
for (int i = 1; i < row; i++)
}return matrix[row - 1][col - 1];}};
《演算法設計與分析》第九周作業
標籤 空格分隔 課堂作業 姓名 李 學號 16340114 題目 edit distance 給定兩個字串,每次可以對增加 刪除 替換乙個字元。問最少多少次操作後,兩個字串變得一樣。這個問題書本裡有將過。思路就是將當前問題化解為若干個子問題去解決,取子問題中的最有解。子問題的情況有三 設i為字串1的...
編輯距離問題演算法分析
一 問題分析 本題提出了一些關於將字串x 1.m 轉換成y 1.n 的操作。這些操作有複製 替代 刪除 插入 互換和終止。這些操作所需的開銷是不同的,但每個操作的開銷都可以看是乙個我們已經的常量,我們假設複製和替代這類操作的開銷要比插入和刪除這類操作的開銷少。我們用x 1.m 來儲存原字串,陣列下標...
統計學 回歸分析 第九周
最小二乘法 擬合優度檢驗 顯著性檢驗 回歸 殘差分析 多元線性回歸 參考總結 相關關係是值變數的數值之間存在這依存關係,即乙個變數的數值會隨著另乙個變數或幾個變數的數值變化而呈現出一定的變化規律。例如 人的身高和體重的關係,居民收入增長率與物價指數的關係等等 相關關係的分類 也可根據相關關係的變數個...