この頂点サイクルカバー問題に効率的なアルゴリズムはありますか?


23

私は、有向グラフ最大頂点サイクルカバーを見つけるためのアルゴリズムを見つけようとしてきました。つまり、可能な限り多くのサイクルを持つすべての頂点を含む、互いに素なサイクルのセットです。ここでは個々の頂点が循環します)。最小の頂点サイクルカバーを見つける問題と、正確にサイクルの頂点サイクルカバーを見つける問題は、NP完全であることを知っています。しかし、最大のケースはどうですか?G kGGk

私はこの一般的な興味深い答えを見つけますが、私がこれを使用したいグラフは実際にはその構造によってかなり制約されています。

整数のリスト、要素あり、、要素を使用して、ソート後にを参照します。例として:L I S S I LLliSsiL

L=(1,3,2,5,0,7,4,2,6,0,8,1)S=(0,0,1,1,2,2,3,4,5,6,7,8)

グラフの頂点は、およびようなペアで識別されます。場合にのみ、グラフには有向エッジがあります。(このグラフのサイクルは、ソートされた位置で終了するように循環的に置換できる値のセットに対応しています。)l i = n s in n i m j s j = n(n,i)li=nsin(n,i)(m,j)sj=n

上記の例では、次のグラフが生成されます(1ベースのインデックスを使用)。

ここに画像の説明を入力してください

うまくいかないことの1つは、最小サイクルを繰り返し削除する貪欲なアプローチです(この例が示すように)。

この問題は(間違いを犯さなかった場合)与えられたリストをソートするためにいくつのスワップが必要かを尋ねることに相当することに注意してください。(そもそもこの問題を調べるきっかけとなったのは、これです。)

ジュホの答えからいくつかの指針と文献を少しふるい分けた後、私は非常に密接に関連していると思われる課題の問題に出くわしました。ただし、割り当て問題は重み付き2部グラフの観点から定式化されており、これまでのところ、この問題を軽減するためのエッジと重みを選択する方法を見つけることができませんでした。ここで重み関数を最小化するという点で問題を定式化する場合、直感的なアプローチは各サイクルの重みがであると言うことですここでサイクル内のエッジ(または頂点)の数です。(もちろん、これは重みを設定することと同じです。| C | 1|C|1|C|1。)つまり、重みはサイクルに含まれる特定のエッジではなく、サイクルのサイズに依存します。しかし、これは誰かに問題を軽減する方法についての別のアイデアを与えるかもしれません。

また、サイクルのサイズ制限すると、一般的なグラフの問題がAPX困難になるようです。これは、サイクル数を最大化するタスクにも、ここで検討中の特定のグラフにも同じことが必ずしも当てはまるわけではありませんが、重要である可能性が十分に密接に関連しているようです。

要約すると、上記のプロセスから作成されたグラフについて、最大の頂点の素なサイクルのカバーを見つけることができますか?

2つの側面として、最大頂点の互いに素なサイクルカバーが、少なくとも1つのサイクルカバーを許容する任意のグラフの効率的なソリューションを持っているかどうか(おそらく主な質問への答えとして落ちる)にも興味があります最大カバーのサイクル数を決定するだけで(それぞれに含まれる実際のエッジとは対照的に)、問題はより単純になります。人々が自分で本格的な答えに値すると思う場合、これらを個別の質問として投稿できてうれしいです。


腎交換に関するCS文献をご覧になりましたか?問題は関連しているように思えるので、そこにある方法のいずれかをこの方法に適用できるかどうか疑問に思います。これは...しかし、行き止まりであるかもしれない
DW

知らなかった@DW(それが問題だとは知らなかった)。見つけられるものが見えるでしょう、ありがとう。
マーティンエンダー

問題は、実際に理論的視点から実際に研究された腎臓交換と同様です。例えば、Roughgardenによるこの論文は、ほとんど明らかな理由で小さなサイクルが好ましいと説明しています(p3)。サイクルサイズは「同時操作」を意味し、小さいものは合併症やドナーの
心変わり

@AustinMohr私が説明した構造から得られたグラフは、常にサイクルに分解できると信じています(さらに、どのサイクルを削除しても、残りはサイクルに分解できます)。一般的なグラフにも対処する場合は、少なくとも1つの完全なカバーが存在すると仮定します。
マーティンエンダー

@MartinBüttnerあなたの特定の場合、リスト要素のすべてが異なる場合、あなたの問題は順列の(一意の)サイクル分解を見つけることと同等でしょうか?
ムム

回答:


4

Gkk=2k=3 kk

GG((3/5)ϵ)ϵ>0

上記のクレームの詳細と証拠については、[1]を参照してください。


[1] Bläser、Markus、およびBodo Manthey。「3サイクルカバー用の2つの近似アルゴリズム。」組み合わせ最適化のための近似アルゴリズム。スプリンガーベルリンハイデルベルク、2002。40-50。


興味深いことに、私はその論文の参考文献をたどろうとします。ありがとう。(kサイクルカバーが正確にkサイクルのカバーであると思ったとき、何かを読み違えたに違いありません。あるいは、それは別の場所で使用されている別の定義です。)
マーティンエンダー

2
@MartinBüttnerところで、ここでBläserの博士論文を見てみたいと思うでしょう。(これはドイツ語ですが、おそらく問題ありません:-))。最大重量2サイクルカバーの実際の計算の詳細をカバーする必要があります。
十宝

|V|nn

少し考えてみると、重みの観点から問題を定式化することが実際に可能かどうかはわかりません。重量が等しい場合、すべてのサイクルカバーの重量は同じです。サイクルの「コスト」は、実際にはその長さから1を引いたものです。そのため、できるだけ多くのサイクルが必要です。これを重みの観点から定式化できれば、割り当ての問題になりますが、そうでなければ、検索を続ける必要があると思います。
マーティンエンダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.