移動操作で距離を編集する


13

動機:共著者が原稿を編集し、編集の概要を明確に見たい。ツール様全ての「差分」は、あなたがしている場合は無用になる傾向があり、両方の周りにテキストを移動する(例えば、再組織化構造)ローカル編集を行います。それを正しくするのは本当に難しいですか?


定義:許可される操作は次のとおりです。最小編集距離を見つけたいです。

  • 「安い」操作:単一の文字の追加/変更/削除(通常のレーベンシュタイン操作)、

  • "高価な":操作:新しい場所(にサブストリングを移動bはCのD のC BのD任意の文字列の、BCD)。abcdacbdabcd

2つの文字列yおよび整数kKが与えられた場合、次の問題を解決したいと思います。xykK

  • あなたは、変換することができますyのほとんどで使用してk個の安価な操作と最大でK高価な操作?xykK

質問:

  1. この問題には名前がありますか?(配列アラインメントの文脈では非常に標準的な質問のように聞こえます。)

  2. 難しい?

  3. 難しい場合、をパラメーターとして扱いやすい固定パラメーターですか?K

  4. 効率的な近似アルゴリズムはありますか?(例えば、最大で有する溶液見つける安価及び2 Kを有する溶液場合、高価な操作をk個の安価及びK高価な操作が存在します。)2k2KkK

Wikipediaリストされている文字列メトリックを見てみましたが、どれも正しく見えませんでした。


3
以下のために、問題は転置によってソートされます。たとえば、web.cs.dal.ca /〜whidden / HThesis07.pdfを参照してくださいあなたの問題に遭遇したことはありませんが、非常に動機付けられているようです。k=0
サージガスパー

4
転置によるソート問題のNP困難性は2010年に証明されました。転置によるソートは難しいを参照してください。
マルツィオ

3
移調は困難ですが、挿入と削除は困難ではありません。高価な操作を任意の部分文字列の削除または他の文字列の部分文字列の挿入のいずれかに許可する場合、問題は非常に簡単になるはずです。ただし、結果の距離は対称ではありません。
ジュニシレン

私は、固定パラメータの扱いやすさについてもっと興味があります。新しい発見はありますか?
Yixin Cao

回答:



4

転置の代わりに長い削除と部分文字列のコピーを考慮すると、問題はより簡単になります。我々は編集距離計算のための標準的な動的プログラミングアルゴリズムを使用していることを前提とし、長さの高価な動作ことによって距離を増加K + B、いくつかの定数のためB 0。これらの定数は、長い削除と部分文字列のコピーでは異なる場合があります。kak+ba,b0

長い削除とは、から任意の部分文字列を削除することです。最初の文字(コスト削除:私たちは、簡単な操作の2種類にそれらを打破する場合は、それらをサポートすることは、簡単で+のBを)と1つの文字(コストによる削除を拡張A)。標準的な配列に加えて、AA [ I Jはプレフィックスの間の編集距離であるX [ 1 ... I ]及びY [ 1 ... J ]、我々は別の配列を使用A Dをxa+baAA[i,j]x[1i]y[1j]Ad最後に使用された操作が長い削除であった場合、編集距離を保存します。この配列を使用すると、計算時にA [ i 1 j 1 ]A [ i j 1 ]、およびA d [ i 1 j ]を見るだけで済みます。A [ i j ]およびA d [ iA[i1,j]A[i1,j1]A[i,j1]Ad[i1,j]A[i,j] O 1 時間でそれを行うことができます。Ad[i,j]O(1)

部分文字列のコピーとは、編集された文字列に任意の部分文字列を挿入することです。長い削除の場合と同様に、操作を2つの単純な操作に分割します。最初の文字を挿入し、挿入を1文字だけ拡張します。我々はまた、配列を使用A Sを使用した最後の操作は、コピーサブストリングたことを提供プレフィックス、間の編集距離を格納します。xAs

これを効率的に行うことは、長い削除よりも複雑であり、セルごとに償却された時間に到達できるかどうかはわかりません。一定サイズのアルファベットを想定して、O | x |時間かかるxの接尾辞ツリーを作成します。現在のサフィックスツリーノードへのポインタをA s [ i j 1 ]に格納し、文字y [ j ]によって挿入を拡張できるかどうかを一定の時間でチェックできるようにします。それが本当なら、A jを計算できますO(1)xO(|x|)As[i,j1]y[j]および A s [ i j ]を一定時間で。A[i,j]As[i,j]

zy[j]zAs[i,j1]xzzzy[j]xO(|z||z|)、セル A [ i j | z | 1 ]から A [ i j 1 ]へ。サフィックス z ′を見つけるには、セルごとに償却された O 1 時間だけが必要ですが、ブルートフォースアプローチで A s [ i j ]を計算するに O | zAs[i,j]A[i,j|z|1]A[i,j1]zO(1)As[i,j]O(|z|)時間。これをもっと効率的に行う方法はおそらくあるでしょうが、今はそれを見つけることができません。

O(min(|x||y|2,|x|2|y|)) time, but a better analysis should be possible. The resulting edit distance with long deletions and substring copying is not symmetric, but that should not be a problem. After all, it is usually easier to reach the empty string from a nonempty one than the other way around.

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