У меня очень длинная последовательность бит, называемая A, и более короткая последовательность бит, x. Двухбитовые последовательности одинаковой длины нечетко согласованы, когда после их выравнивания есть k или меньшее количество несоответствующих бит. Я хочу найти все такие нечеткие вхождения x внутри A.
До сих пор я пробовал наивный подход. Переходите через A, затем для каждого бита, проведите по длине x, подсчитайте количество несоответствующих битов, начинающихся в этой позиции в A, и если оно не превышает k, сообщите об этой позиции. Этот алгоритм неэффективен. Если A имеет бит n_A, а x имеет n_x бит, время работы O(n_A * n_x).
Мне сказали, что это можно сделать в O(n_A * log(n_A)) независимо от k. Предоставленная подсказка - использовать быстрое преобразование Фурье. Помните, что для двух входов
и
свертка создает
, где

аналогично многочленному умножению. Мне непонятно, как использовать этот намек. Любая помощь приветствуется.