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