zoukankan      html  css  js  c++  java
  • 编辑距离

      编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。


      许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

      例如将 kitten一字转成sitting:
      sitten (k→s)
      sittin (e→i)
      sitting (→g)
      俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。

      应用
      DNA分析
      拼字检查
      语音辨识
      抄袭侦测

      算法
      动态规划经常被用来作为这个问题的解决手段之一。
      整数 Levenshtein距离(字符串 str1[1..m], 字符串 str2[1..n])

      //声明变量, d[i , j]用于记录str1[1...i]与str2[1..j]的Levenshtein距离
      int d[0..m, 0..n]   //初始化
      for i from 0 to m
      d[i, 0] := i
      for j from 0 to n
      d[0, j] := j


      //用动态规划方法计算Levenshtein距离
      for i from 1 to m
      for j from 1 to n
      {
      //计算替换操作的代价,如果两个字符相同,则替换操作代价为0,否则为1
      if str1[i]== str2[j] then cost := 0
      else cost := 1
      //d[i,j]的Levenshtein距离,可以有
      d[i, j] := minimum(
      d[i-1, j] + 1, //在str2上j位置删除字符(或者在str1上i-1位置插入字符)
      d[i, j-1] + 1, //在str2上j-1位置插入字符(或者在str1上i位置删除字符)
      d[i-1, j-1] + cost // 替换操作
      )
      }
      //返回d[m, n]
      return d[m, n]

      wikisource上有不同的编程语言的版本。
  • 相关阅读:
    ansible-思维导图
    linux运维面试精华题
    python博客大全
    python-常用代码
    男孩周末班-k8s-架构图
    jQuery操作
    js点击事件,添加或删除元素,定时器
    js.DOM操作
    js数组,阶乘,递归,冒泡排序
    js匿名和自执行函数,控制语句
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715177.html
Copyright © 2011-2022 走看看