Я был сумасшедшим для объяснения алгоритма diff, который работает и эффективен.
Ближайший я получил эту ссылку для RFC 3284 (из нескольких сообщений в блоге Eric Sink), которая в совершенно понятных выражениях описывает формат данных в котором хранятся результаты разностного анализа. Тем не менее, он не имеет никакого упоминания о том, как программа будет достигать этих результатов при выполнении diff.
Я пытаюсь исследовать это из личного любопытства, потому что я уверен, что при реализации алгоритма diff должны быть компромиссы, которые довольно ясны, когда вы смотрите на различия и удивляетесь "почему программа diff выбрала это как изменение вместо этого?"...
Кто-нибудь знает, где я могу найти описание эффективного алгоритма, который завершит вывод VCDIFF?
Кстати, если вам удастся найти описание реального алгоритма, используемого SourceGear DiffMerge, это будет еще лучше.
ПРИМЕЧАНИЕ. Самая длинная общая подпоследовательность не является алгоритмом, используемым VCDIFF, похоже, что они делают что-то умнее, учитывая формат данных, который они используют.
Спасибо!