对于基准测试和压力测试子串搜索算法有哪些好的测试用例?

2024-04-25

我正在尝试评估不同的子字符串搜索(ala strstr)算法和实现,并寻找一些精心设计的针和干草堆字符串,这些字符串将捕获最坏情况的性能和可能的极端情况错误。我想我可以自己解决它们,但我认为有人必须在某个地方收集大量测试用例......


一些想法和对自己的部分回答:

暴力算法的最坏情况:

a^(n+1) b in (a^n b)^m

e.g. aaab in aabaabaabaabaabaabaab

SMOA 最坏的情况:

就像是yxyxyxxyxyxyxx in (yxyxyxxyxyxyxy)^n。需要进一步细化。我试图确保每次进展只是部分匹配长度的一半,并且最大后缀计算需要最大量的回溯。我很确定我走在正确的轨道上,因为这种类型的案例是迄今为止我发现的实现 SMOA 的唯一方法(这是渐近的)6n+5)比 glibc 的 Two-Way(渐近地)运行得慢2n-m但具有相当痛苦的预处理开销)。

对于基于滚动哈希的最坏情况:

无论字节序列如何,都会导致与针的哈希值发生哈希冲突。对于任何相当快的散列和给定的针,应该很容易构造一个其散列在每个点都与针的散列相冲突的干草堆。然而,同时创建长的部分匹配似乎很困难,这是获得最坏情况行为的唯一方法。当然,对于最坏情况的行为,针必须具有一定的周期性,以及通过仅调整最终字符来模拟散列的方法。

双向的最坏情况:

似乎是非常短的针,具有非平凡的 MS 分解 - 类似于bac- 大海捞针在针的右半部分包含重复的误报 - 类似于dacdacdacdacdacdacdac。该算法变慢的唯一方法(除了 glibc 作者实现得不好之外……)是使外循环迭代多次并重复产生该开销(并使设置开销显着)。

其他算法:

我真的只对算法感兴趣O(1)在太空中并且预处理开销较低,因此我没有过多地研究它们的最坏情况。至少博耶-摩尔(不进行修改使其O(n))有一个不平凡的最坏情况,它变成O(nm).

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

对于基准测试和压力测试子串搜索算法有哪些好的测试用例? 的相关文章

  • 将指针转换为浮点数?

    我有一个unsigned char 通常 这指向一块数据 但在某些情况下 指针就是数据 即 铸造一个int的价值unsigned char 指针 unsigned char intData unsigned char myInteger 反
  • 泛型与接口的实际优势

    在这种情况下 使用泛型与接口的实际优势是什么 void MyMethod IFoo f void MyMethod
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 我们如何将数据从一个打开的表单传递到另一个打开的表单?

    winform中如何将数据从一个窗体传递到另一个打开的窗体 在 Windows 应用程序中 一个窗体打开另一个窗体 当我在父表单中输入一些数据时 这些数据将立即反映在另一个子表单中 这将如何发生 取决于你想要多花哨 最简单的方法就是直接调用
  • 避免集合已修改错误

    Issue 我有以下代码 foreach var ItemA in GenericListInstanceB ItemA MethodThatCouldRemoveAnyItemInGenericListInstanceB 显然我得到一个错
  • 具有多重继承的类的 sizeof

    首先 我知道 sizeof 取决于机器和编译器的实现 我使用的是 Windows 8 1 x64 gcc 5 3 0 没有标志传递给编译器 我从大学讲座中得到了以下代码 include
  • Entity Framework 4.1 RC:Code First EntityTypeConfiguration 继承问题

    我尝试使用通用的 EntityTypeConfiguration 类来配置所有实体的主键 以便每个派生的配置类不会重复自身 我的所有实体都实现一个公共接口 IEntity 它表示每个实体必须有一个 int 类型的 Id 属性 我的配置基类如
  • 控制器中的异常处理 (ASP.NET MVC)

    当您自己的代码抛出异常并从控制器中的操作调用时 应该如何处理 我看到很多最佳实践的例子 其中根本没有 try catch 语句 例如 从存储库访问数据 public ViewResult Index IList
  • 如何防止字符串被截留

    我的理解 可能是错误的 是 在 C 中 当你创建一个字符串时 它会被实习到 实习生池 中 这保留了对字符串的引用 以便多个相同的字符串可以共享操作内存 但是 我正在处理很多很可能是唯一的字符串 一旦完成每个字符串 我需要将它们从操作内存中完
  • 获取给定EntityType的导航属性

    我在用VS2010 EF4 0 需要如下功能 private string GetNaviProps Type entityType eg typeof Employee NorthwindEntities en new Northwind
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 简单的文档管理系统和API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么C++变量是指针时不需要正确定义?

    我对 C 语言完全陌生 特别是指针 经验主要是 PHP 并且希望对以下内容进行一些解释 我已经尝试寻找答案 这两行代码如何能够在我的程序中完成完全相同的工作 第二行似乎违背了我迄今为止所学到和理解的关于指针的一切 char disk 3 D
  • 为什么 std::ranges::filter_view 对象必须是非常量才能查询其元素?

    include
  • C 的“char”使用什么字符集? [复制]

    这个问题在这里已经有答案了 简单的问题 我最近开始用 C 编程 有一个简单的问题 C 编程语言在其 char 类型中使用什么字符集 例如 ASCII 还是取决于软件 操作系统 char 本质上是 1 个字节 主要在所有操作系统上 所以默认情
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 实体框架代理创建

    我们可以通过使用来停止在上下文构造函数中创建代理 this Configuration ProxyCreationEnabled false 在 EF 4 1 中创建代理有哪些优点和缺点 代理对于两个功能是必需的 延迟加载 导航属性在第一次
  • 什么时候使用静态库需要头文件?

    如果我在 Linux 中用 C 创建一个静态库并生成 a 文件 我 或其他人 如何使用该库 例如 我的库定义了一个类 我认为仅仅提供 a 文件是不够的 还需要提供头文件 我如何知道 a 文件必须提供哪些头文件 例如 我是否需要提供我的库代码
  • 将 scanf 与 NSString 一起使用

    我希望用户输入一个字符串 然后将输入分配给 NSString 现在我的代码如下所示 NSString word scanf s word The scanf http www cplusplus com reference clibrary

随机推荐

  • 隐藏包中未记录的函数 - 使用 .function_name?

    我需要在包中提供一些功能 但我不想导出它们或为它们编写文档 我只是将它们隐藏在另一个函数中 但它们需要可供多个函数使用 因此这样做会成为范围界定和维护问题 这样做的正确方法是什么 我的意思是他们是否需要特殊的名字 他们是否会去其他地方 R子
  • 使用 Castle Fluent 接口注册拦截器

    我正在尝试实施通过拦截器 无法弄清楚如何通过流畅的机制注册接口 我看到一个 Component For
  • R/Javascript:崩溃和扩展的网络

    我正在使用 R 编程语言 我有以下图形网络数据 library igraph library visNetwork from lt c Boss TeamA TeamA TeamA SubteamA1 SubteamA1 SubteamA1
  • Trie 节省了空间,但是如何节省空间呢?

    我对 Trie 实现如何节省空间并以最紧凑的形式存储数据感到困惑 如果你看下面的树 当您在任何节点存储字符时 您还需要存储对该字符的引用 因此对于字符串的每个字符 您需要存储其引用 好吧 当常见字符到达时 我们节省了一些空间 但在存储对该字
  • 使用 Cognito 登录 Facebook 时重定向到 URL,但出现错误

    我创建了一个用户投票并将 Facebook 连接到它 这是 AWS 控制台中的外观 我也设置了email作为注册的必需属性 However when I visit my hosted login page and click Contin
  • Gatsby v2 网站无法正确加载 CSS

    在我的开发环境中 该网站看起来符合预期 但是当我运行 gatsby build 时 我的 CSS 无法正确显示 如果我手动导航到另一个页面 则 CSS 按预期显示 没有错误 但我确实收到此警告 资源http localhost 9000 s
  • 播放来自 BLE 的原始音频数据流

    我正在开发一个 iOS 应用程序 我正在接收来自的原始数据流BLE 我在用着AVAudioEngine带缓冲器 let format AVAudioFormat commonFormat AVAudioCommonFormat pcmFor
  • TimeStream + Grafana:无法识别数据中的序列

    在 AWS Timestream 上跳跃 我在 grafana 集成方面遇到了一些问题 我构建了一个查询 返回按天和 事物 分组的事件计数 并希望在图表中显示该结果 甚至哪一个都不重要 In a table the data is disp
  • Java中子进程的重定向I/O(为什么ProcessBuilder.inheritIO()不起作用?)

    我正在按以下方式启动一个流程 try final Process mvnProcess new ProcessBuilder cmd c mvn version directory new File System getProperty u
  • 使用带有指向字符的指针的 scanf 函数

    我写了下面的代码 int main char arrays 12 char pointers scanf s arrays scanf s pointers printf s arrays printf s pointers return
  • 将 KQL 查询使用的所有表名放入 C# 中的列表中

    假设我有一个 KQL 查询 它使用多个表来检索数据 我需要用 C 编写一些代码 它将获取给定 KQL 查询使用的所有表 并将所有这些表名称放入列表中 简而言之 我需要分析每个 KQL 查询以了解它从哪些表获取数据 我已经尝试通过编写以下代码
  • 安装新的 Magento 扩展需要注销/登录,否则您会在管理页面中收到 404

    两个不同的人告诉我 以下是 Magento 的一个已知问题 安装新扩展时 管理员尝试访问 配置扩展程序 并获取 404 页面 去的方法 解决此问题的方法是注销然后登录到他的管理面板 在设计扩展时有没有办法解决这个问题 这方面有一个悬而未决的
  • 使用正则表达式验证 mysql 语句

    我正在用java编写一个程序 在对话框中用户需要输入MySQL SELECT 语句 程序必须验证该语句并继续运行 我的问题是 有没有办法以及如何使用正则表达式验证语句 我需要 仅 正则表达式模式 谢谢 好吧 也许是为了扩展正则表达式 但是对
  • postgresql 中一个非常大的表的分页和过滤(键集分页?)

    我有一个科学数据库 目前有 4 300 000 条记录 它是一个科学数据库 有一个 API 为其提供数据 到 2020 年 6 月 我可能会有大约 100 000 000 条记录 这是表 输出 的布局 ID sensor ID speed
  • Android:可点击的图像视图小部件

    我想做一个非常简单的小部件 它必须仅由一个图像视图组成 1 收到短信时 它应该改变图像 2 点击它也应该改变图像 我尝试使用 ImageButton 进行制作 但失败了 在收到短信的事件上更改图像时出现问题 新图像的比例错误 无论如何 现在
  • mysema 的 Maven apt-get-plugin

    我在 pom xml 中添加了以下代码片段 但在 Eclipse 中执行部分出现错误 Plugin execution not covered by lifecycle configuration com mysema maven mave
  • 气流:找不到 dag_id

    我在不同的 AWS 机器上运行气流服务器和工作线程 我已经在它们之间同步了 dags 文件夹 然后运行airflow initdb在两者上 并在运行时检查 dag id 是否相同airflow list tasks
  • XDocument.Descendants(itemName) - 查找限定名称时出现问题

    我正在尝试从网站读取 XML RSS Feed 因此我使用异步下载并创建一个XDocument与XDocument Parse Method 该文档的目的非常简单 如下所示
  • 气流,在 dag 运行之前标记任务成功或跳过它

    我们有一个巨大的 DAG 其中有许多小而快速的任务和一些大而耗时的任务 我们只想运行 DAG 的一部分 我们发现最简单的方法是不添加我们不想运行的任务 问题是我们的 DAG 有很多相互依赖关系 因此当我们想要跳过某些任务时 不破坏 DAG
  • 对于基准测试和压力测试子串搜索算法有哪些好的测试用例?

    我正在尝试评估不同的子字符串搜索 ala strstr 算法和实现 并寻找一些精心设计的针和干草堆字符串 这些字符串将捕获最坏情况的性能和可能的极端情况错误 我想我可以自己解决它们 但我认为有人必须在某个地方收集大量测试用例 一些想法和对自