美文网首页
最小编辑距离

最小编辑距离

作者: ChongmingLiu | 来源:发表于2018-06-15 11:02 被阅读58次

编辑距离,又称为Levenshtein距离,由俄罗斯的数学家Vladimir Levenshtein在1965年提出。是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数。

最小编辑距离涉及三种操作:

  • 删除字符
  • 插入字符
  • 替换字符

状态转移方程:

实现代码:

# coding: utf-8
import numpy as np

"""
最小编辑距离
@author:liuchongming
@date:  2018-05-19
"""


def minimum_edit_distance(str1, str2):
    row_count = len(str1) + 1
    col_count = len(str2) + 1
    dp = np.zeros(shape=[row_count, col_count], dtype=np.int)
    for i in range(col_count):
        dp[0][i] = i
    for i in range(row_count):
        dp[i][0] = i
    for i in range(1, row_count):
        for j in range(1, col_count):
            if str1[i - 1] == str2[j - 1]:
                flag = 0
            else:
                flag = 1
            dp[i][j] = min(dp[i - 1][j - 1] + flag, dp[i - 1][j] + 1, dp[i][j - 1] + 1)
    # 打印dp数组
    for i in range(row_count):
        for j in range(col_count):
            print("%d " % dp[i][j], end='')
        print()
    return dp[row_count - 1][col_count - 1]


if __name__ == "__main__":
    str1 = "coffee"
    str2 = "cafe"
    print(minimum_edit_distance(str1, str2))

相关文章

  • 最小编辑距离

    编辑距离,又称为Levenshtein距离,由俄罗斯的数学家Vladimir Levenshtein在1965年提...

  • 最小编辑距离

    题目 给定一个源串S和目标串T,能够对源串进行如下操作:1.在给定位置上插入一个字符2.替换任意字符3.删除任意字...

  • 最小编辑距离

    定义:两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同。许可的编辑操作包...

  • 最小编辑距离

    1.定义 假设只有三种编辑方式:插入,删除,替换。每种编辑方式对应一次操作。按规定的编辑方式,将原始字符串变换到目...

  • 最小编辑距离

    求两个字符串最小编辑距离,word1->word2转换 word1的前i个字符串要想转换为word2的前j个字符串...

  • 最小编辑距离

    最小编辑距离 编辑距离有两种: Levenshtein距离: 允许插入,删除和替换一个字符, 最常见 Damera...

  • NLP-2012斯坦福课程第3课 基本问题

    一、最小编辑距离编辑距离(Minimum Edit Distance,MED),又称Levenshtein距离,是...

  • 72、最小编辑距离

    我太小看面试难度了,本来以为这样的题目不会遇到,但是小米面试的时候遇到了,好在没做出来也过了,所以一定要搞懂啊。 ...

  • 最小编辑距离_Python

    最小编辑距离或莱文斯坦距离(Levenshtein),指由字符串A转化为字符串B的最小编辑次数。允许的编辑操作有:...

  • 最小编辑距离算法

    https://github.com/youngwind/blog/issues/106

网友评论

      本文标题:最小编辑距离

      本文链接:https://www.haomeiwen.com/subject/vvmpeftx.html