速懂edit distance(编辑距离)

本文详细介绍了编辑距离的概念,包括删除、插入和替换三种操作,并通过动态规划(DP)算法进行解释,强调了正确理解dp数组的重要性。此外,还提到了Damerau–Levenshtein距离,这是一种增加了字符置换操作的编辑距离变种。
摘要由CSDN通过智能技术生成

前言

今天看了Stanford编辑距离代码,感觉写得不错,写一篇博客记录下。

编辑距离的定义是:从字符串A到字符串B,中间需要的最少操作权重。这里的操作权重一般是:

  • 删除一个字符(deletion)
  • 插入一个字符(insertion)
  • 替换一个字符(substitution)
  • 他们的权重都是1

编辑距离的算法一般用dp。很多博客写到这里就结束了,因此十分晦涩难懂。因为没有对其加主谓语,完全就是耍流氓。正确的说法应该是:

  • 删除A末尾一个字符(deletion)
  • 用B末尾插入A末尾一个字符(insertion)
  • 把A末尾字符替换成B末尾的一个字符(substitution)

为什么?

算法及实现

我们举一个实际例子

  • 长度为m的字符串A,len(A) = m
  • 长度为n的字符串B,len(B) = n

则A到B的编辑距离dp公式如下:

编辑距离DP公式

先不要急着看懂,我慢慢解释。

  • Q2: 为什么d是一个[m+1][n+1]大小的二维数组,为什么d数组要比字符串长度大一ÿ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值