順列のハミング距離の代替


8

私は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に実装されている場合は、さらに良いでしょう。


3
編集距離(別名レーベンシュタイン距離)が必要なように見えますか?

Stackoverflowでこの質問を参照してください。
Unfun Cat

2
文字列の文字が暗黙の順序を持​​っている特定の例では、反転をカウントしたい場合があります。en.wikipedia.org/wiki/Inversion_(discrete_mathematics)
ジョー

1
多くの場合、三角形の不等式に従わない可能性があるため、これらの距離関数メトリックのすべてを呼び出すことは不誠実かもしれません。
Nicholas Mancuso

1
転座とは、シーケンスの一部の鏡像を撮ることを意味しますか?
highBandWidth

回答:


3

最小距離を見つけることは、「転座による分類」問題と呼ばれます。論文の要約の一部:

「2つの署名付きマルチ染色体ゲノムPiとGammaが同じ遺伝子セットである場合、転座(SBT)による並べ替えの問題は、PiをGammaに変換する転座の最短シーケンスを見つけることです。ここで、シーケンスの長さは転座距離と呼ばれます。 PiとGammaの間にあります。1996年に、Hannenhalliは転座距離の式を初めて示しました。 OSBTのアルゴリズムが与えられました。2005年に、アン・バージェロンら。この問題を再検討し、転座距離の公式を初歩的に証明しました。O SBTのアルゴリズム。」

ここで「転置」と呼ばれるものは、転置と呼ばれます。つまり、従来の組み合わせ言語では、リスト内の正確に2つの要素の順列です。


これがまさに私が必要とするものです!CまたはRのいずれかで動作している実装を知っていますか?紙にはないようです!
user1357015 2012年

@ user1357015少しグーグルで参照してみてください。実装が見つかると思います。私も見ていきます。また、誰かによって追加された最後の行に注意してください-「リバーサル」と呼ばれる少し異なる何かを探している可能性があります。Pavel Pevznerはこれに関していくつかの論文を持っています。
ビット単位

@ user1357015は、いくつかのPythonコードを見つけ、ここ、これはまた、役に立つかもしれません。
ビットワイズ

@Bitwise スタックオーバーフローは、実際のコードにアクセスするサイトです。
ラファエル

0

1つの文字列を取る置換の最小数を見つける必要があります a 別の文字列に b、 どこ ab順列です。与えられた2つの頂点間の最小距離を探しているようですabS 完全な転置グラフでは、 S すべての転置のセットによって生成されます。

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