人々がお互いにプレゼントを購入するためのショッピング旅行の最小数


10

n人のグループがあります。グループ内の誰にプレゼントを買わなければならないかというリストが与えられます。一人一人がプレゼントをいくつでも買う必要があるかもしれません。ショッピング旅行では、人々のサブセットが同じ店に一緒に旅行し、店にいない人のためにプレゼントを購入します。彼らは同じ買い物で他の人にプレゼントを買わないかもしれません。人は複数の買い物旅行に行くかもしれません。みんなが必要なプレゼントを買うのに必要な買い物の回数をできるだけ少なくしたい。

例として、5人でグループ内の他のすべての人にプレゼントを購入する必要がある場合を考えます。人に1から5までの番号を付けます。これは、次のように4回の買い物で行うことができます。

  • 旅行1:1、2、3、買い物に行く

  • 旅行2:1、4、5は買い物に行く

  • 旅行3:2、4、買い物に行く

  • 旅行4:3、5買い物に行く

この問題を解決するにはどうすればよいですか?入力を有向グラフで表すことができるのは明らかですが、そこからどこに行くべきかわかりません。誰かがビクリクカバーの問題を提起しましたが、似ていますが、この質問には答えません。

入力はn個の頂点の有向グラフと考えることができます。ここで、エッジu v は、人uが人vのプレゼントを購入する必要があることを意味します。目標はbicliquesのセットを見つけることであるS 1T 1... SのKTがKように、kが最小であり、エッジ集合EグラフのがのサブセットであるIS I × T Gn(u,v)uv(S1,T1),,(Sk,Tk)kEi(Si×Ti)。また、ビクリクの定義を有向グラフに拡張すると、ビクリク(Si,Ti)Siマッピングするエッジのみが含まれますTi。bicliqueカバーの問題からこれ異なり、我々はの部分グラフであることを各bicliqueを必要としないという点で、G(私たちは必要ありませんSi×TiEそれぞれのi)。

具体的には、次のいずれかの答えを受け入れます。

  • この問題がNP困難または
  • この質問に正確に答える多項式時間アルゴリズムを提示します(近似または上限なし)

記録としては、この問題はどこにも見られませんでした。私は自分の好奇心のためにそれについて疑問に思っています。

回答:


2

この問題はNP困難です。これを示すために、まずこの(最適化)問題を決定問題に再定式化します。次に、その問題を同等の問題に再定式化します。これにより、k 3 以上の場合はNP困難である、色付けの問題から削減を得るのはかなり簡単です。kk3

問題の簡単な定式化は次のとおりです。

人と「贈り物」の関係をコード化したグラフGが与えられた場合、驚きを台無しにせずにすべての贈り物を購入できるように必要な旅行の最小量を見つけます。nG

ただし、これは最適化の問題です。クラスNPは通常、決定問題(すべてのインスタンスに対する答えがYESまたはNOのいずれか)に対して定義されます。これの決定バリアントは次のとおりです。

人と、「贈り物を与える」関係と整数tをエンコードするグラフGを考えると、驚きを台無しにせずにすべての贈り物を購入するには、最大でt回の旅行で十分でしょうか。nGtt

私は発見の問題定義適切な指向 -multicoloringt一部グラフ見つけるよう多色関数CをV PC である適切なCは、いくつかのセットであり、T「色」(すなわち、| C | = T)とPCはの電力設定であるC(すなわち、すべての部分集合の集合CG=(V,E) c:VP(C)Ct|C|=tP(C)CC(uv)Ec(u)c(v)

買い物旅行の問題は、同じグラフ有向マルチカラーのt存在を決定する問題と同等であると私は主張します。G

証明:に適切な指定された -multicoloringがあり、ように色の名前を変更する場合、トリップのシーケンス。ここで、a頂点は、場合に限り、旅行買い物に行きます。次に、すべてのエッジについて、、およびような旅行が存在することがます。したがって、旅行tcGC={1,,t}tT1,,TtvTiic(v)(uv)ETiuTivTic(u)c(v)Ti すべてのギフトを購入するには十分です。

一連のトリップがある場合、ようにカラーセットマルチカラー関数を構築します。。その後、すべてのエッジのために、旅が存在、そのようなことと(以降する本を購入することができ、いくつかの旅行で)、その手段そのおよび場合、ます。T1,,TtcC={1,,t}c(u)={iN|uTi}(uv)ETiuTivTiuvic(u)ic(v)c(u)c(v)

適切な有向マルチカラーを見つけることは、基本的にカラーの特定のケースの奇妙な再定式化です。したがって、私は -coloring問題から多項式時間の短縮を示すことができます:無向グラフ与えられたら、最初にこのグラフを有向グラフ、つまりおよび ifまたは(つまり、無向エッジを2つの有向エッジに変更します)。tk(tt/2)G=(V,E)G=(V,E)V=V(uv)E(u,v)E(v,u)E

ような、、が存在しないような最大のセットを考えます。サイズののすべてのサブセットのセット、ここで、こんなセットです。したがって、そのようなサブセットの最大サイズはです。KP(C)a,bKababCt/2t=|C|(tt/2)

適切な -multicoloringが存在する場合、\ mathom等しくない要素のみを使用する適切なカラーリングが存在します(*) 、これは有効な -coloringです。tG(tt/2)P(C) (tt/2)G

に適切な -coloringが存在する場合、ようなセット、が存在しますいかなる存在しない、ように、。したがって、には適切な有向マルチカラーがあります。(tt/2)GKP(C)|C|=t|K|(tt/2)a,bKababGt

したがって、これは -coloringからトリップを伴う現在のショッピング問題への有効な多項式時間の短縮です。つまり、現在のショッピング問題はNP困難です。現在のショッピング問題はNP完全であることに注意してください。多くても回の旅行の特定のリストで、驚きを台無しにせずにすべてのプレゼントを購入できるかどうかを簡単に確認できるためです。(tt/2)tt


(*):いくつかのマルチ着色場合、最大「非サブセット」多発色より色セット使用、我々は「名前の変更」することができるとなるようにスーパーセットです。の要素のいずれとして、適切なまま異なる要素に隣接しているそれぞれ、他にに隣接したカラーセットの問題とNoneです元の。したがって、一般性を失うことなく、を仮定できます。CCCCCCCCCC

次いで、なお、 'リネーミング'の任意のサブセットに色セットのノード間のエッジを台無しにしないは、に別のサブセットである要素が含まれていないため。残っている唯一のことは、と間のエッジがカラーリングを「台無し」にしないようにすることです。CCCCCCCCC

以下の関係を検討しての色セットでの 2つの色のセット:とれる接続した場合と頂点のペアが存在する場合のみ、ようにはカラーセットとカラーセットあり、ます。この関係は、無向グラフで表すことができます。RCCABa,baAbB(a,b)EG=(CC,R)

まず、エッジのないペアを1つのカラーセットで置き換えることにより、を「削減」できます。隣接していない2つのカラーセットを同じ色に変更しても、無効なエッジは導入されないため、カラーリングは適切なままです。その結果、を完全なグラフに減らしました。CCGG

これは、のカラーセットが、必要なカラーリングが存在します。そうでない場合、は最大の「非サブセット」セットであるため、適切なマルチカラーリングはまったく存在しないため、このクリークにカラーを付けることはできません。したがって、必要なマルチカラーリングは必ず存在します。G|C|C


ノードの完全なグラフは色分け可能であり、少なくとも色がある場合に限り、場合に限り、人が回の旅行でお互いにプレゼントを買い物に行くことができます。。これは特に、場合、回のトリップのみで十分であることを意味します。購入するプレゼントの数が少ない場合、それ以上の旅行は必要ないため、これはすべてのソリューションの一般的な上限です。nKnnnt(tt/2)nn1287016


以下は、以前の「答え」です。最適な値を取得することを保証しないヒューリスティックアルゴリズムを提供しますが、多項式時間で計算できます。

この問題を定式化する別の方法は、ノードの有向グラフのパーティション上の2部グラフのカバリングをことです、パーティション(つまり、トリップ)の量(ここでは)が最小になるようにします。C={(S1,T1),,(Sm,Tm)}(Si,Ti)Gnm

最初に、他の回答から部分的に得られたいくつかの観察:

  • と共通のエッジの量が最大である2部グラフでを選択する貪欲な戦略では、最適な解が得られません(強力な反例は、ノードを持つ完全なグラフであり、どちらの最大2部グラフを選択しても、この戦略は失敗します。(Si,Ti)G6
  • 貪欲な戦略は任意の非循環グラフに最適ではありません。次のグラフを検討してください: とのハード非環状 両方について、2部グラフはエッジを削除しますが、が最適です。Si={3,5,6}Si={1,3,6}4{3,5,6}
  • (最適な)貪欲なアルゴリズムは、パーティションによって「削除された」サイクル数(任意のサイズ)より、選択されたパーティションのサイズを優先することはできません。これを見ると、グラフを検討するが一回の周期でノードのノードは、サイクル内のすべてのノードが有するに向かって追加の発信エッジの追加のノードについては、以下のない発信エッジ(参照図形を有していません、例)。長さサイクルでエッジの量を最大化することを好む貪欲な選択は、最初のトリップでサイクル内のすべての頂点を送信します。これはサイクルのエッジを削除せず、単に無視するため、最適ではありません。n+2n22A,Bn=4nA,Bサイクルからすべてのエッジを削除向かうすべてのエッジも削除されます。したがって、サイクルの削除よりもパーティションのサイズを優先する貪欲な選択は最適ではありません。A,B
    4サイクル

これらの観察に基づいて、私は、次の欲張り選択肢を提案する:ピック例えば、からこの旅行「削除し」ことサイクルの量こと持つ最大の重複を有する最大と関係の場合では、選択したパーティション間をそれら(すなわち、サイクルではなくエッジを見てください)。(Si,Ti)GG

このアルゴリズムは、非巡回グラフの「基本的な」貪欲戦略(すべてのトリップでエッジの最大量を削除する)と同じなので、この貪欲アルゴリズムは最適ではありません。ただし、サイクルを削除するという直感は依然として理にかなっており、基本的な貪欲な戦略よりも優れているため、適切なヒューリスティックになる可能性があります。


1
「マルチカラーが存在する場合、このカラーは等しくない要素のみを使用します」と述べます。このステートメントは誤りです。3つの切断されたノードの自明な例では、2つのマルチカラーが存在します。ここで、。これは、異なる要素を使用する適切な2マルチカラーです。あなたがいる場合、「言うことを意味しませんでし -multicoloringがために存在する、その後、そのような着色用途せいぜいtG(tt/2)P(C)a,b,cvv(a)={1},v(b)={2},v(c)={1,2}(21)=2tG(tt/2)からの等しくない要素"?P(C)
Riley

確かに、それが私の意図したことです。それを見る別の方法は、それが最小の t-マルチカラーである(つまり、このが -マルチカラーではない)場合、要素を使用することです。明らかに、あなたが与える例は、正しい再定式化の反例ではありません。G(t1)(tt/2)
離散トカゲ

待ってください。正確には要素を使用しませんが、多くても使用します。(tt/2)
離散トカゲ

改訂されたステートメントが直感的に理解できる方法を理解できますが、それを証明できますか?すべてのマルチカラーがサイズの要件を満たすセット要素でありなどのが存在しない tマルチカラーが「改善」されることを何らかの形で示すことができます。Ka,bKab
ライリー

@ライリーどういう意味かわかりませんが、どのステートメントについて詳しく説明しますか?私はあなたの元のコメントが示唆したことを示すように私の答えを更新しました。残りの証明は影響を受けません。マルチカラーと元のカラーの問題の関係については、マルチカラーリングは隣接する「サブセット」がないと見なすことができるという重要な考え方があります。の最大の「非ペアワイズサブセット」サブセットのサイズは、そのセットをカラーセットと見なして、着色の問題。P(C)(tt/2)
離散トカゲ

2

この問題をグラフのカラーリングに減らす方法を見ることができます。これは、問題を解決するためのツールを提供します(小さなインスタンスの場合!)が、他の方向(NP硬さを確立する)を減らす方法はまだわかりません。

基本的な考え方は、すべての購入の頂点と、同じ旅行で発生する可能性のない2つの購入の間のエッジを含むグラフを作成することです。次に、同じグループ内の2つの購入が競合しないように、購入をできるだけ少ないグループ(「旅行」)にグループ化します。具体的には、が元の有向グラフであり、エッジは人が人を贈る必要があることを示している場合、頂点のある無向グラフを作成します。各エッジ用のにおけると(無向)エッジたびにG=(V,E)uvuvH=(X,Y)xuvuvGxuvxvwuvとはどちらも(指示された)エッジです(旅行中にがを贈り物として購入した場合、同じ旅行中にを購入することはできません)。の頂点カラーリングは、必要な購入(頂点)を、競合しない(エッジを共有する)トリップ(カラー)に分割したものであり、最小サイズの頂点カラーリングは、可能な限り最小のトリップを実行します。vwGvwvHH

3SATからグラフのカラーリングへの削減を適用することにより、(たとえば、グラフの色付けやその他のNP困難な問題をあなたの問題に減らし、それによってそのNP困難さを確立する)別の方向に進むことが可能かもしれません(たとえば、ジェフ・エリクソンのノートの10ページに詳述されている)が、私はこれを自分で試みたことはない。


この答えは素晴らしいです。それは私が探していたものです。このアルゴリズムの時間の複雑さを分析すると、最大で頂点(現在)とエッジがあります。グラフの色付けに関するアルゴリズムを調べると、個の頂点を持つグラフの見つかりません。この場合、エッジの数に多項式の上限があるため、より効率的なアルゴリズムはありますか?n2n(2n3)(n2n)2O(2nn)n
ライリー

1
@Rileyおそらくそうではなく、彩色性を決定します。最大次数グラフのはすでにNP困難です。最大次数3にグラフを3-SATからの還元のために、これらの[講義ノートを(www-sop.inria.fr/members/Frederic.Havet/Cours/coloration.pdf)参照kk33
ディスクリートトカゲ

@離散トカゲ:それらの講義ノートのどこで、そのような削減が行われますか?

なぜこの答えは受け入れられるのですか?私が見る限り、それはNP困難さも「最も最適な」アルゴリズムも効率的なアルゴリズムも示していません。
離散トカゲ

1
@Discretelizardわかりました。特にこの問題がNP困難である可能性を考えると、質問がP時間アルゴリズムを探していることを意味するとは思いませんでした。しかし、私は元の質問でその点をより明確にすることができます。この回答の正解のマークを外し、100ポイントのバウンティを追加します(同じ質問の場合、2番目のバウンティは100でなければならないことがわかりますが、それらは架空のインターネットポイントなので、喜んで提供しますよね? :))この問題がNP困難であることを示すことができる人、またはそれを解決する多項式時間アルゴリズムを見つけることができる人には、再び。
ライリー

0

これは、上司が妥当な時間内に最適なソリューションを見つけることが保証されているアルゴリズムを実装するように依頼した場合に非常に心配になる種類の問題です。

必ずしも最適とは限らない解決策を見つけるために:購入する人々とプレゼントのセットが与えられた場合、私たちは、人々のグループがショッピング旅行で購入できるプレゼントの数を数えることができます。したがって、空のグループ(プレゼントを0個購入できる)から始めます。グループに参加していない各人について、その人がグループに追加された場合に購入できるプレゼントの数を決定します。プレゼントの数を減らさずに追加できる人がいる場合は、購入したプレゼントの数が減るまで、購入したプレゼントの数を最大数まで増やす人をランダムに選択します。それからその買い物旅行をして、すべてのプレゼントが買われるまで最初からやり直します。

私は数回繰り返しますが、より良い解決策が見つかる場合は、「ランダムに」さまざまな人を選びます。

この例では、5人がお互いにプレゼントを購入する必要があり、これは4回の旅行で解決策を見つけるので、最適です。プレゼントの数を変えずにそのままにする旅行に人を追加しなかった場合、5回の旅行になります。そして6人は5回の旅行が必要です。


つまり、購入するプレゼントの数に応じて、買い​​物を貪欲に選んでいるということです。この手順により、必然的に買い物の回数が最小限になることを証明できますか?もしそうなら、あなたは6人の例を間違って処理しました。6人で4回の買い物のみが必要です:。{{1,2,3},{1,4,5},{2,4,6},{3,5,6}}
ライリー

絶対に証拠はありません。貪欲なアルゴリズム+別のランダムな選択を行うと、可能性は少し向上しますが、4回の移動は行われません。
gnasher729 2017

私は問題が貪欲であり、失敗するという主張をテストしました。人を1人ずつ追加するのではなく、可能なすべての買い物旅行をテストしても、5つの旅行が得られます:。貪欲なアプローチでは、2番目の買い物で9つのプレゼントを購入しますが、最適なソリューションでは、2番目の買い物で8つのプレゼントを購入します(上記の順序で行われると想定)。{{1,2,3},{4,5,6},{1,4},{2,5},{3,6}}
ライリー

実際、貪欲なアプローチでは、4回の買い物で5人の場合も解決できません:。{{1,2},{3,4},{5},{1,3},{2,4}}
ライリー

-1

あなたが受け取るのは誰(親)で、誰に与えるのか(子)に基づいて人々を注文するとします。全員がプレゼントを1つずつ受け取り、プレゼントを1つずつ受け取るため、親子機能は1対1です。

親と子を同じグループにしたくない。ランダムな人から始めて、それに応じて全員を注文します。したがって、などです。すべてのを1つのグループに入れ、すべてのを別のグループに入れます。最後の人場合、この人をと同じグループに入れたくないとします。が偶数の場合は問題ありません。そうでない場合は、追加のグループが1つ必要です。最も単純なケースでは、それだけですることができます。p1child(p1)=p2poddpevenpn=parent(p1)p1npn

このアルゴリズムは、全員が接続されていることを前提としています。しかし、そうである必要はありません。複数の切断されたサイクルがある場合、つまり、ある時点で where、そのサークルを終了し、同じアルゴリズムに従って新しいサークルを開始します。同じサイクルのオッズと偶数をマージしない限り、切断されたサイクルをマージできます。pk=parent(p1)k!=n

このアルゴリズムは、最大2ラウンド(偶数)および3ラウンド(奇数)で終了します。nn


このアプローチは、全員が1つのプレゼントを与え、1つのプレゼントを受け取る場合、つまりグラフが順列である場合の問題のみを解決するようです。質問がその特別なケースについてのみ質問することを意図していたかどうかはわかりません-それについてOPが何を言っているか見てみましょう。
DW

それは本当です、私の解決策はである問題のサブケースに対するものです。i,fan_in(vi)=fan_out(vi)=1
ilke444 2017年

はい、特に順列を求めるのではありません。更新された質問で、いくつかの点を明確にしてください。
ライリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.