zoukankan      html  css  js  c++  java
  • 字符串的编辑距离

    字符串的编辑距离也被称为Levenshtein距离(Levenshtein Distance),一般用动态规划来实现。属于经典算法。

    这里对编辑距离进行简单的分析(经典算法,所以记录一下:-))。

    我们假定函数dist(str1, str2)表示字串str1转变到字串str2的编辑距离,那么对于下面3种极端情况,我们很容易给出解答(0表示空串)。

    • dist(0, 0) = 0
    • dist(0, s) = strlen(s)
    • dist(s, 0) = strlen(s)

    对于一般的情况,dist(str1, str2)我们应该如何求解呢?

    假定我们现在正在求解dist(str1+char1, str2+char2),也就是把"str1+char1"转变成"str2+char2"。在这个转变过称中,我们要分情况讨论:

    1. str1可以直接转变成str2。这时我们只要把char1转成char2就可以了(如果char1 != char2)。
    2. str1+char1可以直接转变成str2。这时我们处理的方式是插入char2。
    3. str1可以直接转成str2+char2。这时的情况是我们需要删除char1。

    综合上面三种情况,dist(str1+char1, str2+char2)应该是三者的最小值。

    用DP来做,我们只需要开辟一个二维数组即可。matrix[i][j]表示长度为i的A串转变为长度为j的B串的编辑距离。

    实际应用题:ZJU1027(Human Gene Functions),参考解点击这里。在应用字符串编辑距离算法时,需要做一点点改变,因为该题不存在删除一个字符的操作。

  • 相关阅读:
    深入浅出java IO模型
    MySQL 最基本的SQL语法/语句
    mysql sql常用语句大全
    Mysql数据库常用操作语句大全
    python3.6.1 安装PyQt5,以及配置QTDesigner,PyUIC
    Python之文件操作:os模块
    Python之OS模块函数
    Python OS模块
    Shell编程基础
    mysqldump恢复
  • 原文地址:https://www.cnblogs.com/wpcockroach/p/2441420.html
Copyright © 2011-2022 走看看