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上有不同的编程语言的版本。
  • 相关阅读:
    HTML DOM 事件
    js实现键盘数字输入
    js实现键盘数字输入
    onbeforeunload事件兼容性操作
    onbeforeunload事件兼容性操作
    window.event对象详尽解析
    git简单使用教程
    PHP中奖概率写法
    PHP替代session的方法
    nginx实现负载均衡
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715177.html
Copyright © 2011-2022 走看看