【问题标题】:Can CRC32 be used as a "Rolling Hash" as with the Rabin–Karp string search algorithm?CRC32 能否像 Rabin–Karp 字符串搜索算法一样用作“滚动哈希”?
【发布时间】:2021-12-25 05:11:42
【问题描述】:

我在 MCU 上有一个硬件 CRC32 外设,我想用它来加速字符串搜索。通常这是通过https://en.wikipedia.org/wiki/Rolling_hash#cite_note-3 此处描述的滚动哈希函数之一完成的。我希望使用 CRC32 可以做到这一点。

我找到了类似问题https://stackoverflow.com/a/22356300/1615960 的答案,但我意识到它只能从当前的 CRC 开始并向后工作,一次将 CRC 反转一个字符。我需要做的是使用第 n 个最近的字符修剪 CRC。例如:

  • 在“helloworld”中搜索“owo”。
  • “hel”的 CRC32 = X
  • 从 X = CRC32 of "el" = Y 中删除 "h"
  • 将“l”添加到“ell”= Z 的 Y = CRC32
  • 依此类推....直到找到匹配的“owo”CRC32。

我的直觉是 CRC32 不可能做到这一点,我希望有人能证明我错了。

谢谢!

【问题讨论】:

    标签: hash crc32 string-search


    【解决方案1】:

    是的,这是可能的。但是我看不到如何使用硬件 CRC-32 来帮助解决这个问题。简单地重新计算每三个字节的 CRC 会更快。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2023-03-09
      • 2017-07-27
      • 2013-12-23
      • 1970-01-01
      • 2018-11-22
      相关资源
      最近更新 更多