Algorithm 从应用于其中一个对象的面片开始推断对象之间的差异

Algorithm 从应用于其中一个对象的面片开始推断对象之间的差异,algorithm,diff,patch,Algorithm,Diff,Patch,我想知道,对于我需要解决的这类问题,除了朴素的算法之外,是否还有其他已知的方法 我有两个类型相同的对象o1和o2,其中包含一些字段f1、f2和f3: o1: f1: A f2: B f3: C o2: f1: D f2: B f3: null 现在我需要的是弄清楚o2发生了什么变化。我收到了一个补丁,使o1等于o2(就其字段的值相等而言)。例如: 补丁:f1=D,f3=null 在这种情况下,我应该推断o2中没有任何变化,因为将此补

我想知道,对于我需要解决的这类问题,除了朴素的算法之外,是否还有其他已知的方法

我有两个类型相同的对象o1和o2,其中包含一些字段f1、f2和f3:

o1: 
    f1: A 
    f2: B 
    f3: C
o2: 
    f1: D 
    f2: B 
    f3: null
现在我需要的是弄清楚o2发生了什么变化。我收到了一个补丁,使o1等于o2(就其字段的值相等而言)。例如:

  • 补丁:f1=D,f3=null
    在这种情况下,我应该推断o2中没有任何变化,因为将此补丁应用于o1使其与o2的当前状态相同
  • 补丁:f1=D,f3=E
    在这种情况下,我应该推断o2的变化只是f3=E
  • 补丁:f1=D
    在这种情况下,我应该推断o2的变化只是f1=C

我认为以上三个例子涵盖了所有情况。现在最简单的算法是在o1上应用补丁,然后将o2与补丁的o1进行比较以找出差异,但我想知道是否有不同的算法或优化的方法来实现这一点。

你所说的
对象是什么意思,它存储在文本文件或其他对象中,如在C#或Java之类的编程语言中。顺便说一下,我不认为这会改变任何事情。我不确定我是否理解你想要实现的目标。如果你有补丁本身,它是否已经包含了所有必要的信息,关于哪个元素将其值更改为什么?另一方面,如果一个对象只有两个版本,没有补丁,只需逐个元素进行比较。Alex,我理解这很棘手,但问题是我有一个补丁应用于o1,使o1处于某种状态,然后我需要知道o1和o2之间的区别。这个差值,应用于o2,会使o2处于o1现在的状态。我刚才描述的是一个解决方案,而不是问题。理论上,我收到的补丁包含对o2的更改,但它描述了您必须对o1应用的更改,以使其处于o2状态,通常应用更小的补丁。我意识到这是令人难以置信的。引用我自己的话:“这个差异是什么,适用于o2,会把o2在相同的状态o1现在是”。在之前的评论中,我没有说这个差异正是我需要知道的