我有一个非常长的位序列,称为
到目前为止,我尝试了朴素的方法。循环遍历A,然后对于每个位,循环遍历x的长度,在A中从该位置开始计算不匹配的位数,如果不超过k,则报告该位置。这种算法效率低下。如果A有n_A位,x有n_x位,则运行时间为
据说无论
A
,和一个较短的位序列x
。当对齐它们后,存在k
个或更少的不匹配位时,相同长度的两个位序列模糊匹配。我希望找到所有这样的x在A中的模糊出现。到目前为止,我尝试了朴素的方法。循环遍历A,然后对于每个位,循环遍历x的长度,在A中从该位置开始计算不匹配的位数,如果不超过k,则报告该位置。这种算法效率低下。如果A有n_A位,x有n_x位,则运行时间为
O(n_A * n_x)
。据说无论
k
是多少,这可以在O(n_A * log(n_A))
内完成。提供的提示是利用快速傅里叶变换。请记住,对于两个输入和,卷积产生,
类似于多项式乘法。我不清楚如何使用此提示。任何帮助都将不胜感激。