Обычно это называется проблемой выравнивания последовательности .На самом деле не имеет значения, какие объекты вы выравниваете - биты, символы, слова или основы ДНК - если алгоритм работает для одного типа элементов, он будет работать для всего остального.Важно то, хотите ли вы глобальное или локальное выравнивание.
Глобальное выравнивание , которое пытается выровнять каждый остаток в каждой последовательности, наиболееполезно, когда последовательности похожи и примерно одинакового размера.Общая методика глобального выравнивания - это алгоритм Needleman-Wunsch , который основан на динамическом программировании .Когда люди говорят о расстоянии Levinstain, они обычно подразумевают глобальное выравнивание.Алгоритм настолько прост, что несколько человек обнаружили его независимо, и иногда вы можете встретить алгоритм Вагнера-Фишера , который, по сути, то же самое, но упоминается чаще в контексте расстояния редактирования между двумя строками.символов.
Локальное выравнивание более полезно для разнородных последовательностей, которые, как подозревают, содержат области сходства или сходные мотивы последовательностей в их более широком контексте последовательности. Алгоритм Смита-Уотермана - это общий метод локального выравнивания, также основанный на динамическом программировании.Он довольно редко используется при обработке естественного языка, а чаще - в биоинформатике.