"""
采用DP算法实现最小编辑距离
状态变量:M[i][j] 截至到string1的第i个字符和string2的第j个字符,改为一样的所需的编辑距离
"""
def MED(string1, string2):
M = [[0 for _ in range(len(string2)+1)] for _ in range(len(string1)+1)]
for i in range(len(string2)+1):
M[0][i] = i
for j in range(len(string1)+1):
M[j][0] = j
for i in range(len(string1)):
for j in range(len(string2)):
if string1[i] == string2[j]:
M[i+1][j+1] = M[i][j]
else:
replace_ops = M[i][j] + 1
delete_ops = M[i][j+1] + 1 # 删除string1的第i位
add_ops = M[i+1][j] + 1
M[i+1][j+1] = min(replace_ops, delete_ops, add_ops)
return M[-1][-1]
if __name__ == '__main__':
string1 = 'loop'
string2 = 'helloworld'
min_distance = MED(string1, string2)
print(min_distance)
【动态规划】最短编辑距离
最新推荐文章于 2024-04-12 07:39:05 发布