Re: Кто автор алгоритма diff и WinDiff
От: Imatic Россия  
Дата: 22.12.05 13:31
Оценка:
Здравствуйте, RealBobEx, Вы писали:

RBE>В описанаии и реализации алгоритма WinDiff от Microsoft есть несколько неясных моментов.

RBE>Может быть кто-нибудь знает его автора или может подсказать где взять более четкое описание?

Конечно, это не WinDiff, но я бы хотел представить вам и остальным свое видение решения
этой задачи. Может быть кому-нибудь это будет интересно.

Для своих целей я решил реализовать это по-своему,
возможно это неэффективно, но работало хорошо: берется текстовый файл и строится
матрица равенства строк между собой, то есть каждая строка сравнивается с каждой.
Эта операция очень быстрая, поэтому сравнение производилось очень быстро.
в итоге, получается матрица такого вида(1, если строки равны, 0, если не равны):

  здесь файлы равны
  1 0 0 0 0 0 0 0 0
  0 1 0 0 0 0 0 0 0
  0 0 1 0 0 0 0 0 0
  0 0 0 1 0 0 0 0 0
  0 0 0 0 1 0 0 0 0 
  0 0 0 0 0 1 0 0 0
  0 0 0 0 0 0 1 0 0
  0 0 0 0 0 0 0 1 0
  0 0 0 0 0 0 0 0 1


  здесь файлы неравны
  1 0 0 0 0 0 0 0 0
  0 1 0 0 0 0 0 0 0
  0 0 0 1 0 0 0 0 0 <- здесь строка вставлена
  0 0 0 0 1 0 0 0 0
  0 0 0 0 0 1 0 0 0
  0 0 0 0 0 0 0 0 0 <- здесь строка удалена
  0 0 0 0 0 0 1 0 0 
  0 0 0 0 0 0 0 0 0 <- здесь строка изменена
  0 0 0 0 0 0 0 0 1


Вот, такой алгоритм. Анализируя эту матрицу можно узнать многое о сравнении двух текстов.
Может быть этот алгоритм далёк от оптимального, но для несложного приложения его вполне хватает.

Особенно не ругайте!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.