2つのパーティション間の距離を編集する


17

2つのパーティションがあり[1n]、それらの間の編集距離を探しています。

これによって、パーティションAからパーティションBに移動するために必要な、ノードの異なるグループへの単一の遷移の最小数を見つけたいと思います。

たとえば、から{0 1} {2 3} {4}への距離は{0} {1} {2 3 4}2

検索した後、私はこの論文に出くわしましたが、a)彼らが遠くにいるグループ(私は気にしない)の順序を考慮に入れているかどうかはわかりませんb)それがどのように機能するかはわかりませんc)参照はありません。

助けていただければ幸いです


5
距離は{0 1 2 3}と{0 1} {2 3}の間だと思いますか?2になりますか?第二に、「グラフ」がなぜ写真に登場するのかまったくわかりません。[n]の2つのパーティションがあり、それらの間の距離を計算したいようです。
スレシュヴェンカト

はい、2つになります。実際、これらはグラフのノード上に設定されたパーティション(つまり、グラフパーティション)です。これはおそらくソリューションにとって重要ではありませんが、これは私が解決しようとしている問題です。
ゼナ

3
グラフが関係ない場合は、質問から「グラフ」と「ノード」へのすべての参照を削除してください。助けにはならず、気を散らす。
ユッカスオメラ

編集距離をパーティションラティス上の距離で定義することはできませんか?
手切ねなし

@Tegiri-それは実際、パーティティトンの格子上の測地線距離です。残念ながら、10をはるかに超えるカーディナリティのセットに対してそのラティスを計算することは困難です。
ゼンナ

回答:


21

この問題は、最大加重2部一致問題としても知られる割り当て問題に変換できます。

最初に、編集距離は、あるセットから別のセットに変更する必要がある要素の数に等しいことに注意してください。これは、要素の総数から変更する必要のない要素の数を引いたものに等しくなります。したがって、変化しない要素の最小数を見つけることは、変化しない頂点の最大数を見つけることと同等です。

LET B = { B 1B 2Bのlは }のパーティションである[ 1 2 n ]。また、一般性を失うことなく、聞かせK L(許可ためのE D I TをA={A1,A2,...,Ak}B={B1,B2,...,Bl}[1,2,...,n]kl)。次に、 B l + 1 B l + 2、...、 B kをすべて空のセットにします。次に、変化しない頂点の最大数は次のとおりです。edit(A,B)=edit(B,A)Bl+1Bl+2Bk

maxfi=1k|AiBf(i)|

ここで、の順列である[ 1 2 k ]f[1,2,...,k]

これはまさに頂点である割当問題である1、...、KB 1、...、BのKとエッジがペアであるA 、IBのJ量を有します| IBのJ | 。これは、O | V | 2 log | V | + | V | | E |時間で解決できます。A1AkB1Bk(Ai,Bj)|AiBj|O(|V|2log|V|+|V||E|)


この時間の複雑さを与えるアルゴリズムに名前を付けてください。
D-503

@bbejotは連続した最短パスアルゴリズム(フィボナッチヒープを使用して実装されたサブルーチンDijkstraを使用)を指していると思います。

私は数学者ではないので、これを解析するのに長い時間がかかりましたが、ありがとうございます。私は長い時間を費やしましたが、これはパーティション距離の問題を割り当て問題に変換する方法を示した唯一の発見でした-またはPythonライブラリから呼び出すことができる任意のアルゴリズムに。(私にとって難しい部分は、scipy.optimize.linear_sum_assignmentの使用方法を考え出し、これらの指示に基づいてマトリックスをセットアップすることでした。)
Sigfried

重みを負にする必要がありました。それ以外の場合、scipy.optimize.linear_sum_assignmentはすべてに対して0を返します。
Sigfried

2

このペーパーのPDFをご覧ください

http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.0030160

そこにある編集距離の定義は、まさにあなたが必要とするものだと思います。「参照」パーティションは(任意の)2つのパーティションのうちの1つであり、もう1つは単に他のパーティションです。関連する引用も含まれています。

ベスト、ロブ


ありがとうロブ。ただし、何かが足りない場合を除き、これは、スプリットマージ移動に関して定義された編集距離です。これらはよく研究されており、論文が指摘しているように、情報の変動はこれの情報理論的尺度です。ただし、単一要素の移動遷移に興味があります。
ゼンナ

1

正しいかもしれないし、そうでないかもしれない変な日曜日の朝のアイデア:

Wlog、をより多くのセットを持つパーティションとし、P 2をもう1つのセットとします。まず、割り当てペアごとの異なる名前のn 1S ΣあなたのセットにP 1。次に、次の規則に従って、セットP 2の最適な命名n 2S を見つけます。P1P2n1(S)ΣP1n2(S)P2

  • のための S P 2 S S '最大の全ての間で S 'n2(S):=n1(S)SP2SS。複数の選択肢がある場合は、競合が最も少ないものを選択してください。SP1
  • 今場合いくつかのためにS Sが'、いずれかを割り当てることと共有少ない要素S N 1S )、= N 2S 、セットの名前でP 1、それはつまり、それはそのセットの名前を競う持っている、との二番目の要素を共有しています。n2(S)=n2(S)SSS,n1(S)=n2(S)P1
  • 旧ルールが適用できない場合は、両方のセットのチェックは、彼らはまだいくつかのより多くの要素を持っているかもしれません(彼らは少ない要素を共有する他のセットの名前を競うことができます天気を、その名前を割り当ててしまったセットよりもを!)。その場合、その名前をSのいずれかに割り当てますSP1S,S競合する名前を持つそれぞれのセットとより多くの要素を共有します。もう一方は、以前は競合していた名前を保持します。
  • すべての競合が解決されるまで、この手順を繰り返します。以来より少ないセット持っていないPをP1、十分な名前があります。P2

さて、あなたはあなたの要素のビット列のいずれかのパーティションをWRT、すなわちを考慮することができるおよびW 2 = N 21 N 2N N JI = N JS I S P Jw1=n1(1)n1(n)w2=n2(1)n2(n)nj(i)=nj(S),iSPj)。次に、必要な量はdH(w1,w2)

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