【问题标题】:Fuzzy Bit Matching模糊位匹配
【发布时间】:2013-09-27 16:26:23
【问题描述】:

我有一个很长的位序列,称为A,还有一个较短的位序列,x。相同长度的两个位序列在对齐后,有k或更少的不匹配位时,是模糊匹配的。我想在 A 中找到所有这些模糊的 x。

到目前为止,我已经尝试过天真的方法。遍历A,然后对于每个位,遍历x的长度,计算从A中该位置开始的不匹配位的数量,如果不超过k,则报告该位置。该算法效率不高。如果 A 有 n_A 位,x 有 n_x 位,则运行时间为O(n_A * n_x)

有人告诉我这可以在O(n_A * log(n_A)) 中完成,而不管k。提供的提示是利用快速傅里叶变换。请记住,对于两个输入 和 ,卷积产生

类似于多项式乘法。我不清楚如何使用这个提示。任何帮助将非常感激。

【问题讨论】:

    标签: algorithm fuzzy-search


    【解决方案1】:

    反转 x,将每个位 b 替换为 (-1)**b,然后进行卷积。我会让你解释你的家庭作业接下来要做什么。

    【讨论】:

    • 太棒了!谢谢你。现在很有意义:)
    • 我认为您的意思只是将 0 替换为 -1。所以实际上,我们应该将位 b 替换为 -(-1)^b。但我用这个技巧解决了问题。几天后我会发布我自己的解决方案来解释为什么如果没有人回答它会起作用。
    • 很抱歉破坏了你在4444 上的精彩分数,但这是一个很好的提示——显然对 OP 有效。
    猜你喜欢
    • 2016-02-11
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    相关资源
    最近更新 更多