最短编辑距离是指两个字符串,把其中一个字符串转为另一个字符串所需要花费的最小操作成本。

设dp[i][j]为Xi与Yj的最短编辑距离,则Xi与Yj处于最优解时的排列有三种情况

1.Xi最后一个元素xi位于Yj最后一个元素yj的左边

2.Xi最后一个元素xi位于Yj最后一个元素yj的右边

3.Xi最后一个元素xi与Yj最后一个元素yj重合

无论最终dp[i][j]的字符串如何对齐,只用取三种情况的最小值即可。

对于1,转化操作时,yj是必然要删掉的,故必然有1个单位的操作成本,因为dp[i][j]是最优操作成本,故dp[i][j]-1就是Xi与Yj-1的最优操作成本,即dp[i][j]-1=dp[i][j-1],即dp[i][j] = dp[i][j-1] + 1。

对于2,同理,对称,xi是必然要删掉的,dp[i][j] = dp[i-1][j] + 1

对于3,若xi = yj,则没有任何成本,此时Xi与Yj的最小操作成本与Xi-1和Yj-1相同,dp[i][j] = dp[i-1][j-1] + 0;若xi ≠ yj,则必然要将xi替换为yj或反之,故必然有1个单位的操作成本,所以dp[i][j] - 1是Xi-1与Yj-1的最优成本,dp[i][j] = dp[i-1][j-1] + 1;

整理递归式:dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1] + diff(xi, yj));

可直接用递归求解或者动态规划求解。

转载于:https://www.cnblogs.com/SHQHDMR/p/10664927.html

最短编辑距离问题理解相关推荐

  1. 最短编辑距离问题 : Levenshtein Distance

    个人觉得只要你能明白edit数组的含义就可以理解状态转移方程了. /* 可以用来表示字符串的相似度? */ #include <bits/stdc++.h> using namespace ...

  2. 最短编辑距离(动态规划超详细填表法)

    链接:https://www.nowcoder.com/questionTerminal/9649617be3bf42288f50758df4310655 来源:牛客网 UNIX系统下有一个行编辑器e ...

  3. 经典动态规划问题:最短编辑距离算法的原理及实现

    编辑距离的定义 编辑距离(Edit Distance)最常用的定义就是Levenstein距离,是由俄国科学家Vladimir Levenshtein于1965年提出的,所以编辑距离一般又称Leven ...

  4. 最短编辑距离 python_最短编辑距离算法实现

    一,算法介绍 在CS124课程的第一周提到 求解两个字符串相似度的算法---Minimum Edit Distance(最短编辑距离)算法.该算法在NLP(自然语言处理)中也会用到. 如何定义相似度呢 ...

  5. 动态规划最常见的习题 (最长公共子串、最长公共子序列、最短编辑距离)

    (1)理论部分: (2)习题: 最长公共子串: 1 package month7.dp; 2 3 //https://www.nowcoder.com/questionTerminal/181a1a7 ...

  6. 902. 最短编辑距离

    最短编辑距离 #include <iostream> #include <algorithm> using namespace std; const int N = 1001; ...

  7. DP问题从入门到精通2.2(线性DP,最短编辑距离)

    DP入门到精通系列 DP问题入门到精通1 DP问题入门到精通2.1 DP问题入门到精通3 DP问题入门到精通4 DP问题从入门到精通5 dp问题的难点到底是什么呢? 我认为是如何写出dp的更新方式,还 ...

  8. 动态规划---最短编辑距离

    描述: 设A和B是2个字符串.要用最少的字符操作将字符串A转换为字符串B.这里所说的字符操作包括: (1)删除一个字符; (2)插入一个字符: (3)将一个字符改为另一个字符. 将字符串A变换为字符串 ...

  9. 如何用最短的时间理解一项数字技术?推荐这7本最新的白皮书(大数据、云原生、区块链、联邦学习等,附下载)...

    正文开始 信息技术.数据被国家认定为新的生产要素,对于数据从业者来说是时代赋予的巨大红利,但也要认识到,数据要素要发挥出价值,离不开数据要素市场的培育,更依赖于信息技术(大数据.人工智能.区块链.云计 ...

最新文章

  1. 【计算机网络】网络层 : ICMP 协议 ( ICMP 差错报文 | 差错报文分类 | ICMP 询问报文 | ICMP 应用 | Ping | Traceroute )
  2. [渝粤教育] 中国传媒大学 政治传播学 参考 资料
  3. c++ 基本排序算法学习
  4. 有了数据湖探索服务,企业决策“新”中有数
  5. Web服务生存周期内发生的事件/Soap扩展的阶段/Soap扩展的步骤
  6. boost serialization 运行错误_boost c++之事件处理
  7. AI入门,从每个人都应该学的AI第一课开始
  8. Excel中CONCATENATE函数生成SQL insert 语句
  9. Xshell和Xftp免费版下载安装
  10. MAC和夜神模拟器配置adb适配报错
  11. Azure与Aliyun服务对比
  12. PAM-PDMDAAC聚丙烯酰胺-聚二甲基二烯丙基氯化铵/PEI-P(Asp-Hyd-ADR 聚乙烯亚胺-聚天冬氨酸
  13. 将计算机设置成交换机主机名,分享:如何配置学校机房项目交换机?
  14. 编译Android环境的libjpeg-turbo
  15. Win10 系统设置共享文件
  16. redis之可视化工具
  17. TX2超详细,超实用刷机教程(亲测有效,所有步骤都是博主亲自实践过)
  18. linux ppp用户管理,linux下ppp拨号上网
  19. Spring学习中使用javaConfig进行配置时出现 has not been refreshed yet错误
  20. perl中DBD-oracle安装,perl DBD :: Oracle模块安装

热门文章

  1. 关于《蜗居》的一点想法
  2. 一个简单的拖动层(兼容IE,FF)
  3. android 获取屏幕的宽高
  4. WebKit如何加载web页面
  5. springMVC获取异步请求的参数,返回异步请求数据(json),跨域访问简单了解,文件上传,与Restful风格
  6. Flutter入门:如何只关闭自身页面
  7. Python操作SQLLite(基本操作)
  8. 多个tomcat配置
  9. VS2013和VS2015中MVC 区域路由匹配顺序相反
  10. 【Node.js学习笔记一】什么是Node.js?[概念总结]