Простое решение для каждой подпоследовательности вычислить 5 хвостов и пять голов. Попробуйте тогда все комбинации с углубленным первым поиском.
Более изощренный способ рисования графика, на котором направленные ребра помечены количеством совмещенных букв (например, 4-9). Примените решения коммивояжера или другой подходящий алгоритм, чтобы найти кратчайший путь для всех вершин.
Я уверен, что есть много подходящих инструментов и методов, разработанных для вывода генома. https://www.youtube.com/watch?v=fGxx7TvQ3f4.
Чтобы найти расстояние между двумя последовательностями, инвертируйте одну и найдите самый длинный общий префикс.
def joinifmatch (seq1, seq2, minlen = 4):
tail = seq2 [: 4]
для i в диапазоне (len (seq1), 4, -1)
if seq1.startswith (seq2 [n-i:])
вернуть "% s% S" (seq2 [: n-i], seq1)