Ну, вообще говоря, diff
'обычно решается с помощью Самой длинной общей подпоследовательности . Также см. Раздел « Алгоритм» статьи Википедии о Diff :
Операция diff основана на
решение самой длинной общей подпоследовательности
проблема.
В этой задаче у вас есть два
последовательности элементов:
a b c d f g h j q z
a b c d e f g i j k r x y z
и вы хотите найти самый длинный
последовательность элементов, которая присутствует в
обе оригинальные последовательности в одном и том же
порядок. То есть вы хотите найти новый
последовательность, которая может быть получена из
первая последовательность, удалив некоторые
элементы, а из второй последовательности
удаление других предметов. Вы также хотите
эта последовательность будет так долго, как
возможный. В этом случае это
a b c d f g j z
Из самой длинной общей подпоследовательности
это всего лишь маленький шаг, чтобы получить
дифференцированный вывод:
e h i q k r x y
+ - + - + + + +
Тем не менее, все это прекрасно работает с текстовыми документами. Поскольку документы Word фактически представлены в двоичном формате и содержат много информации и данных о форматировании, это будет намного сложнее. В идеале, вы можете посмотреть на автоматизацию самого Word, так как он имеет возможность «различать» между документами, как описано здесь:
Совет Microsoft Word. Как сравнить два документа на предмет различий