程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了是否有类似diff的算法来处理移动的线段?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决是否有类似diff的算法来处理移动的线段??

开发过程中遇到是否有类似diff的算法来处理移动的线段?的问题如何解决?下面主要结合日常开发的经验,给出你关于是否有类似diff的算法来处理移动的线段?的解决方法建议,希望对你解决是否有类似diff的算法来处理移动的线段?有所启发或帮助;

由于您要求的是算法而不是应用程序,因此请阅读WalterTichy的“带有块移动的字符串到字符串校正问题”。还有其他内容,但这是原始内容,因此您可以查找引用它的论文以找到更多信息。

该论文引用了保罗·海克尔(PaulHeckel)的论文“隔离文件之间差异的一种技术”,并提及了其算法:

解决方法

diff程序具有各种形式,相当擅长计算两个文本文件之间的差异,并且比完整显示两个文件更紧凑地表达它。它以一系列插入和删除的行(或在某些情况下为更改的行,但等同于删除后插入)的顺序显示差异。patch源控制系统使用相同或非常相似的程序或算法,以最小化表示同一文件的两个版本之间的差异所需的存储。在这里和这里讨论该算法。

但是当文本块在文件中 移动 时,它会下降。

假设您具有以下两个文件,a.txt并且b.txt(假设它们都是几百行而不是只有六行):

a.txt   b.txt
-----   -----
1       4
2       5
3       6
4       1
5       2
6       3

diff a.txt b.txt 显示如下:

$ diff a.txt b.txt 
1,3d0
< 1
< 2
< 3
6a4,6
> 1
> 2
> 3

a.txt到的更改b.txt可以表示为“采用前三行并将其移至末尾”,但是diff两次显示已移动的行的完整内容,却没有机会@R_282_10584@地描述这一大更改。

请注意,diff -e该文本块仅显示一次,但这是因为它不显示已删除行的内容。

diff算法是否有一个变体,(a)保留diff了表示插入和删除的能力,(b)有效地表示了移动的文本块而不必显示其全部内容?

大佬总结

以上是大佬教程为你收集整理的是否有类似diff的算法来处理移动的线段?全部内容,希望文章能够帮你解决是否有类似diff的算法来处理移动的线段?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: