热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

如何知道计算弦之间的Levenshtein距离所进行的运算?

如何解决《如何知道计算弦之间的Levenshtein距离所进行的运算?》经验,为你挑选了2个好方法。

使用函数stringdist,我可以计算字符串之间的Levenshtein距离:它计算将字符串转换为另一个字符串所需的删除,插入和替换的次数。例如,stringdist("abc abc","abcd abc") = 1因为在第二个字符串中插入了“ d”。

是否有可能知道为获取两个琴弦之间的Levenshtein距离而进行的操作?还是要知道两个字符串之间不同的字符(在此示例中,只有“ d”)?谢谢。

library(stringdist)
stringdist("abc abc","abcde acc") = 3

我想知道:

插入了“ d”

插入了“ e”

“ b”被替换为“ c”

或更简单地说,我想要列表(“ d”,“ e”,“ c”)。



1> tmfmnk..:

使用adist(),您可以检索以下操作:

drop(attr(adist("abc abc","abcde acc", count = TRUE), "counts"))

ins del sub 
  2   0   1 

来自?adist

如果counts为TRUE,则将转换计数作为此矩阵的“ counts”属性返回,作为3维数组,其维数与x的元素,y的元素以及转换的类型(插入,删除和替换)。



2> Konrad Rudol..:

这称为Needleman-Wunsch算法。它既可以计算两个字符串之间的距离,又可以计算所谓的traceback,从而可以重新构造对齐方式。

由于在比较生物序列时,这个问题大多出现在生物学中,因此该算法(及相关算法)在R包{Biostrings}中实现,该包是Bioconductor的一部分。

由于此程序包实现比简单的Levenshtein距离更通用的解决方案,因此使用情况更复杂,并且使用情况也相应较长。但是,您的基本用法如下:

library(Biostrings)

dist_mat = diag(27L)
colnames(dist_mat) = rownames(dist_mat) = c(letters, ' ')

result = pairwiseAlignment(
    "abc abc", "abcde acc",
    substitutiOnMatrix= dist_mat,
    gapOpening = 1, gapExtension = 1
)

但是,这不会简单地为您提供列表c('b', 'c', 'c'),因为该列表不能完全代表实际发生的情况。相反,它将返回两个字符串之间的对齐方式。这可以表示为具有替换和空白的序列:

score(result)
# [1] 3
aligned(result)
as.matrix(aligned(result))
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
# [1,] "a"  "b"  "c"  "-"  "-"  " "  "a"  "b"  "c"
aligned(result)

—对于第二个字符串中的每个字符,它提供原始字符串中的相应字符,用替换插入的字符-。基本上,这是将第一个字符串转换为第二个字符串的“食谱”。请注意,它将仅包含插入和替换,不包含删除。为了获得这些,您需要以另一种方式执行对齐(即交换字符串参数)。


推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
    腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • LeetCode 102 - 二叉树层次遍历详解
    本文详细解析了LeetCode第102题——二叉树的层次遍历问题,提供了C++语言的实现代码,并对算法的核心思想和具体步骤进行了深入讲解。 ... [详细]
  • 如何高效渲染JSON数据
    本文介绍了在控制器中返回JSON结果的方法,并详细说明了如何利用jQuery处理和展示这些数据,为Web开发提供了实用的技巧。 ... [详细]
  • 编程解析:CF989C 花朵之雾 (构造算法)
    本文深入探讨了CF989C '花朵之雾'问题的构造算法,提供了详细的解题思路和代码实现。 ... [详细]
  • 探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ... [详细]
  • 3DSMAX制作超现实的体育馆模型
    这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ... [详细]
  • Hanks博士是一位著名的生物技术专家,他的儿子Hankson对数学有着浓厚的兴趣。最近,Hankson遇到了一个有趣的数学问题,涉及求解特定条件下的正整数x,而不使用传统的辗转相除法。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • 本文详细介绍了如何在最新版本的Xcode中重命名iOS项目,包括项目名称、应用名称及相关的文件夹和配置文件。通过本文,开发者可以轻松完成项目的重命名工作。 ... [详细]
  • 探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
author-avatar
小海豚1977
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有