ソース頂点s、デスティネーション頂点tおよびサブセットv 'が与えられた場合、グラフ内のsから頂点tまでの最短の非ループ経路をどのように見つけるか?サブセット内の頂点をパスに含める必要があります。特別な条件の下で最短経路コストを見つけるには?
1
A
答えて
1
Traveling Salesman Problem (TSP)の亜種です。
あなたはグラフ(Floyd Warshall Algorithm)における全対全最短経路を実行することにより、TSPの正確なインスタンスにあなたの問題を変換し、新しいグラフ作成することができます。今すぐ
G'={V' U {s,t}, E'}
V' - the "must go through" subset
E' = { (s,v), (v,t), (u,v) | u,v in V'} (In words: all edges between two nodes in the new graphs)
を見つけますG'
にあるすべてのノード(TSP)を通過する擬似パスは、(2つのペアの間の各パスを拡張した後に)基準を満たす最小パスです。
残念ながら、TSPはNP-Complete問題がある(そこにそれを解決するための既知の多項式時間アルゴリズムはなく、ほとんどは1つが存在すらしていないと考えている)、およびV'
「ノードを経由しなければならない」のあなたのセットは比較的小さくなければ(そしてあなたはアルゴリズムの指数関数時間を稼ぐことができます)、最適ではないかもしれない「十分に良い」アルゴリズムで解決する必要があります。
「無ループ」に関するない追記 - 例えば、それは実行不可能であるかもしれない点に注意してください。この例では
---------
| |
v |
s -> a -> b -> c
|
|
t
、基準を満たすための唯一の道は、あなたの答えのためのs->a->b->c->t
関連する問題
- 1. 迷路での最短経路を見つける、SQL
- 2. Cの迷路で最短経路を見つける
- 3. 迷路で最短経路を見つける
- 4. Cプログラミング:最短経路を見つけるには?
- 5. Neo4jが最短経路を見つけるが、経路を除外する
- 6. 地下最短経路 - Java
- 7. FGLで最短経路を見つける
- 8. OrientDBで最短経路長を見つける
- 9. 双方向A *最短経路を見つけられない
- 10. Neo4jの最小ホップ数で最短経路を見つけるには?
- 11. 最短経路を見つけるためのダイクストラのアルゴリズム?
- 12. 行列の最短経路を見つける方法
- 13. ArangoDB:すべての最短経路を見つける
- 14. グラフとプリントルーティングテーブルの最短経路を見つける
- 15. DLVの最短経路を見つける
- 16. GoogleマップAPI:最短経路を見つける
- 17. three.jsメッシュの最短経路を見つけますか?
- 18. 最小コスト経路
- 19. Neo4j:経路内の2つの連続関係に依存するコスト関数を持つ最短経路
- 20. ArangoDB:条件付き最短経路をすべて見つけてください
- 21. Dijkstraのアルゴリズム - DAG負のコストを伴う最短経路
- 22. 鍵と扉を持つパズルの最短経路を見つける方法
- 23. Cの迷路で最小限の経路を見つける
- 24. GraphViz、2つのノード間の最短経路を見つけよう
- 25. 最短経路アルゴリズム
- 26. PostgreSQL - 最短経路
- 27. 最短経路を見つけても正しく計算しない星アルゴリズム
- 28. 1つの経路を経路指定し、条件付き経路のビュー
- 29. 複数の場所の間の最短経路を見つけます。C#
- 30. 使用座標から最短経路を見つける方法 - Matlab
おかげで私はこの方法に興味があります。しかし、私は疑いがある。 1. **最短パス** **を見てみると、各パスが他と異なることを保証する方法(すべての頂点パスは1回だけ通過する)。 2.TSPの問題は、すべての需要の頂点を含むループのパスを見つけることです、この問題は、何が典型的なアルゴリズムを変更する必要がありますか? – bigboxxx
@bigboxxxループがないことを保証することはできません。なぜなら、上記のようなケースがあります。サイクルのないパスがないからです。 – amit
質量は最小重量の経路を見つけることですが、各需要頂点は1回だけ訪れなければなりません。 – bigboxxx