"Лучший" алгоритм Diff
Мне нужно реализовать алгоритм Diff в VB.NET, чтобы найти изменения между двумя разными версиями фрагмента текста. У меня был разведчик по сети и нашел несколько разных алгоритмов.
Кто-нибудь знает об "лучшем" алгоритме, который я мог бы реализовать?
Ответы
Ответ 1
Ну, я использовал версию С# для codeproject и ее действительно хорошо для того, что я хотел...
http://www.codeproject.com/KB/recipes/diffengine.aspx
Возможно, вы можете получить это переведенное на VB.net через онлайн-конвертер, если вы не можете сделать это самостоятельно...
Ответ 2
Мне нравится Алгоритм разложения (ND) и его вариации Юджина Майерса. Я считаю, что это алгоритм, который использовался в GNU diff. Для хорошего фона см. Wikipedia.
Это довольно теоретично, и вы можете найти исходный код, но я ничего не знаю о VB.
Ответ 3
Я не знаю наверняка, если это лучшие алгоритмы сравнения, но вы можете проверить те ссылки, которые говорят о SOCT4 и SOCT6
http://dev.libresource.org/home/doc/so6-user-manual/concepts
а также:
http://www.loria.fr/~molli/pmwiki/uploads/Main/so6group03.pdf
http://www.loria.fr/~molli/pmwiki/uploads/Main/diffalgo.pdf