Edit Distance(编辑距离)

Edit Distance(编辑距离)

1. 编辑距离的定义

  在计算机科学中,编辑距离用于度量任意两个字符串间不相似的程度,即二者之间的编辑距离越大表示两个字符串之间的差异就越大。

问题描述:

  给定两个字符串x和y,只允许使用三种操作(插入一个字符、删除一个字符、修改一个字符)将x变换为y,求最少需要的操作次数。(更进一步,还需给出变换的具体步骤)【此编辑距离被称作Levenshtein distance
   P.S.Longest common subsequence (LCS) distance中只允许进行插入和删除两种操作。在Hamming Distance 中只允许进行替换操作。这就是这距离的关系,从广义上说它们都可以称作编辑距离,本文所说的编辑距离主要指:Levenshtein distance

举例:

  以”kitten”和”sitting”两个字符串为例,它们之间的编辑距离是3。因为可以通过如下3步将”kitten”变为”sitting”,且至少需要3步才能完成变化,具体步骤如下所示:

1. kitten → sitten (将"k"替换为"s")
2. sitten → sittin (将"e"替换为"i")
3. sittin → sitting (在末尾添加"g").

2. 编辑距离的性质

  编辑距离满足度量公理,具备如下性质:

  • d(a, b) = 0 if and only if a=b
  • d(a, b) > 0 when a ≠ b
  • d(a, b) = d(b, a) # by equality of the cost of each operation and its inverse.
  • Triangle inequality: d(a, c) ≤ d(a, b) + d(b, c).
  • LCS distance 的上限是两个字符串长度之和。
  • LCS distance 是 Levenshtein distance 的上限。
  • 对于等长串, Hamming distance 是 Levenshtein distance 的上限。

3. 编辑距离的应用

  编辑距离在很多领域中都有这广泛的应用。在自然语言处理方面,常见的拼写自动纠错就是通过编辑距离来实现的,即计算用户输入的字符串与候选字符串集合中字符串的编辑距离,来为用户自动推荐最可能的单词或语言片段。在生物信息学中编辑距离经常用于度量两个基因DNA片段序列的相似程度,因为DNA片段可以看成是A、C、G和T碱基组成的序列串。


4. 编辑距离的计算

  编辑距离最早采用 Wagner–Fischer algorithm 来进行求解,该算法采用动态规划的思想,也是各类算法教科书中常见的求解编辑距离的算法,本质上是数学归纳大法。
  定义两个字符串分别为: a=a1a2...an b=b1b2...bm dmn a1a2...an b1b2...bm 之间的编辑距离。
  由于编辑距离具有对称性(删除、插入、替换的三种操作的权重相同,且操作可逆),即 dmn=dnm 。在实际意义上,表示将 a 变成 b 和将 b 变成 a 所需要的操作复杂度是相同的。
  我们假设将 b 变成 a 的复杂度为 dmn ,有如下关系式与分析:
  
   di0=ik=1wdel(bk)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值