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


12

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

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


エッジ重みがmax A eB 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)=617=102

他のスパニングツリーは

(11,2),(4,6)=1512=180

(2,11),(11,2)=1313=169


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

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

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

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

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

1

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

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

  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|=(BxAx,ByAy)×(CxAx,CyAy)=(BxAx)Cy+(AyBy)CxAy(BxAx)+Ax(ByAy)

  1. Ay(BxAx)+Ax(ByAy(BxAx)Cy+(AyBy)CxG=(V,E)w(e)=Be(BxAx)+Cx(AyBy)GC

  2. OBC,OACBC,ACO

  3. xy

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