首先需要解决的问题是:定义一个函数(cost function)计算两个字符串的相差程度。
一个合理的设计是:计算从一个字符串改成另一个字符串需要经过的步数。
更改的三种基本类型
- 替代:更改一个字符,如shot->spot
- 插入: 插入一个字符,如ago->agog
- 删除:删除一个字符,如hour->our
这样计算出从字符串P变到字符串T总共需要多少基本类型,就是编辑距离。
这种相似字符串的匹配算法似乎很难,但是借助DP思想,问题将非常简洁。又是见证奇迹的时候。
递归形式的编辑距离问题
以 i,j 为字符串前缀子串的最后一个字符。
字符串P(长度为m)变T(长度为n),我们以 Pi,Tj 表示下标分别为