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上有不同的编程语言的版本。
  • 相关阅读:
    数据字典的应用实例
    数据字典动态性能表(视图)
    MySQL exists的用法介绍
    Don’t Assume – Per Session Buffers
    MySQL 5.5: InnoDB Change Buffering
    Fixing Poor MySQL Default Configuration Values
    A quest for the full InnoDB status
    MySQL : interactive_timeout v/s wait_timeout
    Mydumper & Myloader Documentation
    InnoDB Plugin文件格式(概述)
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715177.html
Copyright © 2011-2022 走看看