バイナリ差分アルゴリズム – プログラミング – Home

バイナリ差分アルゴリズム
 
通知
すべてクリア

[解決済] バイナリ差分アルゴリズム


aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
Topic starter  

2つのデータを比較して差分を求め、パッチ化するアルゴリズムってどうやるのかご存
知の方いらっしゃいませんか?
やり方、サンプルコード、VC++ アプリに組み込めるライブラリ等、もしご存知でしたら
教えていただけないでしょうか。

やりたいことは、ファイルのインクリメンタル・バックアップです。
最初にあるファイルを保存し、以降の更新では更新差分だけを取得して保存しておく。
最初のファイルから差分を順次適用していくことで、任意の時点のファイルを復元した
いと考えています。

LZ 法の応用でできるという話も聞くので、その方面でも調べてみようと思います。


引用
トピックタグ
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
Topic starter  

追記
パッチのサイズはできるだけ小さくなる、という条件つきで。
とことん小さくしようと思ったら難しい論文とか読まなきゃいけないのかもしれません
が、例えば、元ファイルの先頭に1バイト挿入されただけで、まったく違うものとみな
すような差分はお断り、とゆーことでひとつ。

よろしくお願いします。


返信引用
こじま
 こじま
(@こじま)
ゲスト
結合: 22年前
投稿: 19
 

よく使われているらしい差分アルゴリズムとして、ONPというのがあります。
pukiwikiのdiffで使っているはず。昔、ここで、ちょっとだけ議論していました。
論文へのリンクもあります。
http://pukiwiki.sourceforge.jp/dev/?PukiWiki%2F1.4%2FDiff

どっちかというとテキスト向けのアルゴリズムなので、
バイナリに使うのは、大げさ過ぎてもったいない気もしますが、
まあ1Kbyteずつくらいにブロックを区切って、
ブロックを単位として、ONPをやればいい気がします。


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
Topic starter  

情報ありがとうございます。
調べてみたいと思います。

他にもご存知の方がいらっしゃいましたら、よろしくお願いいたします。


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
Topic starter  

こじまさん、貴重な情報をありがとうございました。
あわよくば、他にも情報をくださる方がいらっしゃらないかと図々しくも待ってみまし
たが、ひとまず、こじまさんの教えてくださった方法を元に調べてみたいと思います。
このままスレを閉じないのも申し訳ありませんので、解決チェックといたします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました