この並べ替え/並べ替えの問題の名前は?


10

長さ配列が与えられます。配列の各要素は、Kクラスの1つに属しています。あなたはそのようにスワップ操作の最小数を使用してアレイを再配置することになっているすべての要素から同じクラスは常に一緒にグループ化され、それらが隣接サブアレイを形成していること、。 例えば: nK
他に3つの有効な取り決めが残っています。

[2,1,3,3,2,2][2,2,2,1,3,3], or[2,1,3,3,2,2][1,2,2,2,3,3], or[2,1,3,3,2,2][3,3,2,2,2,1].

この問題は文学で何と呼ばれていますか?それのための効率的なアルゴリズムはありますか?


1
確かに可能ですが、この問題に名前があるかどうかはわかりません。考えられるすべての問題に名前があるわけではありません。
Yuval Filmus、2017年

2
実際には、これはグループ化と呼ばれます。私は古典的なアルゴリズムの専門用語を知りません。(それは確かに興味深い、そして潜在的に難しい問題です!スワップの数を最小化することは、「グループの最高の順列を見つける」という感覚を持っており、それは今度はNP難しいように感じます。)
Raphael

皆さん、今のところありがとうございます。もちろん、問題の解決に興味はありますが、すでに検討されているので参考にさせていただきました。
Marko Bukal 2017年

回答:


6

注:これは硬度の証明であり、整数プログラミングなどの実用的なアルゴリズムがあると思います。

あなたがパックしたいBIN_PACKINGインスタンスを考えると番号nは1... nはKをLのサイズのビンM 1... m個のL、およびことが保証されるΣ N iの = Σのm個のJ = Nを、我々は設計でき次のような問題のインスタンス:Kn1,,nKLm1,,mLni=mj=N

  • あるクラスは、K+(N+1)(L1)
  • 最初のクラスのサイズはそれぞれn 1n Kで、残りのクラスのサイズはそれぞれN + 1 ;;です。Kn1,,nKN+1
  • 配列は次のサイズのスロットに分割されます: 各スロットのサイズN + 1 2N + 1個のクラスでパックされ、隣接して配置され、残りは任意に配置されます。
    m1,(N+1)2,m2,(N+1)2,m3,,(N+1)2,mL
    (N+1)2N+1

(N+1)2N


Nm1,,mL(N+1)2(N+1)N+1既にスワップしているので、できません)、または全体を1つ左または右に「スライド」します(ただし、これにはそれぞれ「スライド」する必要があります...
j_random_hacker

N+1N+1N

1

また、これはNP困難であると思いますが、証明のアイデアがない場合は、ヒューリスティックソリューションの最適性をチェックしたり、分岐限定検索をプルーニングしたりするのに役立つ可能性がある、すばやく計算可能な下限をいくつか示します。 。

iniijLiijinijLiiO(n)O(Kn)

  1. LiK=2K
  2. Li

あなたの例では、これらの境界はどちらも1を与えます(後者の場合、0.5は切り上げることができます)。もちろん、これは緩いです。

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