算法笔记:字符串编辑距离(Edit Distance on Real sequence,EDR)/ Levenshtein距离

37 篇文章 3 订阅
订阅专栏

1 算法介绍

  • 给定两个长度分别为n和m的轨迹tr1和tr2,最小距离的匹配阈值e
    • 两条轨迹之间的EDR距离就是需要对轨迹tr1进行插入、删除或替换使其变为tr2的操作次数
  • 动态规划的算法如下

 红色的是还没有考虑的两个轨迹部分;黑色是已经考虑过的两个轨迹部分

 2 举例

  •  在p1处“插入”一点、将p2'“替换”替换为p3和在p5处“插入”一点,共计3个操作使两条轨迹相等(即对应点距离均小于阈值),故其EDR值为3

3 python代码

3.1 自行实现

import numpy as np
def EDR(TR1,TR2):
    m,n = len(TR1)+1,len(TR2)+1

    matrix = np.zeros((m,n))
    #matrix[i][j]表示 TR1还剩i个元素,TR2还剩j个元素时,他们的编辑距离

    for i in range(1,m):
        matrix[i][0] = i 
    for j in range(1,n):
        matrix[0][j] = j
    #这两个for循环表示,一个轨迹没有元素了,另一个轨迹还有n个元素,那么此时编辑距离为n(插入/删除n个值

    for i in range(1,m):
        for j in range(1,n):
            if TR1[i-1]==TR2[j-1]:
                cost = 0
            else:
                cost = 1
            #判断两个轨迹对应位置的值是否一致
            
            matrix[i][j]=min(matrix[i-1][j]+1,matrix[i][j-1]+1,matrix[i-1][j-1]+cost)
            #删除,插入,替换,这三个操作哪个编辑距离小一点,就选哪个


    return matrix


disEDR=EDR("ivan1","ivan2")
disEDR[-1][-1],disEDR
'''
(1.0,
 array([[0., 1., 2., 3., 4., 5.],
        [1., 0., 1., 2., 3., 4.],
        [2., 1., 0., 1., 2., 3.],
        [3., 2., 1., 0., 1., 2.],
        [4., 3., 2., 1., 0., 1.],
        [5., 4., 3., 2., 1., 1.]]))
'''

3.2 editdistpy包

EDR的快速实现

import sys

from editdistpy import levenshtein

string_1 = "ivan1"
string_2 = "ivan2"


levenshtein.distance(string_1, string_2,sys.maxsize)
#1


levenshtein.distance(string_1, string_2,0.5)
#-1

如果编辑距离小于第三个变量,那么就返回编辑距离,否则返回-1

参考内容:

轨迹相似性度量方法_轨迹相似度_意念回复的博客-CSDN博客

字符串编辑距离(Levenshtein距离)算法 - BlackStorm - 博客园 (cnblogs.com)

edlib:轻量级,超快速CC ++(&Python)库,用于使用编辑Levenshtein距离进行序列比对
02-02
Edlib· 一个轻量级且超快速的C / C ++库,用于使用进行序列比对。 计算两个字符串编辑距离很简单: edlibAlign ( " hello " , 5 , " world! " , 6 , edlibDefaultAlignConfig()).editDistance; Edlib也可用于Python ,代码位于 。 @cjdoris也了非官方的。 产品特点 计算编辑距离Levenshtein距离) 。 它可以找到最佳的比对路径(有关如何将第一个序列转换为第二个序列的说明)。 它只能找到对齐路径的开始和/或结束位置-当速度比拥有精确的对齐路径更重要时,它很有用。 支持多种:global( NW ),prefix( SHW )和infix( HW ),它们分别对不同的场景有用。 您可以扩展字符相等性定义,使您可以使用通配符,不区分大小写的对齐方式或使用简并核苷酸。 即使找到对齐路径,它也可以轻松处理小的序列或非常大的序列,而占用的内存却很少。 得益于Myers的位向量算法,超级快。 内容 建造 介子 构建Edlib的主要方法是通过构建工具。 要求
编辑距离计算函数及测试程序
12-07
编辑距离计算函数及测试程序:事件复杂度O(m*n),空间复杂度O(2*min(m,n)+1).可以用来计算字符串编辑距离、相似度;可以用于论文相似度量、地理信息等基于相似度量的查询等环境。由于空间复杂度地,因此可用于大文本如硕博论文的相似比较。
轨迹相似性度量方法
sinat_41128705的博客
12-29 3299
轨迹相似性度量分类及简介。
【论文研读】通过deep representation learning轨迹聚类
weixin_34050389的博客
12-19 1055
1.论文目的: 输入轨迹序列,通过滑动串口算法提取物体的运动行为特征,捕捉轨迹的时空不变的特征。 在特征提取模块,每个轨迹都转化成一个特征序列描述物体运动,进一步利用序列对自动编码器进行序列编码学习固定长度的深度表示,学习到的表示方法对物体的运动特征进行了robustly encode,从而得到时空不变的聚类。 2.经典聚类算法 K-mean DBSCAN spectral cluster...
编辑距离
p15008340649的博客
04-10 184
传送门 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: sitten (k->s) sittin (e->i) sitting (->g) 所以kitten和sitting的编辑距离是3。俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。 给出两个字符串a,
EDR距离论文理解与JAVA实现
UESTC Like
07-23 1472
轨迹时序数据距离度量方法- EDR距离论文理解与JAVA实现EDR 距离Edit Distance on Real Sequence)基本思想 EDR 距离Edit Distance on Real Sequence) 详见paper Robust and Fast Similarity Search for Moving Object Trajectory 基本思想 对于两个时间序列,例如轨迹序列,两序列间的相似度距离为 一个序列转化为另一个序列所需要要的最小操作次数。对于序列中的元素点(轨
计算字符串编辑距离(python)
浮云
06-27 2072
编辑距离python
Python实现常见的回文字符串算法
09-19
主要介绍了Python实现常见的回文字符串算法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
HDOJ 1711 Number Sequence(KMP算法)可AC(C++版本)
04-03
相比于朴素的字符串匹配算法,KMP算法的时间复杂度更低,特别是在模式串较长或者需要多次匹配的情况下,KMP算法能够显著提高匹配效率。 总的来说,KMP算法是一种非常实用的字符串匹配算法,被广泛应用于各种文本...
Crypt-DNASequence:将字符串加密和解密为 DNA 序列
06-23
字符串加密和解密为 DNA 序列 概要 use Crypt::DNASequence; Crypt::DNASequence -> encrypt( $input_filename ); Crypt::DNASequence -> decrypt( $encrypted_file ); 描述 该模块很幼稚,只是为了好玩。 它将...
sequence_comparison:使用FASTA字符串序列比较脚本进行项目
03-30
sequence_comparison 使用FASTA字符串序列比较脚本进行项目
时间序列:五种编辑距离实现【01/5-Levenshtein
gongdiwudu的专栏
01-14 2910
一、什么叫编辑距离?在计算语言学和计算机科学中,编辑距离是一种通过计算将一个字符串转换为另一个字符串所需的最小操作数来量化两个字符串(例如单词)之间的不同程度的方法。编辑距离可在自然语言处理中找到应用,其中自动拼写更正可以通过从字典中选择与相关单词有低距离的单词来确定拼写错误单词的候选更正。在生物信息学中,它可用于量化 DNA 序列的相似性,可以将其视为字母 A、C、G 和 T 的字符串。 按照维基百科,编辑距离有五种, 1)Levenshtein distance,李维斯坦距离; ...
JUST技术:如何通过轨迹相似性度量方法,发现新冠易感人群 | 技术前沿
李瑞远-时空数据
09-21 1456
2020年初,一场突如其来的新冠疫情,使得公共卫生安全问题受到了全社会的广泛关注。与此同时,如何及时掌握人与人之间的病毒传播路径,及时发现确诊人员的密切接触者,成为了各地政府疫情防控最迫切的需求。 JUST基于大规模轨迹数据,针对易感人群难以发现的问题,开发并提供了关联人群查询功能,通过对轨迹进行匹配挖掘,能够快速找出与确诊人员行动轨迹在时空维度有过“接触”的人群。其中,实现该功能的很重要的一项工作就是:如何衡量两条轨迹的相似性。下文将简要介绍一些常见的轨迹相似性度量方法。 轨迹作为一种时空数据[.
Dynamic Programming Algorithm (DPA) for Edit-Distance
向量∑烟灰
05-24 822
The words `computer and `commuter are very similar, and a change of just one letter, p->m will change the first word into the second. The word `sport can be changed into `spot by the deletion of t
时序数据相似度距离衡量- DTW距离
UESTC Like
07-23 4339
时序数据相似度距离衡量- DTW距离DTW (Dynamic Distace Warpping) 距离DTW简介Java实现DTW距离 DTW (Dynamic Distace Warpping) 距离 传统基于范数距离 (e…g, 欧式距离,曼哈顿距离) 的序列相似度比较面临两个很大的问题: 不能处理两个长度不一的序列 会产生local time shifting问题, 即由于序列的采样率不同或序列的产生频率不同,两条意义相同的序列可能会有很大的范数距离。这是由于在此方法下,序列只能够一一匹配。 比如两
基于时域表示的序列数据分类方法(一)——基于距离度量的序列数据分类方法
weixin_46237636的博客
11-08 1159
基本思想是通过构建距离度量,衡量待分类序列数据与已知类别序列数据在时域表示空间上的距离。此方法的核心是如何构建一个合适的距离度量。根据不同的匹配方式,还可以分为锁步度量和弹性匹配度量。锁步度量中最常使用的是欧氏距离。弹性匹配度量则常用动态时间规整(DTW–Dynamic Time Warping)和编辑距离
【每日一题】有效的括号(C语言实现)
最新发布
ylfxw的博客
05-29 79
3.如果是右括号,就取栈顶括号,看是否与右括号相对应,如果匹配,就继续判断,但在比较之前需要先判空,如果栈为空,就要返回false。最后在对应之后,我们在循环外还需要判断栈是否为空,以防出现多出一个括号的情况;在题目下给出的示例中,我们可以知道括号不仅要对应,而且顺序也不能颠倒;如果不为空,pop栈顶的括号,判断左右括号是否匹配;如果是右括号,先判断栈是否为空,为空返回false。先把栈初始化,之后在循环中判断栈中是否为左括号。2.判断如果是左括号就压入栈;1.先定义一个栈,并初始化;
字符串序列类的设计:类Sequence 私有数据成员:  位置索引 int last  字符串数组 string s[100] 公有函数成员:
04-23
好的,我明白你的问题。下面是Sequence类的设计: ```cpp class Sequence { private: int last; // 位置索引 string s[100]; // 字符串数组 public: Sequence(); // 默认构造函数 Sequence(const Sequence& seq); // 拷贝构造函数 ~Sequence(); // 析构函数 int length() const; // 获取序列长度 string get(int i) const; // 获取序列中第 i 个字符串的值 void set(int i, string str); // 设置序列中第 i 个字符串的值 void add(string str); // 在序列末尾添加一个字符串 void remove(int i); // 移除序列中第 i 个字符串 void clear(); // 清空序列 }; ``` 该类中包含一个位置索引和一个字符串数组用于存储字符串序列。公有成员包含常用的获取和设置元素值,添加和删除元素,以及清空整个序列的功能。同时还包括默认构造函数,拷贝构造函数和析构函数,以保证对象的正确创建和销毁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 数学知识整理:二重积分 31976
  • 文计笔记2: 计算机硬件知识 22319
  • python包介绍:GeoPandas(初识) 22118
  • statsmodels 笔记:seasonal_decompose 时间序列分解 20215
  • RMSE、MAE等误差指标整理 17297

分类专栏

  • 各专栏目录 31篇
  • 论文笔记 257篇
  • 科研 18篇
  • 数据集 35篇
  • 地理 4篇
  • NTU课程 54篇
  • Typescript & JavaScript & HTML 12篇
  • Julia 8篇
  • SG
  • 计算机其他 17篇
  • 线性代数 24篇
  • 强化学习 58篇
  • 讲座笔记 5篇
  • C#笔记 1篇
  • R 10篇
  • NLP 2篇
  • NTU 7篇
  • siren
  • python库整理 311篇
  • GNN 9篇
  • 其他 62篇
  • leetcode 131篇
  • pytorch学习 101篇
  • 文计 7篇
  • 软件使用 2篇
  • 文件操作 2篇
  • 算法 37篇
  • 博弈论 6篇
  • 机器学习 144篇
  • 数据库笔记 3篇
  • 演化学习 2篇
  • 数学知识整理 47篇
  • 留学信息

最新评论

  • 论文笔记:Temporal Regularized Matrix Factorization forHigh-dimensional Time Series Prediction

    Haruのpopura: 楼主你好,第三节公式6中提到时间正则化项为负对数似然函数,请问一下,当时序模型为AR时,公式(9)里面的时间正则化项T_AR()里面为什么并不等于AR模型的负对数似然函数?按理说AR模型里面是包含高斯噪声的,假设服从N(0,P)的正态分布,AR的似然函数里面也应该包含参数P的,但是公式(9)里面并没有

  • 论文笔记:Temporal Regularized Matrix Factorization forHigh-dimensional Time Series Prediction

    Haruのpopura: 我要是能早点看到就好了!!

  • python 笔记 根据用户轨迹+基站位置,估计基站轨迹+RSRP

    Dustin5173: 牛,来自一个从业者的点赞

  • statsmodels 笔记:seasonal_decompose 时间序列分解

    leon_lihang: 这种情况通常发生在时间序列的起始阶段或者结束阶段,因为在计算趋势时,需要考虑到较短的时间窗口。当时间序列的起始或结束的数据点不足以支撑趋势的计算时,就会导致趋势部分出现空值。 这种情况的处理方式可以是: 忽略空值:在分析时忽略这些空值,聚焦于非空值的数据点。 插值处理:通过插值方法填补这些空值,使得趋势部分更加平滑。常见的插值方法包括线性插值、多项式插值等。 调整参数:尝试调整seasonal_decompose函数的参数,比如调整趋势部分的窗口大小,以期减少空值的出现。 总的来说,出现空值的趋势部分并不罕见,可以通过上述方法进行处理,以便更好地分析和理解时间序列数据。 【以上回答来源chatgpt】

  • 论文笔记:Integrating Large Language Models with Graphical Session-Based Recommendation

    专家-百锦再@新空间代码工作室: 这篇文章的亮点在于作者对复杂问题的深入剖析,特别是在第二节中提到的潜在解决方案。这些方案不仅涵盖了各个层面的考虑,而且给出了可行的实施建议。这种全面性和可操作性使得这篇文章非常有价值。

大家在看

  • 为什么现在手机广告这么多?怎么才能少看广告?
  • 水果蔬菜检测 食品农药残留检测 鸡蛋营养成分分析
  • Java基础的语法---StringBuilder 629
  • Spring (27)Spring中的声明式事务管理
  • 在 OpenKylin 上安装 Docker 79

最新文章

  • 论文笔记:Vision GNN: An Image is Worth Graph of Nodes
  • 论文笔记:PATCHMIXER: A PATCH-MIXING ARCHITECTURE FOR LONG-TERM TIME SERIES FORECASTING
  • pytorch笔记:topk
2024
05月 58篇
04月 72篇
03月 35篇
02月 13篇
01月 39篇
2023年392篇
2022年251篇
2021年555篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司梧州优化推荐濮阳SEO按天收费多少钱漳州百搜标王报价郴州品牌网站设计公司福田百度竞价包年推广公司塘坑网站优化软件推荐扬州网站改版哪家好南阳SEO按天计费报价许昌网站优化按天收费舟山seo优化公司天门网络推广黄石关键词按天计费公司大理关键词按天收费哪家好肇庆网站制作设计多少钱果洛网站建设公司龙华企业网站改版价格黔东南关键词排名包年推广多少钱马鞍山网站推广方案报价益阳阿里店铺运营价格上饶百度网站优化排名多少钱潮州关键词排名包年推广多少钱坪山网站推广系统推荐长春网站设计模板价格延安百度竞价包年推广多少钱榆林百度标王推荐木棉湾至尊标王报价淮南至尊标王公司苏州网站建设多少钱达州网站优化排名哪家好丹竹头关键词排名价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化