离散序列的相似性度量

本文介绍了离散序列的相似性度量方法,主要讨论了编辑距离和最长公共子序列的概念。编辑距离是通过插入、删除和替换操作计算字符串之间的最小转化代价,而最长公共子序列则是度量两个字符串排列相同字符数量的指标。两者都通过动态规划解决,并提供了相应的递归模型和代码实现。
摘要由CSDN通过智能技术生成

一 前言

离散序列通常是字符串序列,一个字符表示一种标签或者等级。这与定量型数据的相似性度量不同,定量型数据可以采用距离函数来度量相似度,而离散序列一般不具有数值计算的特性。故而,我们对离散序列的相似度量通常采用字符串比较的方法,本文讨论的是编辑距离最长公共子序列

二 编辑距离

编辑距离是将一个字符串转化为另一个字符串所使用一系列插入、删除和替换操作所需要的最小代价。 例如,将 ababab 转化成 bababa 最少需要两次:第一次删除第一个a,第二次在尾端插入一个a。假设删除和插入的成本都是1,那么 ababab 和 bababa 的编辑距离就是2。显然,编辑距离越小说明两个字符串越相似。

给定两个任意的字符序列X和Y,如何计算两者之间的编辑距离?显然,这是个动态规划的问题,需要找出它的递归模型。

E d i t ( i , j ) Edit(i,j) Edit(i,j)代表片段 X i X_i Xi Y j Y_j Yj的最小匹配代价。那么有4种可能:

  • X [ i ] ! = Y [ j ] X[i]!=Y[j] X[i]!=Y[j]时, X i X_i Xi插入一个字符:插入一个字符到 X i X_i Xi的末尾,使得它和 Y j Y_j Yj的最后一个字符相等。此时匹配了一个 Y j Y_j Yj的字符, j j j指针向前移动, i i i不动。 E d i t ( i , j ) = E d i t ( i , j − 1 ) + 插 入 成 本 Edit(i,j)=Edit(i,j-1)+插入成本 Edit(i,j)=Edit(i,j1)+
  • X [ i ] ! = Y [ j ] X[i]!=Y[j] X[i]!=Y[j]时, X i X_i Xi删除一个字符:删除 X i X_i Xi末尾的字符。此时 X [ i − 1 ] X[i-1] X[i1] Y [ j ] Y[j] Y[j] 可能相等也可能不等,j不动,i指针向前移动。 E d i t ( i , j ) = E d i t ( i − 1 , j ) + 删 除 成 本 Edit(i,j)=Edit(i-1,j)+删除成本 Edit(i,j)=Edit(i1,j)+
  • X [ i ] ! = Y [ j ] X[i]!=Y[j] X[i]!=Y[j]时, X i X_i X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值