编辑距离

编辑距离;

来自wiki的编辑距离介绍

编辑距离 ,又称Levenshtein距离 ,是指两个字串 之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符 ,删除一个字符。

例如将kitten一字转成sitting:

  1. sitten (k→s)
  2. sittin (e→i)
  3. sitting (→g)

俄罗斯 科学家Vladimir Levenshtein1965年 提出这个概念。

编辑距离的经典动态规划算法:

初始化:

字符串 Levenshtein距离(字符 str1[1..lenStr1], 字符 str2[1..lenStr2])
    char d[0..lenStr1, 0..lenStr2]
    int i, j, cost
 
   for i  0 -> lenStr1
       d[i, 0] := i
  for j   0 -> lenStr2
       d[0, j] := j

dp求解:

for  i 1 -> lenStr1
        for j 1 -> lenStr2

            if str1[i] = str2[j]
            then cost := 0
           else cost := 1
           d[i, j] := min(
                                 d[i-1, j  ] + 1,     // 刪除
                                d[i  , j-1] + 1,     // 插入
                                d[i-1, j-1] + cost   // 替換
                                )
 return d[lenStr1, lenStr2]

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值