O(3^nポリ(n))時間アルゴリズムがあります。手順は次のとおりです。
- パスに配置できるすべての頂点のセットを検索します。
- 得られたセットパッキングの問題を解決します。
ステップ1は、(a)パス内の頂点のセット(b)、パス内の最初の頂点からなるペアによってインデックスされる動的プログラムによって実行されます。ステップ2は、動的プログラムによっても達成され、テーブルの頂点のセットは、そのサブグラフ上の不連続なパスによって達成可能な最大値にマッピングされる。ステップ1
再発は今PようIsPath(P、V)中のVが存在することPは、すべてのセットを収集
IsPath({v}, v) = true (for all vertices v)
IsPath(S, v) = exists w in S - {v} such that v->w is an arc and IsPath(S - {v}, w) (for all sets of vertices S, for all v in S).
あります。これらの各パスのスコアを計算します。
BestCover({}) = 0
BestCover(S) = max Score(P) + BestCover(S - P) over all P subset of S such that P is a path (for all nonempty S).
パート2の解決方法を詳しく教えてください。私が意味することは、最大の重み(それがカバーするパスの重みの合計)を持つカバーを見つけることです。あなたは最大の体重を持つ経路を探しているようですか? –
@yue私は再発を入れました。 –