Аннотация:
Задача выравнивания (сопоставления) двух текстов с целью выделения общих и различающихся фрагментов обычно имеет не единственное решение.
Вычисление лучшего сопоставления канонически базируется на поиске длиннейшей общей подпоследовательности совпадений (LCS) и широко используется в разных целях.
Однако многие из современных систем управления версиями предпочитают альтернативные эвристические алгоритмы, работающие не только быстрее, но обычно с лучшим чем поиск LCS результатом.
В статье показаны принципиальные недостатки известных алгоритмов выравнивания последовательностей:
даже когда длиннейшая общая подстрока имеет близкую к LCS длину,
LCS может состоять из огромного числа коротких малоинформативных фрагментов;
известные альтернативные алгоритмы начинают с выделения наиболее информативного общего фрагмента,
что порой исключает произвольно длинную последовательность общих фрагментов близкого качества.
Абстрактная задача выравнивания последовательностей рассмотрена как модель выделения изменений в совместно редактируемом тексте с целью минимизации вероятности конфликта (наложения) при слиянии изменений.
Целевая функция вводится как совокупное количество всех подстрок, содержащихся в не изменившихся подстроках.
Такая оптимизация свободна от упомянутых недостатков. Предложен алгоритм кубической сложности.
(Англ.)
Ключевые слова и фразы:сходство строк, выравнивание последовательностей, расстояние редактирования, diff, LCS, метрика Левенштейна, разработка ПО, непрерывная интеграция.
УДК:
004.416
Поступила в редакцию: 14.12.2014 Подписана в печать : 28.01.2015