当前位置:嗨网首页>书籍在线阅读

16-算法设计

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.4.2 算法设计

编辑距离问题满足动态规划的最优子结构性质,可以自底向上逐渐推出整体最优解。

(1)确定合适的数据结构

采用二维数组d[][]来记录编辑距离。

(2)初始化

输入两个字符串s1、s2,初始化d[][]第一行为0,1,2,…,len2,第一列元素为0,1,2,…,len1。

(3)循环阶段

  • i=1:s1[0]与s2[j−1]比较,j=1,2,3,…,len2。

如果s1[0]=s2[j−1],diff[i][j] = 0。

如果s1[0] ≠s2[j−1],则diff[i][j] =1。

302.gif

  • i=2:s1[1]与s2[j−1]比较,j=1,2,3,…,len2。
  • 以此类推,直到i >len1时,算法结束,这时d[len1][len2]就是我们要的最优解。

(4)构造最优解

d[i][j]表格中倒推,输出插入、删除、替换了哪些字母。在此没有使用辅助数组,采用判断的方式倒推。