Джин Майерс в 1986 году разработал очень хороший алгоритм для этого, описанный здесь: Разностный алгоритм O (ND) и его вариации .
Этот алгоритм требует времени, пропорциональногоОтредактируйте расстояние между последовательностями, чтобы оно было намного быстрее, когда разница невелика.Он работает, зацикливаясь на всех возможных расстояниях редактирования, начиная с 0, до тех пор, пока не найдет расстояние, для которого может быть построен сценарий редактирования (в некоторых отношениях двойственный для LCS).Это означает, что вы можете «выручить рано», если разница превышает некоторый порог, что иногда удобно.
Я считаю, что этот алгоритм все еще используется во многих diff
реализациях.