リストをソートするための転置の最小数


15

独自の並べ替えアルゴリズムを考案する際に、比較できる最適なベンチマークを探しています。要素Aの並べ替えられていない順序と並べ替えられた順序Bの場合、AからBへの最適な転置数を計算する効率的な方法は何ですか?

転置は、リスト内の2つの要素の位置を切り替えることとして定義されるため、たとえば

1 2 4 3

それを作るために1つの転置(転置4と3)を持っています

1 2 3 4

何かのようなもの

1 7 2 5 9 6

4つの転置(7、2)、(7、6)、(6,5)、(9、7)が必要

更新(9/7/11):質問は、「交換」ではなく「転置」を使用して、隣接していない交換を参照するように変更されました。


隣人だけを交換できるとしたらどうでしょう?スワップの最小数を知るにはどうすればよいですか?

回答:


23

要素の順列のみを処理する場合は、正確にスワップが必要になりますn c π c π nnc(π)c(π)のサイクル数でばらばらサイクル分解。この距離は、二不変であるので、変換πのσ(又はAB、又は逆にする)必要N - C σ - 1 ○はπ このような移動します。ππσABnc(σ1π)


かなり前にこれに投票していましたが、今日クリックしました。ルービックキューブのように、右:D?
-sova

11

M(s)Mij=1ij D S sは'M(s)M(s)2d(s,s)

更新:Oleksandrのコメントをご覧ください


グラハムのプレゼンテーションでは、フロベニウスノルム()ではなく、スペクトルノルム()を意味しているようにます。A FA2AF
オレクサンドルボンダレンコ

ただし、差を数えるだけであれば、フロベニウスのノルムの二乗は正しく機能するはずです。
スレシュヴェンカト

これは0-1行列のハミング距離はもちろんである
スレシュヴェンカト

あなたは、フロベニウスのノルムの二乗とハミング距離の平等について正しいです。ハミング距離を割った値がスワップ距離に等しいことを付け加えます。しかし、問題は転置距離に関するもので(「スワップはリスト内の2つの要素の位置を切り替えること」と定義されています)、スワップ距離ではありません。スペクトルノルムに関係するのは、その二乗がスワップ距離に等しいことです。2
オレクサンドルボンダレンコ

Oleksandr:では、「スワッピング」を「2つの隣接する要素を交換する」と解釈すると思いますか?
アンソニーラバレー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.