Diff/エディットグラフによる比較アルゴリズムurlhttp://www.slash-zero.jp/archives/program/466http://www.slash-zero.jp/archives/program/468http://www.slash-zero.jp/archives/program/476http://hp.vector.co.jp/authors/VA007799/viviProg/doc5.htm■Diffとは何か感覚的には理解できるDiffだが、厳密なアルゴリズムとしてのDiffとは何かを説明する。要素の追加/削除のみの操作で、「最も少ない操作でAからBを作成する手順(SED)」を見つける作業......である。(以上の2つは別のアルゴリズムであり、結果は異なる場合がある)ここでは、「最も少ない操作でAからBを作成する手順(SED)」を見つけるアルゴリズムについて記述する。「最も少ない操作でAからBを作成する手順(SED)」を求めるためには、エディットグラフというグラフを利用した考え方が使われる。縦軸にAの要素を、横軸にBの要素を並べて格子状のグラフを作る。横軸の要素」であるポイントで、そのポイントと左上のポイントを斜線で結ぶ。いう手順で作成される。右へ進むことは「Bから、Aに無い要素を削除する」ことである下へ進むことは「Aから、Bに無い要素を削除する」ことである斜線を進むことは「一致する箇所を走査(なにもしない)」することである......以上から、エディットグラフで左上から右下に移動する最短経路を求める作業がすなわち、「最も少ない操作でAからBを作成する手順(SED)」を求める作業であると言える。エディットグラフの最短経路を求めるアルゴリズムはいくつか存在する。■全走査アルゴリズムエディットグラフの全経路を走査して最小コストの経路を求める方法。