差分、パッチ、マージのカテゴリ理論的処理?


14

おおよそ次のようなパッチのカテゴリがあります。

  • オブジェクトはいくつかの基本アルファベットの文字列です
  • モーフィズムは、文字列間の編集スクリプト(「差分」または「パッチ」)です。

私はこれらの質問に興味があります:

  • 最小限の編集スクリプトのカテゴリ概念はありますか?パッチのカテゴリはPOセットで充実しているのでしょうか?
  • マージカテゴリプッシュアウトパッチの?
  • これを文字列からツリー(ファイルシステム、または代数データ型)に一般化する方法は?


1
...またはPijul、「新しいDarcs」を作成する比較的最近の試み。(そして、私がその話から覚えている限り、マージは差分カテゴリの「自由な完了」におけるプッシュアウトです...)。
phipsgabler

回答:


15

Martinが指摘したように、パッチのカテゴリー表示に関する作業がいくつかあります。Mimram and Di Giustoの「パッチのカテゴリ理論」は、で使用されてUNIX diffいる編集スクリプトへの最も広範なカテゴリアプローチです。

彼らの意味では、あなたはあなたが望むものを持っています。オブジェクトはアルファベットL上の単語の有限シーケンスであり、マッピングA[n]Lとして表示されます:[ n ] L、ここで[n]n要素の集合を示します。A[n]LB[m]L間の矢印は、単射部分増加マッピングf[n][m]。単射性と増加は、コピー互いに交差しないことを示すためにあります。あなたは紙ですべての詳細を見つけることができます。

はい、マージは、上記のカテゴリの無料の完了に関するプッシュアウトと見なされます。マージの競合をコンストラクションに確実に追加するには、補完が必要です。マージが常に存在するわけではありません。

2番目の質問では、2つの主な理由により、最小限の編集スクリプトのカテゴリ概念はありません。

  1. 編集スクリプトには、すべての形状と形式があります。一部の著者は、挿入、削除、およびコピーを検討します。一部の著者は、操作として置換を追加することも好みます。文字列からツリーに一般化すると、他の多くの操作が実行可能になります。

  2. ただし、さらに重要なことは、最小コストの編集スクリプトは一意ではないということです。ファイルab、それをba変換するパッチを作成ます。これを行う最小限の編集スクリプトは何ですか?二つあります!繰り返しますが、木に一般化するとき、「最小性」の概念が疑わしいさらに多くの状況を見つけることができます。

編集スクリプトをツリーに一般化する作業はたくさんありました。これは、2つの主要な作業に分割されています。

  • 型付けされていない木:S式のみを考えてください。2つのツリー間のツリー編集距離は、前述のツリーの事前順序走査間の文字列編集距離です。Demaineらによる参考文献を確認できます。またはPawlikとAugstenなど。

  • 型付きツリー:オブジェクトの適切な型付けを保持することが保証されている抽象構文ツリー上のパッチ。つまり、パッチを適用すると、常に有効なASTが生成されます。型付きの傘の下では、考慮することができる編集操作が少なくなります。たとえば、置換は意味がありません。それにもかかわらず、Lempsink et al。によるツリーの事前順序走査に関する差分が存在します、後にVassenaによって拡張されました。私は現在、最新の作品や、「パッチを当てる」値のタイプの構造を利用しようとする以前の作品など、以前指摘した問題に対して、編集スクリプトから距離を置くアプローチに焦点を当てています。

いずれの場合も、ツリー構造のパッチの慎重なカテゴリー的解釈は見ていません。


素晴らしい答え!しかし、なぜそれらが一意ではないという理由だけで、最小限の編集スクリプトのカテゴリ概念がないのでしょうか?(共)制限も一意ではなく、同型までです。
Turionは

補完関係を取り、競合を含めるか、プッシュアウトが常に存在するとは限らず、それらが存在しない場合はマージはないと言うことができますか?
Turionは

1
@Turion、同型までの一意性はかなり強いです。編集スクリプトにはそれがありません。これにより、ABの矢印を定義するのかなり難しくなりますABdiffABdiff3

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.