首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Levenshtein distance最小编辑距离算法实现

Levenshtein distance,中文名为最小编辑距离,其目的是找出两个字符串之间需要改动多少个字符后变成一致。...该算法使用了动态规划的算法策略,该问题具备最优子结构,最小编辑距离包含子最小编辑距离,有下列的公式。 ?...1,j]+1代表字符串s2插入一个字母,d[i,j-1]+1代表字符串s1删除一个字母,然后当xi=yj时,不需要代价,所以和上一步d[i-1,j-1]代价相同,否则+1,接着d[i,j]是以上三者中最小的一项...算法实现(Python): 假设两个字符串分别为s1,s2,其长度分别为m,n,首先申请一个(m+1)*(n+1)大小的矩阵,然后将第一行和第一列初始化,d[i,0]=i,d[0,j]=j,接着就按照公式求出矩阵中其他元素...,结束后,两个字符串之间的编辑距离就是d[n,m]的值,代码如下: #!

2.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    精读《算法题 - 编辑距离

    今天我们看一道 leetcode hard 难度题目:编辑距离。 题目 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。...如果我们仅用一个变量,只有两种定义方法: dp(i) 返回 word1 下标为 i 时最短编辑距离。 dp(i) 返回 word2 下标为 i 时最短编辑距离。...动态规划 有了上面的思考,动态规划的定义就清楚了: 定义 i 为 word1 下标,j 为 word2 下标,dp(i,j) 返回 word1 下标为 i,且 word2 下标为 j 时最短编辑距离。...让我们再审视一下 dp(i,j) 的含义:除了返回最短编辑距离外,正因为我们知道了最短编辑距离,所以无论操作步骤、过程如何,都可以假设我们只要做了若干步操作,下标分别截止到 i、j 的 word1、word2...讨论地址是:精读《算法 - 编辑距离》· Issue #501 · dt-fe/weekly 如果你想参与讨论,请 点击这里,每周都有新的主题,周末或周一发布。前端精读 - 帮你筛选靠谱的内容。

    18920

    路径匹配之编辑距离ED算法

    简述 编辑距离(Edit Distance),又称Levenshtein距离,原本是用来描述指两个字串之间,由一个转成另一个所需的最少编辑操作次数。这里的”编辑操作“是指“插入”、“删除”和“修改”。...问题描述 具体的讲,用编辑距离来描述处理路径相似度问题需要解决的是如下的问题,这个问题又叫”Edit Distance on Real sequence“(解决的方法就叫EDR算法): 给定两个序列(A...我们将变换所需的最小步数记为EDR(A,B),这个值就可以作为两个序列相异度的一个量度。...显然他们的编辑距离是3,包含两个插入操作、一个替换操作。 算法 简单dp。...总结 用EDR算法表示的路径相似度,有着对噪声不敏感的特点。但是他所表示的意义不是非常好(表示路径之间转换的操作数而跟距离没啥关系),而且确定阈值的过程还是很麻烦的。

    1.4K30

    数据对齐-编辑距离算法详解(Levenshtein distance)

    目录 一:简介 二:算法定义 1:定义 2:a small case 3:算法的上下界限 三:应用场景 1:数据对齐 2:拼写纠错 四:其他的编辑距离算法 五:算法实现 1:递归实现 2:动态规划实现...上面的变化过程所需要的步数就是最小的步数,所以他们之间的编辑距离就是"3" 3:算法的上下界限 Levenshtein distance数值包含几个上下界限 距离最小是两个字符串之间的长度的差值 距离最大是两个字符串中较长字符串的长度...2:拼写纠错 笔者所在公司就有一个公司内部提供的拼写纠错的组件,其中就有一部分使用了编辑距离算法。...四:其他的编辑距离算法 还有很多流行的编辑距离算法,他们和Levenshtein distance算法不同是使用了不同种类的方式去变换字符串 Damerau–Levenshtein distance:...2:动态规划实现 算法原理部分就借用https://www.cnblogs.com/sumuncle/p/5632032.html 博主的部分文章吧=.= 算法基本原理:假设我们可以使用d[ i

    2.8K20

    理解编辑距离

    顾名思义,编辑距离(Edit distance)是一种距离,用于衡量两个字符串之间的远近程度,方式是一个字符串至少需要多少次基础变换才能变成另一个字符串,可应用在拼写检查、判断 DNA 相似度等场景中。...根据可操作的基础变换不同,可分为以下几种: 莱文斯坦距离(Levenshtein distance):最常见的编辑距离,基础变换包括插入、删除和替换。...但是需要注意一点的是,当每种变换发生时,产生的距离(或者称为代价)并不一定是 1,例如斯坦福大学关于最小编辑距离的课件中,一次替换产生的距离就可能是 2。...Weighted Edit Distance,即加权编辑距离,这其实是在初始化和后续计算时加入了一些权重作为先验,一步操作产生的距离不再是 1 或者 2。 其他变种…… 这些等有时间再说吧。...Minimum Edit Distance Edit distance Similarity Search - The String Edit Distance - Nikolaus Augsten 编辑距离

    1.3K30

    编辑距离

    https://blog.csdn.net/ghsau/article/details/78903076 定义 编辑距离又称Leveinshtein距离,是由俄罗斯科学家...编辑距离是计算两个文本相似度的算法之一,以字符串为例,字符串a和字符串b的编辑距离是将a转换成b的最小操作次数,这里的操作包括三种: 插入一个字符 删除一个字符 替换一个字符 举个例子,kitten和sitting...的编辑距离是3,kitten -> sitten(k替换为s) -> sittin(e替换为i) -> sitting(插入g),至少要做3次操作。...),一个字符串的长度为0,编辑距离自然是另一个字符串的长度当min(i,j)=0时,lev_{a,b}(i,j)=max(i,j),一个字符串的长度为0,编辑距离自然是另一个字符串的长度 当ai=bj时...和xyz的距离=xxc和xy的距离 否则,leva,b(i,j)为如下三项的最小值:否则,lev_{a,b}(i,j)为如下三项的最小值: leva,b(i−1,j)+1(删除ai),比如xxc和

    65330

    Levenshtein Distance(编辑距离算法与使用场景

    最近在做一个脱敏数据和明文数据匹配的需求的时候,用到了一个算法叫Levenshtein Distance Algorithm,本文对此算法原理做简单的分析,并且用此算法解决几个常见的场景。...什么是Levenshtein Distance Levenshtein Distance,一般称为编辑距离(Edit Distance,Levenshtein Distance只是编辑距离的其中一种)或者莱文斯坦距离...此算法的概念很简单:Levenshtein Distance指两个字串之间,由一个转换成另一个所需的最少编辑操作次数,允许的编辑操作包括: 将其中一个字符替换成另一个字符(Substitutions)。...如果[i][j]位置的两个字符串不相等,则从[i][j]位置左、左上、上三个位置的值中取最小值,这个最小值加1(或者说这三个值都加1然后取最小值),然后填充到[i][j]。...*8765**** 己方有明文数据如下: 姓名 手机号 身份证 张大狗 12345678910 123456789987654321 要把两份数据进行匹配,得出上面两条数据对应的是同一个人的数据,原理就是

    3.6K30
    领券