Edit Distance

本文详细介绍了编辑距离的概念及其计算方法,包括定义、计算最小编辑距离、回溯计算对齐过程及加权最小编辑距离等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇内容将讲述Edit Distance(编辑距离),具体包括4个方面:

  1. Defining Minimum Edit Distance

  2. Computing Minimum Edit Distance

  3. Backtrace for Computing Alignments

  4. Weighted Minimum Edit Distance

Definition of Minimum Edit Distance

Minimum Edit Distance是用于衡量从字符串x变到y所需的基本操作的步数,基本操作包括:

  • Insertion(插入)
  • Deletion(删除)
  • Substitution(替换)

这里写图片描述

如上图所示,d代表删除操作,s代表替换操作,i代表插入操作。(为了简单起见,后面的Edit Distance 简写为ED)
如果每种操作的cost为1,那么ED = 5.
如果s操作的cost为2(即Levenshtein Distance),ED = 8.

Computing Minimum Edit Distance

如何找到两个strings的minimun edit distance呢?把一个string转换为另一个string可以有很多种方法(或者说“路径“)。
对于两个字符串,X的长度为nY的长度为m,定义D(i,j)X的前i个字符与Y的前j个字符之间的距离,XY的距离可以用D(n,m)表示。容易想到,这个问题是具有重复子问题和最优子结构性质的,动态规划就可以大展身手了。
算法过程如下图所示(采用Levenshtein Distance即替换的成本为2):
这里写图片描述

下图是对字符串 INTENTION 和 EXECUTION执行动态规划过程形成的表。
这里写图片描述
容易看出, INTENTION 和 EXECUTION之间的Minimum Edit Distance为8

Backtrace for Computing Alignments

利用动态规划算法求得Minimum Edit Distance后,可以通过Backtrace ED的计算过程得到两个字符串之间的编辑过程。D(i,j)的取值来源有三种,D(i-1,j)D(i,j-1)D(i-1,j-1),下表通过添加箭头的方式显示出整个过程(下面的阴影表示的只是一种路径)
这里写图片描述
实现寻找路径的思想也很简单,在计算ED的时候给每个单元格定义一个指向标志,指向当前单元格来源LEFT/DOWN/DIAG

Adding Backtrace to Minimum Edit Distance
这里写图片描述

算法的时间复杂度和空间复杂度均为O(nm)

Weighted Minimum Edit Distance

在拼写中,某些字母更容易出错(键盘布局),或者一些删除、插入操作更频繁,可以在计算ED时加入权重
这里写图片描述
上图所示的混淆矩阵,数值代表被误写的可能性

Weighted Minimum Edit Distance
Weighted Minimum Edit Distance

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值