各コレクション内のオブジェクトが一意である場合、関連するビジネス上の問題を解決するのに非常にうまく機能しますが、両方のコレクションに一意でないオブジェクトが多数存在する場合、奇妙な結果になる傾向があります。
Patience Diff アルゴリズム (これも Longest Increase Subsequence に基づいています) を使用するアプローチは、一意でないオブジェクトが存在する場合に必要な結果を提供するようです。ただし、Patience Diff が適しているかどうかを判断する前に、適切な場合にそれを問題に適用するには、アルゴリズムをよりよく理解する必要があります。
ステップ 1 から 3 で何が起こるかは理解していますが、ステップ 4 で何が起こるかはわかりません。次に何が起こるか -- ドキュメントの残りの最初/最後の行との一致がない場合、確かにまだ終了していません (一意の行がもうないため)。それとも、1 つの文書内の固有でないすべてのブロックを、別の文書内の固有でないすべてのブロックと比較して、何らかの方法で最適な一致を選択しますか?
http://bramcohen.livejournal.com/73318.html
- 両方の最初の行が一致する場合は一致し、ペアが一致しなくなるまで 2 番目、3 番目などと一致します。
- 両方の最後の行が一致する場合は一致し、ペアが一致しなくなるまで、最後から 2 番目、最後から 2 番目などと一致します。
- 両側で正確に 1 回出現するすべての行を検索し、それらの行で最長共通サブシーケンスを実行して、それらを一致させます。
- 一致する行の間の各セクションで手順 1 ~ 2 を実行します。