と呼ばれる非常に長いビットA
シーケンスと、短いビット シーケンス がありますx
。同じ長さの 2 つのビット シーケンスは、それらを整列させた後、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
。提供されるヒントは、高速フーリエ変換を利用することです。2 つの入力との場合、畳み込みはどこで生成されるかを思い出してください。
多項式の乗算に似ています。このヒントの使い方がよくわかりません。どんな助けでも大歓迎です。