頂点uとvを持つウェイト付きDAGが与えられた場合、各エッジウェイトは-1または1です。ウェイト和がゼロからvまでのパスがあるかどうかを調べるには?私は、uからvまでのすべてのパスを計算し、その後、ウェイトを合計して、パスが要件を満たすことができるかどうかを確認するアルゴリズムを考え出すことができます。私は同様の問題についてA *アプローチについて聞いたことがありますが、この質問は複雑ではないはずです。この問題のより良いアルゴリズムはありますか?2つの頂点間のウェイト合計がゼロのパスを見つける
答えて
頂点u
が後続ノードn_i
であり、エッジ重みがそれぞれw_i
であるとします。
あなたが持っている場合はW u
からv
重量のパスを持っている:重量W - w_0
とv
からn_0
から
パス、または重量
W - w_1
とv
からn_1
からパスを、または
- ...
- は、など
あなたは上記に基づいてDPアルゴリズムを作成し、重量w
とv
からn
からのパスであります」を意味し、<n,w>
ペアを含む、セットの形で部分問題の解決策をmemoizingすることができます。 " セットに最後に<u,0>
が含まれている場合、解決策があります。
すべてのパスの中に2つ以上の異なる重みが存在できないため、空間の複雑さは最悪です(| V || E |)重みは| E |であり、最小は - | E |)である。 –
合理的な解決策。しかし、どのようにサブ問題の数を決定するのですか? – haruhi93
@ haruhi93:個体(頂点、総重量)ごとに最大1つの副問題があります。あまりにも多くはありません(私の前のコメントを参照してください)、あなたは*すべての*そのようなペアを解決することができます。 –
- 1. グラフ内の2つの頂点間のパスを見つけるDjango
- 2. 2つの頂点間のすべてのパスを見つける
- 3. ウェイト付き頂点を持つポリゴンの重心を見つける
- 4. クイックグラフ内の2つの頂点間のすべての可能なパスを見つける
- 5. 頂点 - 離散パスの最大カバーを見つける
- 6. 点集合から四角形の頂点を見つける
- 7. 2つの頂点の間の最長のパス
- 8. 直角三角形と1頂点の2つの辺から未知の頂点を見つける
- 9. 頂点iとjの間の最小パスを見つける方法それらの間に最大S個の頂点を持つ
- 10. GPS矩形領域の他の2つの頂点を見つける
- 11. Javaは2つの整数間の中点を見つける
- 12. グラフ - すでに2つの頂点間のパスを印刷する方法
- 13. Floyd-Warshallアルゴリズムを使用して2つの頂点の間のパス数を計測する
- 14. 2つの頂点間のエッジを見つける正しい方法は何ですか?
- 15. Orientdb:複数の頂点の間のエッジを見つける方法
- 16. バイナリサーチツリー内のターゲット値に合計するパスを見つける
- 17. スキーマレス頂点クラスのすべてのプロパティを見つける
- 18. Box2D AndEngineの2つの頂点間の結合を中断する
- 19. 完全なグラフの順序付き集合の頂点を見つける
- 20. 2つの頂点間のグラフ接続をチェックする方法
- 21. 非常に重要な頂点を持つ二部グラフの頂点カバーを見つける
- 22. AVLツリーでサイズkの頂点を見つける
- 23. 三角形の頂点を見つける
- 24. ArangoDBが接続された頂点を見つける
- 25. 指定された2つの頂点の間にウェイト付きの有向グラフ内にパスが存在するかどうかを調べる
- 26. グラフの任意の2つの頂点間のサイクルの存在
- 27. 有向グラフのすべての頂点を1回だけ訪れるパスを見つける。
- 28. matlabで2つの矩形の交点がゼロの場合
- 29. 2点間の最大経路を見つける
- 30. 2つの頂点ID間のエッジIDを照会
DAGであるため、DPを使用して解決することができます。 – Sayakiss
はい、おそらくDPがそれを解決できます。しかし、どのような部分問題がどのように見えるのか分かりません。/ – haruhi93