無向の正のエッジ重みグラフがあります(V、E)頂点のサブセットkをカバーする最小全域木が必要です[〜 #〜] v [〜#〜](シュタイナー木問題)。
スパニングツリーのサイズをk頂点に制限していません。むしろ私は正確に知っていますwhichk頂点はMSTに含まれていなければなりません。
MST全体から始めて、すべてを含む最小のMSTを取得するまで、エッジ/ノードを削減することができましたk。
プリムのアルゴリズムを使用してMST全体を取得し、サブセットkのMSTが破棄されていない間にエッジ/ノードの削除を開始できます。あるいは、Floyd-Warshallを使用して、すべてのペアの最短パスを取得し、何らかの方法でパスを結合することもできます。これにアプローチするより良い方法はありますか?
ここでは多くの混乱が起こっています。 OPの発言に基づく:
スパニングツリーのサイズをk個の頂点に制限しているわけではありません。むしろ、どのk頂点をMSTに含める必要があるかを正確に知っています。
これはグラフ上のシュタイナー木問題です。これはk-MST問題ではありません。シュタイナーツリー問題は次のように定義されます。
重み付きグラフG =(V、E)、頂点のサブセットS⊆V、およびルートr∈Vが与えられた場合、Sのすべての頂点をrに接続する最小の重みツリーを見つけたいと思います。 1
他の人が言及しているように、この問題はNP困難です。したがって、近似アルゴリズムを使用できます。
初期/単純近似アルゴリズム
2つの有名な方法は高橋の方法とクラスカルの方法です(どちらもRayward-Smithによって拡張/改善されました):
高橋による最短経路近似(レイワード・スミスによる修正あり)
クラスカルの近似アルゴリズム(Rayward-Smithによる変更あり)
最新/より高度な近似アルゴリズム
生物学では、最近のアプローチで空洞法を使用して問題を処理しました。これにより、大規模なデータセットで優れた精度を示す「修正された信念伝搬」法が実現しました。
検索エンジンの問題との関連で、アプローチは、ある程度前処理できる非常に大きなデータセットの効率に焦点を合わせてきました。
あなたが述べた問題は、 グラフのシュタイナー木 と呼ばれる有名なNP困難な問題です。多項式時間で既知の解決策はなく、多くの人がそのような解決策は存在しないと信じています。
制限されたグラフでプリムのアルゴリズムを実行します(k、E ')ここで、E' = {(x、- y)∈[〜#〜] v [〜#〜]:x∈kおよびy∈k})。そのグラフを作成するには、O(| [〜#〜] e [〜#〜] |)が必要です。