Algorithm 文档差异算法是如何工作的?

Algorithm 文档差异算法是如何工作的?,algorithm,diff,Algorithm,Diff,我想实现word文档不同,它需要实现什么算法?一个差异本质上只是为了实现 最佳解决方案需要知识,因此它是一个相当复杂的问题来解决 但是,也可以通过构造后缀树来实现。这两种算法都有概述。参见。正如Ben S所指出的,差分问题通常可以通过解决最长的公共子序列问题来解决。更具体地说,是应用于该问题的经典算法之一(例如在Unix实用程序的实现中)。一般来说,diff'ing通常由。另请参见维基百科文章的“关于: diff的操作基于 求最长公共子序列 问题 在这个问题中,你有两个 项目顺序: a b

我想实现word文档不同,它需要实现什么算法?

一个差异本质上只是为了实现

最佳解决方案需要知识,因此它是一个相当复杂的问题来解决


但是,也可以通过构造后缀树来实现。这两种算法都有概述。

参见。

正如Ben S所指出的,差分问题通常可以通过解决最长的公共子序列问题来解决。更具体地说,是应用于该问题的经典算法之一(例如在Unix实用程序的实现中)。

一般来说,
diff
'ing通常由。另请参见维基百科文章的“关于:

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本身,因为它能够在文档之间“区分”,如下所述:


lcs最优化的解决方案是,这里有一种算法方法,我用来实现不同的office 2007文档。

通常情况下,您假设文档是字符流或字节流。这里的问题是关于word文档。在实现这种算法之前,您需要问自己一个问题uestion是蓝色8pt Verdana的“Hello World”,与红色10pt Arial的“Hello World”相同。是的,显然,基本算法需要额外的逻辑来解析这些差异,但算法的核心仍然是相同的。您是使用它来显示差异,还是以最佳方式存储差异?有两个目的操作系统要有一个diff算法实现:只存储不同版本之间的差异,或者显示不同版本之间的差异。这些差异很大(没有双关语).LCS通常仅用于显示差异,但为了实现最佳存储,需要使用更高级的算法。例如,如果您从文档的一个部分剪切了一大部分,然后将其粘贴到另一个部分,那么一个好的存储算法会检测到这一点,而不会将其存储为“嘿,这里刚刚出现了很多新数据。”“@Lasse-同意。由于最初的提问者谈论的是Word文档,我认为他们更感兴趣的是扩散的“视觉”方面,而不是存储方面。但是,对于存储端来说,您是正确的,您将研究增量编码/压缩()等。