演算法設計與分析 第九周 編輯距離

2021-08-30 21:46:41 字數 1718 閱讀 7642

4.執行結果

5.源**

本週學習了動態規劃,講到了編輯距離的演算法。恰好看到了leetcode上有這樣的題目,因此選擇了這道題,就當作鞏固知識了!

動態規劃的經典問題,既有思路。

首先考慮兩個單詞每個字元的匹配情況:

ap

ple0

apol

ogy

appl

e012

345a

1p2o

3l4o

5g6y

7

接下來,再讓我們來看一下其他的空應當怎麼填。

考慮剛才的四種情況,很容易知道我們如果想取得最短的編輯距離,那麼就需要判斷是要將當前的兩個字元對齊還是用乙個空格代替其中的乙個字元。就很容易轉化為下列問題:

如果我們要求(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)

填滿**:

ap

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 來儲存原字串,陣列下標...

統計學 回歸分析 第九周

最小二乘法 擬合優度檢驗 顯著性檢驗 回歸 殘差分析 多元線性回歸 參考總結 相關關係是值變數的數值之間存在這依存關係,即乙個變數的數值會隨著另乙個變數或幾個變數的數值變化而呈現出一定的變化規律。例如 人的身高和體重的關係,居民收入增長率與物價指數的關係等等 相關關係的分類 也可根據相關關係的變數個...