[解決済み] Diff Algorithm? [クローズド]
質問
効率的に動作するdiffアルゴリズムの解説を夢中で探していました。
一番近いのは RFC 3284へのリンクです。 (Eric Sink のブログ記事より) は、完全に理解しやすい言葉で データ形式 を作成し、diffの結果を保存しています。しかし、プログラムがdiffを実行中にどのようにその結果に到達するかについては、まったく触れられていません。
diffのアルゴリズムを実装する際にはトレードオフがあるはずなので、個人的な好奇心でこれを調査しようとしているのですが、diffを見ていると、「なぜdiffプログラムはあれではなくこれを変更点として選んだのだろう?
VCDIFFを出力する効率的なアルゴリズムの説明はどこにあるのでしょうか?
ちなみに、SourceGear の DiffMerge で実際に使用されているアルゴリズムの解説があれば、なお良いですね。
注: longest common subsequenceはVCDIFFで使われているアルゴリズムではないようで、使用しているデータ形式からすると、もっとスマートなことをしているようです。
どのように解決するのですか?
O(ND) 差分アルゴリズムとそのバリエーション は素晴らしい論文なので、そこから始めるとよいでしょう。この論文には、疑似コードと、diffを実行する際のグラフのトラバースを視覚化した素晴らしい図が含まれています。
第4章 この論文では、このアルゴリズムを非常に効果的にするためのいくつかの改良が紹介されています。
これをうまく実装することで、あなたのツールボックスにとても便利なツールを手に入れることができます(そしておそらく素晴らしい経験にもなるでしょう)。
必要な出力形式を生成するのは難しい場合もありますが、アルゴリズム内部を理解していれば、必要なものを出力することができるはずです。また、出力に影響を与えるヒューリスティックを導入し、特定のトレードオフを行うことも可能です。
以下はページです。 には、ちょっとしたドキュメントが含まれています。 ソースコード と、前述のアルゴリズムのテクニックを使ったdiffアルゴリズムの例です。
は ソースコード は、基本的なアルゴリズムに忠実に従っているように見え、読みやすいと思います。
入力の準備についても少し書いてあるので、参考になると思います。文字で差分する場合とトークン(単語)で差分する場合では、出力に大きな差が出ます。
がんばってください。
関連
-
operator=' にマッチしない等号の両端がマッチしない
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] git diff の出力を自分の好みの diff ツール/ビューアで表示するにはどうすればよいですか?
-
[解決済み] GenerativeアルゴリズムとDiscriminativeアルゴリズムの違いは何ですか?[クローズド]
-
[解決済み] git diff ファイルを、同じリポジトリのコピーであるローカルブランチに適用するにはどうすればよいですか?
-
[解決済み] git-diff で ^M を無視するようにした
-
[解決済み] コマンドラインからdiffをカラー化する方法
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み] 2^nとn*2^nは同じ時間複雑性か?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] O(log n)とは具体的にどのような意味ですか?
-
[解決済み] nからk個の要素の組み合わせをすべて返すアルゴリズム
-
[解決済み] 任意の二分木における2つのノードの最小公倍数の先祖を見つけるには?
-
[解決済み] ディズニーのファストパスは有効か、有用か 待ち行列論
-
[解決済み] スパイラルでループする
-
[解決済み] 2つの矩形の交差を検出するアルゴリズム?
-
[解決済み] アマゾンのレコメンデーション機能の仕組み
-
[解決済み] 緯度・経度・kmの簡単な計算方法は?
-
[解決済み] バックトラックと深さ優先探索の違いは何ですか?
-
[解決済み] ロードされたサイコロをシミュレートするための効率的なデータ構造とアルゴリズムとは?