在 rabin-karp 滚动哈希中选择基数和模素数

2024-03-28

哈希函数的解释为维基百科 http://en.wikipedia.org/wiki/Rolling_hash

它说:“a 和 n 的选择对于获得良好的散列至关重要;”并引用了一篇感觉不相关的线性同余生成器文章。我无法弄清楚这些值是如何选择的。有什么建议么?


该算法的基础是次数最多的非零多项式d最多有d零。每个长度-k字符串有其自己关联的次数多项式k- 1,我们通过减去相关字符串的多项式并评估来筛选可能的匹配项a。如果字符串相等,则结果始终为零。如果字符串不相等,则结果为零当且仅当a是多项式差的零点之一(这是对素性要求提出的事实n,作为整数 modn否则就不是一个字段)。

至少在理论上,我们想要a是随机的,这样不经意的对手就不能以任何频率制造误报。如果我们不希望遇到麻烦,那么选择可能会更好a从而乘以a很便宜(例如,二进制展开a有少量的 1 位)。然而,某些选择对于典型的字符串集来说是不好的(例如,a= 1).我们想要n足够大以避免误报(概率(k - 1)/n)是随机的,但足够小,并且最好是特殊形式,以便模计算有效。

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

在 rabin-karp 滚动哈希中选择基数和模素数 的相关文章

  • 在 O(n) 时间和 O(1) 空间中生成数组的随机排列

    我们必须生成数组 1 2 3 n in O 1 space 我能够做到O n space I did O n 空间解决方案 首先存储数组 然后将其随机化 但是如何在不存储数组的情况下做到这一点O 1 space 我只是生成随机数 而不是存储
  • python 课堂上有太多自我

    我正在学习 Python OOP 并尝试将 Java 类转换为 Python 类 请参阅此 PDF 中的第 15 页了解 Java 代码 google 文档link https docs google com open id 1eqzajO
  • 排序数组中的最小成本路径

    给定一个排序数组A e g 4 9 10 11 19 搬家费用i gt j is abs A j A i 从给定元素开始 例如10 找出成本最低的路径 而无需两次访问同一元素 所以在这个例子中解决方案是10 gt 9 gt 4 gt 11
  • 对于基准测试和压力测试子串搜索算法有哪些好的测试用例?

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

    我有一个由多个类实现的算法 所有类都由单元测试覆盖 我想重构它 这将改变两个类的行为 当我更改一个类及其测试时 所有单元测试都会通过 但在重构完成之前算法会变得不正确 这个例子说明 单元测试的完全覆盖有时是不够的 我需要在输入输出方面对整个
  • 基于正方形瓷砖直角三角形象限的坐标系中的边界框

    我正在为游戏创建一个基于图块的 2D 地形系统 然而 我还使用游戏中的坐标 需要能够将边界框映射到 图块坐标 中 并点击边界框接触的每个图块 不用担心 有一个 kd 树和所有工作 美好的 使用定点 真实世界 坐标 我可以将每个图块计为 2
  • 找出数组中重复的元素

    有一个大小为 n 的数组 数组中包含的元素在 1 到 n 1 之间 每个元素出现一次 只有一个元素出现多次 我们需要找到这个元素 尽管这是一个非常常见的常见问题解答 但我仍然没有找到正确的答案 大多数建议是我应该将数组中的所有元素相加 然后
  • 查找集合列表中不相交集合对的数量

    问题陈述如下 给定一个包含 n 个集合的列表 每个集合包含 k 个整数 找到不相交集合对的数量 假设集合的可能元素为正 且上界为 c gt n 并且假设 k 我试图想出一种有效的算法来比 O kn 2 更快地解决这个问题 这是简单解决方案的
  • 强连通分量有什么用?

    我发现了几种可以解释的算法how在有向图中找到强连通分量 但没有解释why你会想要这样做 强连通分量有哪些应用 您应该查看 Coursera 上 Tim Roughgarden 的算法简介课程 对于他所讨论的每一种算法 他都会解释其一些应用
  • 根据 1 的数量查找数字的排名

    令 f k y 其中 k 是非负整数递增序列中的第 y 个数 其二进制表示形式中的 1 数量与 k 相同 例如f 0 1 f 1 1 f 2 2 f 3 1 f 4 3 f 5 2 f 6 3 等等 给定 k gt 0 计算 f k 我们很
  • 软件需求分析[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有很多用于编写和管理需求的工具 但是有什么好的工具可以用来审查它们吗 我不是在谈论managing审查 但寻找常见需求错误的自动化工具 例
  • 迭代地实现合并排序

    我正在尝试实现合并排序 以便更好地理解它是如何工作的 在下面的代码中 我尝试对数字数组进行排序 我目前拥有的代码有错误并且在无限循环中运行 我现在正在尝试以非递归方式解决这个问题 function mergeSort arr var mid
  • DAG 中两个节点之间的路径数

    我想找到 DAG 中两个节点之间的路径数 O V 2 和 O V E 是可以接受的 O V E 提醒我以某种方式使用 BFS 或 DFS 但我不知道如何使用 有人可以帮忙吗 对 DAG 进行拓扑排序 然后从目标向后扫描顶点到源 对于每个顶点
  • 链表、数组和硬件内存缓存

    虽然之前有人问过关于链表与数组的问题 但答案大多归结为我们大多数人在某些时候可能已经学到的东西 列表擅长插入和删除 数组擅长随机访问 现在 像 Bjarne Stroustrup 这样受人尊敬的人已经argued https www you
  • 是否可以有效地计算 lambda 演算项?

    我最近用 lambda 演算编写了很多程序 我希望能够实时运行其中一些程序 然而 尽管趋势函数范式基于 lambda 演算和 B 约简规则 但我找不到一个不是玩具 不以效率为目的的评估器 函数式语言应该很快 但我所知道的那些语言实际上并不提
  • 在内存无法容纳的大文件中查找“n”个最重复的单词/字符串

    我想验证我的伪代码 建议优化和更好的方法 最重复的单词 按排名 此处的排名定义了您要选择的排名 即前 X 个最重复的单词 外部按字母顺序对所有文件进行排序 下列的这里提到的算法 http www tcs fudan edu cn rudol
  • C++ STL 下一个排列与组合

    我知道我可以使用std next permutation在包含元素的某些容器上 1 2 3 这将生成该序列的 6 种排列 我想做的是给定一些设置 1 2 3 4 5 6 生成大小为 3 的所有可能的排列 因此对于这个例子 4 3 2 将是由
  • 光线追踪三角形

    我正在用java编写一个光线追踪器 并且我能够追踪球体 但我相信我追踪三角形的方式有问题 据我了解 这是基本算法 首先确定射线是否与plane三角形已打开 剪裁所有点 使它们与三角形位于同一平面上 因此xy以平面为例 根据沿着新平面向任意方
  • 用于计算井字游戏独特状态的高效算法

    我正在尝试构建一个井字游戏来演示和实验机器学习算法 并且我发现了一个有趣的问题 例如 井字棋板可以是mirrored 但出于机器学习的目的 这两种状态是等效的 x o o x o o x x o o 同样地旋转 x o x o o o x
  • 解释暴力算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • MySQL - 删除不在find_in_set中的位置

    我正在尝试找到正确的语法来删除不在逗号分隔行中的记录 table A id product id attribute id 1 123 45 2 123 46 3 124 34 4 124 33 table B code Axis 123
  • JS 按月份对数组中的日期值(对象)进行分组

    我的数组是这样的 myArray date 2017 01 01 num 2 date 2017 01 02 num 3 date 2017 02 04 num 6 date 2017 02 05 num 15 我想把它转换成 myArra
  • 将 Google 地图片段嵌套在自定义片段内

    我正在尝试使用片段创建滑动视图 其中一个片段应该包装 GoogleMap MapFragment 直接在主活动中膨胀 MapFragment 可以 但是通过 FragmentPagerAdapter 会抛出在 Choreographer c
  • 在 WebDriver 方法中获取 Specflow 标签

    我正在使用 C selenium 和 Specflow 运行自动化测试套件 如果可能的话 我希望能够查看分配给当前场景的标签 以便我可以为每个场景实例化某种浏览器类型 使用 XUnit 是否可以实现这一点 登录功能文件 Feature Lo
  • 从通知打开应用程序时不清除所有通知

    根据我的要求 我想要旧的通知 我会给你一个例子 以便你更清楚 例如得到 Notification 1 Notification 2 Notification 3 然后我打开了Notification 3我不想清楚Notification 1
  • 即使使用 Unicode 源和目标 (SSIS),字符也会显示不正确

    我遇到了代码页 unicode 非 unicode 问题 需要专业知识才能理解它 在 SSIS 中 我正在从 UTF8 编码的文本文件中读取数据 数据类型均为 DT WSTR unicode 字符串 目标是 NVARCHAR 它也是 uni
  • 角度错误 - 通用类型“ModuleWithProviders”需要 1 个类型参数

    从 Angular 版本 8 升级到 10 后 运行 ngserve 命令给出错误 node modules ngx tree select src module d ts 11 56 中出现错误 错误 TS2314 通用类型 Module
  • Java:有符号长字符串到无符号长字符串

    有没有一种简单快速的方法将 Java 有符号长字符串转换为无符号长字符串 1 gt 18446744073709551615 9223372036854775808 gt 09223372036854775808 9223372036854
  • 在 OpenGL 3.2 中绘制全屏四边形的最佳方法是什么?

    我正在片段着色器中进行光线投射 我可以想出几种方法来为此目的绘制全屏四边形 要么在剪辑空间中绘制一个四边形 并将投影矩阵设置为单位矩阵 要么使用几何着色器将点变成三角形带 前者使用立即模式 在 OpenGL 3 2 中已弃用 我使用后者是出
  • 如何在 Xamarin.Forms 上使用 Android AutoCompleteTextView

    我正在研究一个Xamarin forms项目但我需要使用Android Widget AutoCompleteTextView我该如何应用它 当我尝试添加时AutoCompleteTextView UserNameAutoComplete
  • 如何创建和实现像素跟踪代码

    好吧 这是我一直在寻找的目标 众所周知 大多数广告和分析公司使用所谓的 像素 代码来跟踪网站浏览 交易 转化等 我确实知道它是如何工作的 问题是如何实现它 跟踪代码由几个部分组成 跟踪代码本身 这是用户在其网页上插入的代码部分 该代码的主要
  • 在 AsyncTask 中使用等待

    当使用wait in an AsyncTask I get ERROR AndroidRuntime 24230 Caused by java lang IllegalMonitorStateException object not loc
  • Intellij 无法理解 SQL 字符串

    大家 我正在制作一个玩具网络应用程序 它使用 Spring Boot 和 Mybatis Mybatis映射器配置Java接口 我希望 Intellij 能够理解 SQL 字符串 但事实并非如此 我期待像下面这样的 如果它理解 Intell
  • curl_getinfo($ch, CURLINFO_CERTINFO) 为空

    我有 PHP 7 2IUS https ius io GettingStarted 存储库 但默认 PHP CentOS 7 x 上的行为相同 Code domain google com ch curl init curl setopt
  • 404 页面适用于本地主机,但不适用于生产(Azure Web App)

    我的本地主机上有一个 404 页面 运行得很好 但是 当它被推送到 Azure Web App 时 却没有 我最初是通过发布工具推送它的 现在我使用从 Github 分支推送的内置功能 我有以下内容网络配置
  • “Line2D”对象没有属性“kind”

    我刚刚开始学习 pandas 当时我想制作 2013 年车站平均值的条形图 以创建一个fig ax plt subplots 对象并将绘图添加到创建的 ax 我在运行这部分代码时收到此错误 Line2D 对象没有属性 kind fig ax
  • 无法在 Tkinter 中禁用自动换行

    我正在尝试在禁用自动换行和水平滚动条的文本窗口中写入 如下所示 root Toplevel root geometry dx d 0 0 350 400 af Frame root chtext Text af width 45 wrap
  • 2.5升级后无法编辑Streamfield页面

    我在本地开发中有一个使用 Streamfield 和 2 个自定义 StructBlock 字段的站点 在 2 4 中工作正常 但升级到 2 5 后 我可以在管理中正常创建页面 但当我保存后在管理中编辑该页面时 会出现错误 我也尝试使用新的
  • 如何将div转换为图像?

    我有一个 div 我需要制作这个 div 的图像并发送给服务器 有什么方法可以使用 Angular 7 来做到这一点吗 我尝试搜索库但没有结果 所有解决方法都使用原生 JS 要将 HTML 内容保存到图像中 您需要使用HTML2CANVAS
  • 在 rabin-karp 滚动哈希中选择基数和模素数

    哈希函数的解释为维基百科 http en wikipedia org wiki Rolling hash 它说 a 和 n 的选择对于获得良好的散列至关重要 并引用了一篇感觉不相关的线性同余生成器文章 我无法弄清楚这些值是如何选择的 有什么