タグ付けされた質問 「edit-distance」

1
一意の要素を持つリストの距離を編集
リスト間のレーベンシュタイン距離編集距離はよく研究された問題です。しかし、各リストで要素が複数回出現しないことがわかっている場合、可能な改善についてはあまり見つけることができません 。 また、要素が比較可能/ソート可能であると仮定します(ただし、比較するリストは最初からソートされていません)。 O(min(m,n)s)O(min(m,n)s)O(\min(m,n)s)O(min(s,m,n)s)O(min(s,m,n)s)O(\min(s,m,n)s)sss より正式には、 与えられた2つの文字列間の編集距離は 文字が繰り返されないという約束で、どの程度効率的に計算でき ますか?s,t∈Σ∗s,t∈Σ∗s,t \in \Sigma^* ΣΣ\Sigmaは非常に大きなアルファベットです。

2
類似しているが順序が異なるコンテンツを持つ2つの大きなテキストコーパスの違いを見つけるための効率的な方法は何ですか?
英語のテキストの段落を含む2つの大きなファイルがあります。 最初のテキストは約200ページの長さで、ページあたり約10段落(各段落は5文長)です。 2番目のテキストには、最初のテキストとほぼ同じ段落とテキストが含まれています。また、ページ数は200ページで、1ページに10段落あります。ただし、最初のテキストと比較すると、段落はランダム化され、順序が異なります。また、大部分の段落では、類似の段落と比較して、表現にわずかな変更があります。たとえば、最初のテキストの段落には次のようなLike Jimmy, I wanted to go to the palace文があり、2番目のテキストの段落の対応する文にはがありますLike Jimmy, I really wanted to go to the castle。 私は、追加のような、ここで変更を取得できるようにしたいreallyとの削除palaceが置換されましたcastle。段落がおおまかに揃っている場合、テキストを比較する方法はたくさんあるので、これはかなり簡単です。ただし、段落が揃っていないため、そうではありません。 ファイルが小さい場合(数段落)、レーベンシュタイン距離はおそらくうまく機能しますが、ファイルが大きいため、テキスト1の各段落をテキスト2の各段落と比較して、一致する段落を見つけるのは非効率的です。 この問題を効率的に処理するには、他にどのようなアプローチがありますか?

2
順列のハミング距離の代替
私は2つの文字列を持っていますが、一方は他方の順列です。必要な置換の最小数を見つける代わりに、文字列aから文字列bに移動するのに必要な最小数の転座を見つけるハミング距離の代替案があるかどうか疑問に思いました。 私の文字列は常に同じサイズで、エラーや置換がないことを知っています。 例: 1 2 3 4 5 3 2 5 4 1 これは私に2つを与えるでしょう: 3 2 5 4 1 (start) -> 3 2 1 4 5 -> -> 1 2 3 4 5 これがすでにRに実装されている場合は、さらに良いでしょう。

2
短いシーケンスの編集距離の効率的なアルゴリズム
文字列のペア間の何十億ものレーベンシュタイン距離を計算する必要があるアプリケーションがあります。文字列は短い(長さが70)DNAシーケンスで、4文字のみで構成されています。また、文字列の1つが固定されていると仮定することもできます。つまり、1つの固定文字列を10億の他の文字列と比較しています。 レーベンシュタイン距離の動的プログラミングの実装はであることを知っています。改善の余地があるかどうか知りたいのですが。私はこれらの2つのアルゴリズムを見つけました:O(mn)O(mn)\mathcal{O}(m n) O(n+d2)O(n+d2)\mathcal{O}(n + d^2)アルゴリズムはBerghelらによる編集距離 です。しかし、私はが小さいと仮定することはできないので、何の利点もないかもしれませんdddddd log(n)O(1/ϵ)log(n)O(1/ϵ)log(n)^{\mathcal{O}(1/\epsilon)}Andoni et alによる時間での 近似。しかし、私はこれに関して2つの懸念があります。 n1+ϵn1+ϵn^{1+\epsilon} このアルゴリズムも実際には高速ですか? んの最悪の場合には、計算の編集距離があることを意味倍実際のもの?その場合は多すぎます。log(n)O(1/ϵ)log(n)O(1/ϵ)log(n)^{\mathcal{O}(1/\epsilon)}log(n)O(1/ϵ)log(n)O(1/ϵ)log(n)^{\mathcal{O}(1/\epsilon)} 適用できる他のアルゴリズム/アイデア/アプローチを知っていますか?

1
レベンシュタイン距離と動的タイムワープ
ワグナー・フィッシャーアルゴリズムとdtwアルゴの間をどのように平行に描くかわかりません。どちらの場合も、各インデックスの組み合わせ(i、j)の距離を求めます。 ワーグナーフィッシャーでは、空の文字列から別の文字列への挿入回数によって距離を開始します。 let wagnerFischer (s: string) (t: string) = let m, n = s.Length, t.Length let d = Array2D.create (m + 1) (n + 1) 0 for i = 0 to m do d.[i, 0] <- i for j = 0 to n do d.[0, j] <- j for j …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.