何时使用 Rabin-Karp 或 KMP 算法?

2024-01-02

我使用以下字母生成了一个字符串。{A,C,G,T}。我的字符串包含超过 10000 个字符。我正在其中搜索以下模式。

  • ATGGA
  • TGGAC
  • CCGT

我要求使用字符串匹配算法O(m+n)运行时间。

m = pattern length
n = text length

Both KMP and Rabin-Karp algorithms有这个运行时间。在这种情况下最合适的算法是什么(Rabin-Karp 和 KMP 之间)?


当您想要搜索多个模式时,通常正确的选择是使用阿霍-科拉西克 http://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm,这在某种程度上是一个概括KMP https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm。现在,在您的情况下,您只搜索 3 种模式,因此 KMP 可能不会慢很多(最多三倍),但这是一般方法。

拉宾-卡普 https://en.wikipedia.org/wiki/Rabin%E2%80%93Karp_algorithm如果我们假设永远不会发生冲突,则更容易实现,但如果您遇到的问题是典型的字符串搜索,则无论您有什么输入,KMP 都会更加稳定。然而,Rabin-Karp 还有许多其他应用,而 KMP 则不适用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用 Rabin-Karp 或 KMP 算法? 的相关文章

  • 如何在字符串vba中包含引号

    我想存储以下文本 Test1 Monday Test Abcdef 全部在字符串中包含引号 我知道要在字符串中包含引号 我必须包含 之前 但在这里这不是一个很好的解决方案 因为我在文本中有太多这样的解决方案 知道如何一次完成这一切吗 您有两
  • 使用并集查找(又名不相交集)检测图是否是二分图

    我正在 Spoj 上做一个问题 基本上可以简化为检测图是否是二分图 我正在尝试使用 dfs 为图表着色 但它太慢了 有人评论这个 没有 bfs 没有 dfs 没有二部图 简单的并查集就可以做到 确实速度很快 提示 1 偶数长度的环不会影响两
  • 如何有效地找到距给定点最远的点(从一组点中)?

    我正在寻找一种算法或数据结构来解决以下问题 给你一组点 S 然后你会得到另一个点形式的 Q 查询 对于每个查询 找到集合中距离给定点最远的点 集合中最多有 10 5 个点和 10 5 个查询 所有点的坐标都在 0 到 10 5 范围内 我想
  • 如何在 xslt 2.0 中解析字符串到日期

    是否可以像这样转换字符串30042013 2013 年 4 月 30 日 日期格式 所以我可以稍后在类似的函数中使用它format date 就像托马拉克说的 你可以使用substring and concat 要构建一个字符串 您可以将其
  • 数学组合的完美最小哈希

    首先定义两个整数N and K where N gt K 两者都在编译时已知 例如 N 8 and K 3 接下来 定义一组整数 0 N or 1 N 如果这使答案更简单 并调用它S 例如 0 1 2 3 4 5 6 7 的子集数量S wi
  • 使用 Java 将摩尔斯电码转换为英文文本

    我最近有一项任务 将英语转换为摩尔斯电码 并将摩尔斯电码转换为英语 输入莫尔斯电码时 我的老师希望各个字母之间用 1 个空格分隔 单词之间用 分隔 例如 是 成为 我能够完美地将英语转换为莫尔斯电码 但我对莫尔斯电码转换为英语感到不知所措
  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • C 支持原始字符串吗?

    C 11 添加了对原始字符串文字的支持 例如 R foo A weird string foo C有这样的东西吗 如果有 标准是什么版本 C11 如果没有 有谁知道它是否正在计划中以及是否有编译器支持它 C有这样的东西吗 如果有 标准是什么
  • 给定一个具有多个重复条目的数组,找到一个重复条目 O(N) 时间和常数空间

    我们得到了一个大小为 N 的数组 其中包含 0 到 N 2 范围内的整数 包括 0 和 N 2 该数组可以有多个重复的条目 我们需要在 O N 时间和常量空间中找到重复条目之一 我正在考虑取数组中所有条目的乘积和总和 以及 0 到 N 2
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 如何在Python中按AaB而不是ABa顺序对字符串进行排序

    我正在尝试对字符串进行排序 为 punnetsquare 制作基因型 我目前的实现是 unsorted genotype ABaB sorted genotype sorted list unsorted genotype sorted s
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • C 中的指针、数组、字符串和 Malloc

    我目前正在学习 C 语言中的字符串 指针和数组 我尝试编写一个程序 其中数组保存三个指向字符串地址的指针 这一切似乎都有效 但程序的行为很奇怪 这是代码 char getUserDetails char host localhost cha
  • 正则表达式查找字符串中的整数和小数

    我有一个像这样的字符串 str1 12 ounces str2 1 5 ounces chopped 我想从字符串中获取金额 无论它是否是小数 12 或 1 5 然后获取紧邻的前一个测量值 盎司 我能够使用一个非常基本的正则表达式来获取测量
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • 使用字符串中的变量名称访问变量值,R

    Intro 一个数据集有大量的age year变量 age 1990 age 1991 etc 我有一个字符串值数组length age years 表示这些变量 使得age years 1 回报 age 1990 etc Need 我想搜
  • n 或 nlog(n) 比常数时间或对数时间更好吗?

    在 Coursera 上的普林斯顿教程中 讲师解释了遇到的常见增长顺序函数 他说 线性和线性算术运行时间是 我们努力的目标 他的推理是 随着输入大小的增加 运行时间也会增加 我认为这是他犯了错误的地方 因为我之前听过他提到线性增长顺序对于高
  • 在FLUTTER/DART中,为什么我们有时在声明变量时要在“String”后面加一个问号?

    在演示应用程序中 我们找到一个实例 最终字符串 标题 gt 为什么要加这个 在 String 类型之后 class MyHomePage extends StatefulWidget MyHomePage Key key this titl

随机推荐

  • plist本地化问题

    我的 plist 有一个奇怪的问题 我正在使用 xcode 4 每当我尝试将本地化放在这个 plist 上时 我都无法编辑它 我的意思是 当我编辑和更改 plist 中的值时 应用程序仍然采用旧值 即使我删除它 我仍然加载了旧的 plist
  • SQL Server 2012 - “可重复读”隔离级别如何工作?

    我觉得我应该知道这一点 但我找不到任何具体概述这一点的内容 所以就这样吧 The 文档 https msdn microsoft com en us library ms173763 aspx对于 SQL Server 将 REPEATAB
  • 在 Java 中创建动态二维矩阵

    我想要一个动态矩阵 行数和列数未知 通过单击按钮填充它 但还有更多 我不想添加整行 而只是一次添加一个单元格 单击一下 添加一个单元格 当然不是随机的 第一行的第一个单元格 第一行的第二个单元格 然后第二行的相同单元格 依此类推 我了解 U
  • 为每个项目执行 npm install 会占用太多驱动器空间

    有没有什么方法可以将 npm install 路由到硬盘驱动器的特定部分 当我执行 npm install 时 它会在驱动器的该部分中创建 node module 文件夹 当我运行任何项目时 它会在驱动器的该部分中查找依赖项 就像单身一样p
  • UIWebView 获取 HTML 源

    我正在尝试获取 UIWebView 的 HTML 源代码 而无需再次重新下载 也称为进行另一次下载 例如 NSData dataWithContentsOfURL NSURL URL 或启动 NSURLRequest 浏览 UIWebVie
  • 在生产环境中部署 Sql Server Reporting Services 报告

    如何在生产盒上部署 Sql 服务器报告 在本地这不是问题 我只需指定 url 然后右键单击项目并说部署 将其部署在我的本地服务器上 但生产服务器却并非如此 我建议您创建可以在生产服务器上执行的 rs 脚本 查看 Reporting Serv
  • 如何在 WordPress 页面中创建不同的可编辑部分?

    我一直在 WordPress 上构建我的第一个主题 但在将内容添加到不同部分时遇到了问题 我的 HTML 有点像这样 div lt Text gt div div lt Text and Images gt div div lt Text
  • 哪些 GTK+ 元素支持哪些 CSS 属性?

    在将我自己的 CSS 应用到 GTK 应用程序时 我注意到某些元素忽略某些 CSS 属性 而其他元素则忽略其他元素或不忽略它们 这导致我搜索哪些元素支持哪些 CSS 属性的概述 到目前为止我找不到任何这样的概述 例如Gtk Label不支持
  • 用于公开通用接口的非通用版本的模式

    假设我有以下用于公开分页列表的界面 public interface IPagedList
  • 如何在单击时向按钮添加类

    很抱歉提出了愚蠢的问题 但我无法在单击时向按钮添加类 我有按钮列表 单击后我需要更改活动按钮的背景 我不知道如何在单击列表内部并添加类时获取元素的索引 我需要用纯 JavaScript 来实现 只需要离开 document ready fu
  • 在 onStart() 方法中停止 Windows 服务

    我想停止 Windows 服务onStart 客户没有许可证时的方法 我用service Stop 但它不起作用 protected override void OnStart string args try bridgeServiceEv
  • Seaborn 热图中按行的颜色比例

    我想在 Seaborn 中制作热图 其中颜色按行缩放 我的意思是 一行中的最高值在图例上具有最高的颜色 而一行中的最低值具有最低的颜色 我怎样才能做到呢 这是我的代码 sales sales pivot table index Source
  • 在 Swift 中调用 NSException.raise()

    我试图通过调用 NSException raise 在 Swift 中引发异常 定义是 class func raise name String format format String arguments argList CVaListP
  • “Mapbox 地图”的自动缩放

    在情节网站上Python 中的地图配置和样式 https plotly com python map configuration automatic zooming or bounds fitting描述了如何自动缩放 地理地图 impor
  • Leiningen:如何自定义 .m2 文件夹的位置?

    我想更改 leiningen 存储所有依赖项的 m2 文件夹的位置 在 Linux 上 有可能实现这一目标吗 我已经检查了 lein sh 脚本的源代码和所有环境变量 但似乎没有任何内容指向 HOME m2 对于莱宁根 v2 将 profi
  • 如何创建一个实现 java.util.collections 的类

    我正在尝试创建一个类说MyStack这将实现一个 java util collections 类 MyStack将覆盖集合类的一些方法 例如添加 类似于推送 删除 类似于弹出 等 我打算在与Set或集合类的其他接口 除了MyStack不会是
  • 如何提高客户端-服务器架构应用程序的性能?

    我们有一个基于客户端 服务器架构的产品 有关所使用的技术堆栈的一些详细信息 客户端 Java Swing 服务器 RMI Java 数据库 Oracle 客户端位于世界不同地方 但java服务器和oracle数据库位于瑞典的同一台机器上 因
  • Laravel 项目 UML 类图

    我一直在谷歌上搜索 MVC PHP 框架的 UML 示例以及与 PHP 项目相关的项目 UML 图 但不幸的是总是出现 java 和 c 示例 我对 UML 图有一点了解 但没有真正的例子来了解它是如何使用的 我有一个正在开发的 Larav
  • 如何限制在 Django 管理站点中查看的查询集/记录?

    默认情况下 Django 管理站点显示相关模型 表的所有记录以供查看 如何只显示符合特定条件的记录 在您的管理定义中 您可以定义queryset 返回该模型管理员的查询集的方法 例如 class MyModelAdmin admin Mod
  • 何时使用 Rabin-Karp 或 KMP 算法?

    我使用以下字母生成了一个字符串 A C G T 我的字符串包含超过 10000 个字符 我正在其中搜索以下模式 ATGGA TGGAC CCGT 我要求使用字符串匹配算法O m n 运行时间 m pattern length n text