编辑距离矩阵

简介: 编辑距离矩阵

编辑距离矩阵是一种用于计算两个字符串之间的编辑距离的方法,它可以反映两个字符串的相似度或者差异度。编辑距离是指将一个字符串变成另一个字符串所需要的最少的单字符编辑操作(插入,删除或替换)的次数。例如,将“kitten”变成“sitting”需要三次操作,分别是将“k”替换为“s”,将“e”替换为“i”和在末尾插入“g”。

编辑距离矩阵是一个二维的表格,其中每个单元格表示两个字符串的某一部分的编辑距离。例如,矩阵[i,j]表示第一个字符串的前i个字符和第二个字符串的前j个字符的编辑距离。矩阵的大小为(m+1)×(n+1),其中m和n分别是两个字符串的长度。矩阵的左上角为[0,0],表示两个空字符串的编辑距离为0;矩阵的右下角为[m,n],表示两个完整字符串的编辑距离,也就是我们要求解的结果。

编辑距离矩阵的计算方法是基于动态规划的思想,即通过自底向上地填充矩阵中的每个单元格,利用已知的子问题的解来求解更大的问题。具体来说,我们可以按照以下步骤来计算编辑距离矩阵:

• 初始化:将矩阵的第一行和第一列填充为对应的索引值,即[0,0]为0,[0,j]为j,[i,0]为i。这表示将一个空字符串变成另一个字符串或者反过来所需要的操作次数。

• 递推:对于矩阵中除了第一行和第一列之外的每个单元格[i,j],我们可以根据以下公式来计算它的值:

image.png

其中,s1和s2分别表示第一个和第二个字符串,s1[i]和s2[j]分别表示它们的第i个和第j个字符。这个公式的含义是,我们可以从三种可能的操作中选择最小代价的一种来得到当前单元格的值:

• 在s1[i]后面插入一个字符s2[j],这样就相当于将s1[1..i]变成了s2[1..j-1],所以代价等于matrix[i,j-1]+1。

• 删除s1[i]这个字符,这样就相当于将s1[1..i-1]变成了s2[1..j],所以代价等于matrix[i-1,j]+1。

• 如果s1[i]和s2[j]相同,则不需要任何操作,这样就相当于将s1[1..i-1]变成了s2[1..j-1],所以代价等于matrix[i-1,j-1]+0;如果不同,则需要将s1[i]替换为s2[j],这样也相当于将s1[1..i-1]变成了s2[1..j-1],所以代价等于matrix[i-1,j-1]+1。

• 终止:当我们填充完整个矩阵后,我们就可以得到最终的编辑距离,即matrix[m,n]。

例如,如果我们要计算“hor”和“ros”的编辑距离,我们可以构建如下的矩阵:

r o s
0 1 2 3
h 1 1 2 3
o 2 2 1 2
r 3 2 2 2

我们可以看到,最终的编辑距离为2,这表示我们需要两次操作来将“hor”变成“ros”,例如将“h”替换为“r”和在末尾插入“s”。

目录
相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
神经网络加上注意力机制,精度不升反降?
神经网络加上注意力机制,精度不升反降?
神经网络加上注意力机制,精度不升反降?
|
传感器 数据处理 数据库
鸿蒙开发Hvigor插件动态生成代码
【11月更文挑战第13天】Hvigor 是鸿蒙开发中的构建系统插件,主要负责项目的构建、打包及依赖管理,并能根据预定义规则动态生成代码,如数据库访问、网络请求等,提高开发效率和代码一致性。适用于大型项目初始化和组件化开发。
534 6
|
移动开发 网络协议 安全
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
HTML5页面被运营商DNS问题及解决方案,app中h5页面源码的获取
485 4
|
Shell Linux 调度
cgroup 资源控制介绍
cgroup 资源控制介绍
pip批量安装python第三方库
pip批量安装python第三方库
|
人工智能 自然语言处理 搜索推荐
浪潮信息 Yuan-embedding-1.0 模型登顶MTEB榜单第一名
浪潮信息Yuan-Embedding-1.0模型在C-MTEB评测基准中荣获Retrieval任务第一名,推动中文语义向量技术发展
2596 7
浪潮信息 Yuan-embedding-1.0 模型登顶MTEB榜单第一名
|
人工智能
采用8个64B模型进行的模型融合,效果如何呢?
【10月更文挑战第1天】论文解读:针对模型融合(Model Merging)中的AI模型数量、模型大小、模型能力、合并方法等因素的实验及结果
506 2
|
前端开发 PHP 对象存储
如何用Postman测试文件或图片上传
本文介绍了在某些小项目中,如何使用传统方式将文件上传到与应用程序同一服务器上的方法,而不是使用大平台的对象存储。
2314 3
|
JavaScript 前端开发 开发者
Vue的响应式原理:深入探索Vue的响应式系统与依赖追踪
【4月更文挑战第24天】Vue的响应式原理通过JavaScript getter/setter实现,当数据变化时自动更新视图。它创建Watcher对象收集依赖,并通过依赖追踪机制精确通知更新。当属性改变,setter触发更新相关Watcher,重新执行操作以反映数据最新状态。Vue的响应式系统结合依赖追踪,有效提高性能,简化复杂应用的开发,但对某些复杂数据结构需额外处理。
|
消息中间件 分布式计算 大数据
大数据组件之storm简介
大数据组件之storm简介
484 2