11
我有一個非常長的比特序列,稱爲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
。提供的提示是利用快速傅里葉變換。請記住,對於兩個輸入和,卷積產生其中
類似於多項式乘法。我不清楚如何使用這個提示。任何幫助將非常感激。
太棒了!謝謝。它現在很有意義:) – darksky
我認爲你這裏的意思只是用-1代替0。所以實際上,我們應該用 - ( - 1)^ b來代替位b。但我使用這個技巧解決了問題。我會在幾天後發佈我自己的解決方案,以解釋爲什麼如果沒有人回答它的工作原理。 – darksky
很抱歉摧毀了'4444'的真棒分數,但這是一個很好的暗示 - 並且顯然對於OP來說非常有用。 – Floris