gpt4 book ai didi

c++ - 在非常大的序列中找到相似的子序列

转载 作者:太空狗 更新时间:2023-10-29 21:42:52 25 4
gpt4 key购买 nike

想象序列是Pi

141592653589793238462643383279502884197....

Pi 存储在一个文本文件中。

我想在 Pi 中找到一个相似的子序列,例如相似度为 80%。

例如我想在Pi中定位33384,所以

14159265358979 32384 62643383279502884197....

位数约为百万。

我需要一种高效的算法来搜索这些相似性。

我应该使用数据库而不是文件吗?

任何想法表示赞赏。

编辑:

我找到了一些算法,我需要检查一下,我会告诉你结果。

顺便说一下,算法是 Knuth–Morris–Pratt

最佳答案

您可以通过 pi 序列提取 M 个字符(M - 搜索长度)子序列。然后将子序列与搜索字符串进行比较。

然后只是异或搜索和子序列。 XOR 后计数不为 0 字节。计数是差异的数量。将差异计数与搜索字符串长度进行比较可以得出差异百分比。

如果差异合适,你会得到相似的子串。

更新:

您将得到 N-M 倍的子序列,比较复杂度为 O(M)。 N为pi串长度,M为子串长度

关于c++ - 在非常大的序列中找到相似的子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com