二重重みパラメータを持つ最小スパニングツリー


12

グラフ考えG(V,E)ます。各エッジeは2つの重みAeとBeます。製品最小化スパニングツリー検索(∑e∈TAe)(∑e∈TBe)。アルゴリズムは、に関して多項式時間で実行する必要があります。V | 、| E | |V|,|E|。

スパニングツリー(Kruskal、Prim、Edge-Deletion)に従来のアルゴリズムを適用することは困難です。解決方法 ヒントはありますか?


エッジ重みがmax (A e、B e)である新しいグラフを作成しようとするかもしれません。emax(Ae,Be)
— utdiscant

3
これは宿題の問題/運動ですか?もしそうなら、それは教科書からですか?私が尋ねる理由は、コンテキストが問題を「リバースエンジニアリング」するのに役立つからです。...それは貪欲アルゴリズムは、ここで適切であることがすぐに明らかではないが、それは貪欲法の章から来る場合
— ジョー

1
@utdiscant、それはうまくいきません。負のエッジが役立つ場合があります。
— ニコラスマンクーソ

正のエッジであっても有用ではありません。たとえば、ほとんどの場合、ペア(10,10)はペア(11,1)よりも良くありません。

回答:


1

これは、負の重みがある場合は機能しない可能性があるため、負の重みのエッジが与えられていないことを前提としています。

アルゴリズム

あなたのエッジの各々について、それらをラベルするn個1n

してみましょう私はエッジ数の重量A Iaii

ましょうエッジ数の重量B Ibii

この表を作成する

   |a_1 a_2 a_3 a_4 .. a_n
---+-------------------------
b_1|.........................
b_2|.........................
 . |.........................
 . |.........................
b_n|...................a_n * b_n

各テーブル要素は行と列の積です。

各エッジについて、関連するテーブルの行と列を合計します(2回合計されているため、交差点の要素を忘れずに削除してください)。

最大の合計を持つエッジを見つけ、グラフを切断しない場合はこのエッジを削除します。そうでない場合は、エッジを必須としてマークします。エッジが削除されている場合、その行と列を0で埋めます。

正しさ

結果は明らかにツリーです。

頂点が切断されていないため、結果は明らかに広がっています。

結果は最小限ですか?アルゴリズムの最後に、削除により小さなスパニングツリーが作成される別のエッジがある場合、そのエッジは削除され、最初にヌルになります。(誰かが私をこれをもう少し厳密/かつ/または反例にするのを手伝うことができれば、それは素晴らしいことです)

ランタイム

明らかに多項式|V|。

編集する

でない反例。(2,11),(11,2),(4,6)

a1=2,a2=11,a3=4

b1=11,b2=2,b3=6

それから

   | 2     11     4
---+--------------------
11 | 22    121    44
 2 | 4     22     8
 6 | 12    66     24

(4,6)=44+8+24+66+12=154(2,11)=22+4+12+121+44=203(11,2)=121+22+66+4+8=221

(11,2)削除されます。

終わる(2,11),(4,6)=6∗17=102

他のスパニングツリーは

(11,2),(4,6)=15∗12=180

(2,11),(11,2)=13∗13=169


1
これはかなり貪欲なアプローチであるように思えます。私はあなたのミニマリズムの「証拠」に納得していません。
— -Nejc

1
@SaeedAmiriどのように反例ですか?編集したセクションで作業を投稿しました。アルゴリズムは正しい結果を提供します。
— ハープデルピントン

1
あなたがしたことは、各どれだけ貢献しているかを見つけることです(ai,bi)、あなたが最も影響力を持っているものを選びます。それは良いことですが、必要なものではありません。難しい質問です。答えを改善したい場合は、証拠を提出する必要があります。それ以外の場合は使用できません。∑e∈Eai.∑e∈Ebi
— AJed

しかし、あなたの努力に対して賛成票を得るのは非常に不公平です。
— AJed

@AJed証拠は、prim / kush / reverse削除の場合とまったく同じです。ここで証明しなければならないのは、カットプロパティがまだ保持されていることだけです。
— ハープデルピントン

1

これはhttp://www.cnblogs.com/autsky-jadek/p/3959446.htmlからのソリューションですです。

すべてのスパニングツリーを平面内の点として表示できます。ここで、xは重みの合計ですx−yx、Yは重量の合計である Σ E ∈ T BのE。目標は、 x yを最小化することです。∑e∈TAe∑e∈TBexy

  1. 重みに従って最小スパニングツリーを見つける および重み B。したがって、xy平面 A 、Bに 2つのポイントがあります。平面内のすべてのスパニングツリーポイントで、 Aには最小 xがあり、 Bには最小 yがあります。ABA,BAxBy

  2. 今、私たちはポイントを見つけることを目指しています 三角形における O A B線までの最大距離有する A Bを我々が持つことができるように、 XのY軸の値 C三角形内のすべての点に対して最小 A B Cを。COABABxyCABC

なぜなら2SABC=|AB→×AC→|=(Bx−Ax,By−Ay)×(Cx−Ax,Cy−Ay)=(Bx−Ax)⋅Cy+(Ay−By)⋅Cx−Ay(Bx−Ax)+Ax(By−Ay)

  1. Ay(Bx−Ax)+Ax(By−Ay(Bx−Ax)⋅Cy+(Ay−By)⋅CxG′=(V,E)w(e)=Be(Bx−Ax)+Cx(Ay−By)G′C

  2. OBC,OACBC,ACO

  3. xy

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