Knuth-Morris-Pratt 失效表

2024-02-27

我正在准备考试,正在研究 Knuth-Morris-Pratt 算法。考试内容是不及格表和 DFA 构建。我了解 DFA 构造,但我不太了解如何制作失败表。

如果我有一个模式“abababc”的示例,如何从中构建失败表?解决办法是:

失败表:

0 1 2 3 4 5 6 7

0 0 0 1 2 3 4 0

但我怎样才能得到它呢?不需要代码,只需解释如何获取它是必要的。


细胞的价值i在字符串的失败表中s定义如下:取子串s结束于位置i,单元格中的值是该子字符串的最长固有(不是整个字符串)后缀的长度,并且等于其相同长度的前缀。

让我们以您的示例为例并考虑以下值6。的子串s长度为 6 的是ababab。它有 6 个后缀:babab, abab, bab, ab and b另一方面,它的正确前缀是ababa, abab, aba, ab and a。现在很容易看出,与相同长度的前缀相等的后缀是abab and ab。其中较长的是abab因此单元格 6 中的值是它的长度 -4.

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

Knuth-Morris-Pratt 失效表 的相关文章

  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • 在java中使用BUBBLE SORT对二维字符串数组进行排序

    类似的问题已经被问过 但从来没有关于二维字符串数组 因此在尝试了很长时间之后我找不到我想要的 我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序 作为输入 我收到一个二维字符串数组 一个表 以及您应该排序的
  • n 或 nlog(n) 比常数时间或对数时间更好吗?

    在 Coursera 上的普林斯顿教程中 讲师解释了遇到的常见增长顺序函数 他说 线性和线性算术运行时间是 我们努力的目标 他的推理是 随着输入大小的增加 运行时间也会增加 我认为这是他犯了错误的地方 因为我之前听过他提到线性增长顺序对于高
  • 二维滑动窗口最小值/最大值

    假设我们得到一个大小为 NxN 的像素整数矩阵和一个整数 k 窗口大小 我们需要使用滑动窗口找到矩阵中的所有局部最大值 或最小值 这意味着 如果某个像素与其周围窗口中的所有像素相比具有最小 最大 值 则应将其标记为最小 最大 有一种著名的滑
  • 照片马赛克算法。如何在给定基本图像和瓷砖列表的情况下创建马赛克照片?

    Hy 我要做的是创建一个程序 使用 C 或 C 它将 24 位 像素位图和图像集合作为输入 我必须创建一个马赛克图像 类似于使用库的输入图像给定的图像 创建与输入类似的马赛克照片 到目前为止 我可以访问输入的图像像素及其颜色 但我有点卡住了
  • 数学/算法使图像适合屏幕保留纵横比

    我需要数学 算法方面的帮助来拍摄已知尺寸的图像并适合两个屏幕尺寸之一 720 x 480 或 1280 x 1024 图像尺寸来自 XML 文件 但这些尺寸是 Web 尺寸 我还从 XML 中选择了一些图像 这些图像的分辨率可能比 Web
  • 如何优化分割重叠范围?

    我编写的这个 Python 脚本用于将重叠范围拆分为唯一范围 最后一次迭代 https codereview stackexchange com questions 285932 python script to split overlap
  • 如何在 Unity 中对齐“轨道”或模块化对象?

    我正在开发一个简单的游戏 用户可以在其中放置不同但模块化的对象 例如 轨道 道路等 我的问题是 当将一个物体靠近另一个物体时 如何匹配和放置不同的物体 我的第一种方法是为每个模块对象创建一个隐藏的子对象 一个盒子 并将其放在可以放置其他对象
  • 贪心技术与穷举搜索有何不同?

    我正在为一些示例问题编写伪代码 并且我注意到贪婪技术和详尽搜索之间存在令人担忧的模式 Job 1 Job 2 Job 3 Job 4 Job 5 Person 1 9 2 7 8 Person 2 6 4 3 7 Person 3 5 8
  • 压缩很多小字符串的算法?

    我正在寻找一种压缩小 ASCII 字符串的算法 它们包含大量字母 但也可以包含数字和很少的特殊字符 它们很小 平均约为 50 100 字节 最多 250 个字节 例子 Android show EditText setError above
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • 生成 2D 中的非简并点集 - C++

    我想在 2D 平面中创建一大组非退化的随机点云 整个集合中没有 3 个点在一条直线上 我有一个简单的解决方案 它生成一个随机浮点对 P new x y 并检查到目前为止生成的每对点 P1 P2 是否位于同一行 这需要 O n 2 检查添加到
  • 为什么Python中pop()的大O与pop(0)不同[重复]

    这个问题在这里已经有答案了 他们不应该都是O 1 因为从 Python 列表中的任何位置弹出一个元素涉及销毁该列表并在新的内存位置创建一个元素 蟒蛇的list实现使用动态调整大小的 Carray在引擎盖下 删除元素usually要求您移动后
  • 为什么我们需要检测链表中的循环

    我看到很多关于如何检测链表中的循环的问答 但我想了解的是我们为什么要这样做 换句话说 检测链表中的循环的实际用例是什么 在现实生活中 您可能永远不需要检测链表中的循环 但是执行此操作的算法很重要 我在现实生活中多次使用它们 例如 我经常会递
  • O(n^2) 与 O (n(logn)^2)

    时间复杂度是O n 2 or O n logn 2 better 我知道当我们简化它时 它就变成了 O n vs O logn 2 and logn lt n 但是关于logn 2 n is only less than log n 2 f
  • 算法:找到圆中的峰值

    Given n排列成圆圈的整数显示了一种可以找到一个峰值的有效算法 峰值是不小于它旁边的两个数字的数字 一种方法是遍历所有整数并检查每个整数以查看它是否是峰值 这产生O n 时间 似乎应该有某种方法来分而治之 以提高效率 EDIT 好吧 基
  • 使用 stl sort 对表进行排序

    我有一个巨大的表 约 50Gb 格式为 i j k 来自稀疏矩阵 存储为 uint32 t idx1 idx2 float vals uint32 t tablesize 我想使用给定的比较函数 即 idx1 和 idx2 的函数 对其进行
  • 如何使用networkx删除有向图中的所有相关节点?

    我不确定我的问题的正确术语是什么 所以我只会解释我想做的事情 我有一个有向图 删除节点后我希望所有独立相关的节点也被删除 这是一个例子 假设我删除节点 11 我希望节点 2 也被删除 在我自己的示例中 它们将是 2 以下的节点 现在也必须删
  • 随机排列

    我无法找到一种随机洗牌元素的好方法std vector经过一些操作后 恢复原来的顺序 我知道这应该是一个相当简单的算法 但我想我太累了 由于我被迫使用自定义随机数生成器类 我想我不能使用std random shuffle 无论如何这没有帮
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2

随机推荐

  • 线程“main”中的异常 java.lang.NoClassDefFoundError: gherkin/formatter/Formatter

    我正在学习如何使用 Cucumber 在 JAVA 中编写 BDD 测试脚本 但是 我不断收到上述错误 但不知道为什么 我有 Cukes Gherkin 作为依赖 POM
  • 结构对于其他文件的可见性如何表现?

    这是摘自对 SO 上另一个问题的回答 结构定义对于源文件来说是私有的 除非放置在 共享头文件 没有其他源文件可以访问该成员 struct 即使给定一个指向该结构的指针 因为布局不是 在其他编译单元中已知 如果该结构需要在其他地方使用 则必须
  • Twitter Bootstrap Collapse 不执行任何操作

    我正在尝试使用 twitter bootstrap 网站上提供的示例来崩溃 当我尝试此代码时 单击链接折叠内容没有任何反应 这是我的代码
  • 推送到数组后,待办事项列表不会刷新

    每当我向数组添加待办事项时 它都不会在 html 中刷新 我需要什么来解决这个问题 另外 如何将循环创建的删除按钮连接到函数 const form document querySelector form const input docume
  • 从 crontab 运行存储过程

    我有布局 Mysql DB DB name db name DB User name user name Password 12345 Stored procedure my stored procedure 如何从 crontab 每天执
  • JavaScript 可以像 jQuery 一样使用 prevAll 吗?

    如何在 JavaScript 中实现这一点 function prevAll element some code to take all siblings before element return elements With previo
  • 如何以rails方式获取新创建记录的id?

    假设我有 2 个模型model1 and model2 model1有很多model2 model2 belongs to model1 Save model1 and model2同时 class Model1 lt ActiveReco
  • 从nodejs调用firebase云函数

    我想从另一个 NodeJS 服务器或只是一个 NodeJS 脚本调用 Firebase 的云函数 我的 firebase 函数是 onCall 函数 我在用https www npmjs com package firebase admin
  • Sprockets::FileNotFound 找不到类型为“text/css”的文件“bootstrap”

    这是当我尝试运行 Rails 服务器时在浏览器中遇到的错误 couldn t find file bootstrap with type text css 我的 gemfile 中有这个 gem bootstrap sass gt 3 3
  • 在 QtQuick 中应用 MVVM 模式

    我如何在 QtQuick 应用程序中应用 MVVM 模式 有人能给我任何示例 简单 代码吗 Thanks 使用 C ViewModel https bitbucket org AntyaDev qtquickmvvmexample over
  • 如何减少anaconda目录下的文件数量?

    我在计算集群上运行 conda 环境 其中每个 项目 的文件总数受到限制 最多 200k 个文件 我只创建了几个 conda 环境 anaconda for Python 2 7 每个环境中安装了约 200 个 python 和 R 包 环
  • 如何从 mp4 视频中删除或编辑 Exif?

    我用 Samsung Galaxy II 录制了一个全高清视频 当我将其上传到 YouTube 时 我发现它变成了 90 度 就像纵向布局 1080x1920 而不是 1920x1080 我找到了问题的原因 YouTube 正在读取视频元数
  • JNA 结构和指针映射

    如何将下面的函数映射到java VOID WriteToStruct BOOL 状态 STRUCT MSG RecBuff 这个函数的作用是 1 填充结构 RecBuff2 更新状态 如何映射到 Java 中的布尔指针并访问函数更新的结构数
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • Django 1.8 与 Postgres BDR 9.4.1 的迁移

    我正在尝试使用 BDR 在 Postgres 数据库上运行 Django 迁移 python manage py makemigrations 工作正常 但正在运行 python manage py migrate 结果出现以下错误 ALT
  • 从文本内容生成标签

    我很好奇是否存在一种算法 方法可以通过使用一些权重计算 出现率或其他工具从给定文本生成关键字 标签 此外 如果您为此指出任何基于 Python 的解决方案 库 我将不胜感激 Thanks 实现此目的的一种方法是提取文档中出现频率比您预期的偶
  • ionic - iPAD 中的下拉列表闪烁

    我的 Ionic 应用程序中的下拉列表在 iPAD 中闪烁 1 在下拉点击 2 如果点击外部下拉列表 3 如果点击下拉列表内 将再次显示图像 1 它在 iPhone 5s 上运行良好 但在 iPAD 中则不然 有什么解决方案或解决方法吗 E
  • 如何使用 Selenium 进行搜索、向下箭头并按 Enter 键

    我正在尝试搜索一家公司 在 inhersight com 上向下箭头并单击 Enter 我有以下代码 但它似乎不起作用 from selenium import webdriver from selenium webdriver commo
  • Flutter 可以高效地布局嵌套列表吗?

    这样的布局在 Flutter 中能否实现并高效渲染 Example 黄色和蓝色块都可以有大约 30 个元素 所以我想应该使用类似 ListView builder 的东西 我尝试过嵌套2个ListView builder 内部带有shrin
  • Knuth-Morris-Pratt 失效表

    我正在准备考试 正在研究 Knuth Morris Pratt 算法 考试内容是不及格表和 DFA 构建 我了解 DFA 构造 但我不太了解如何制作失败表 如果我有一个模式 abababc 的示例 如何从中构建失败表 解决办法是 失败表 0