2016-08-31 4 views
-2

私は通過する必要がある開始点、終了点、頂点を選択したいので、アルゴリズムはルーティングの最短経路を見つけるはずです。私はテーブルを持っていますRoutes Id |名前| StoreA | StoreB | StoreAとStoreBはStoreテーブルからのFKsです。私は片方だけのためにデータを保存します。 例:テーブルルート1 | Lidl-Kaufland | 1 | 2 | 157で、距離は同じですので戻ってはいけません.QuickGraphライブラリからBidirectionalGraphまたはUndirectedGraphを使用するかどうかはわかりません。選択された頂点でルーティングするアルゴリズム

たとえば、このロードネットワーク:1http://i.stack.imgur.com/mxcWe.png まず、この4つの頂点を選択して、開始点と終了点を選択します。 私はQuickGraph 3.6を使用しています。ここで最大の問題は、どのグラフを使用すればいいのですか?目的に合わせてアルゴリズムがありますか?ありがとう、私は私が私に答えるために必要なすべてを説明したことを願っています。

+1

嫌な音がする危険がありますが、あなたの問題は次のようなものです:(https://en.wikipedia.org/wiki/Travelling_salesman_problem)?そのような場合はパフォーマンスの問題に遭遇するかもしれませんが、その問題の名前を検索すると、より迅速に回答を見つけることができます。 – TheHowlingHoaschd

+0

ありがとうございました!私がもっと私を助けることができるなら、私ははるかに幸せになるでしょう、もう一度ありがとう! –

+0

あなたの問題は*対称* TSP(どちらの方向でもあなたのエッジコストは同じですが)と非常によく似ていますが、複雑です。伝統的なTSPでは、旅行者は原点に戻る必要があります。これにより、各頂点に到着と出発があるという問題が単純化される。頂点の数が制限されている場合(<11程度)、すべての*置換を試して無差別な力で問題を解決できます。大きな問題の場合は、ブランチ&バウンドアプローチを試してみてください。さらに大きな問題については、本当の最適なものを見つけるのは難しいので、ヒューリスティックなアプローチを試してみてください。 – JerryM

答えて

0

Traveling Sales Manの問題のようです。これには2つのアプローチがありました。

  1. あなたはグラフの最小総コストを持っていると思いツリーにグラフを剪定したい場合は、プリムまたはクラスカルから最小スパニングツリーアルゴリズムを試してみてください。これは、最終的に、あなたが持っている既存のグラフから最小総コストグラフを得るでしょう。
  2. 最小時間でグラフのすべてのノードを通過して開始ノードに戻したい場合は、Traveling Salesmanアルゴリズムを試すことができます。
  3. これは実際の道路ネットワークであれば、有向グラフを使用したい場合もあれば、一部の道路は片道で、一部は2通りです。だから、あなたはいつも同じ距離が戻ってくると言うことはできません。
  4. すぐに使用できるソリューションをご希望の場合は、PostGisPostGreSqlPgRoutingとお試しください。すでにデータをデータベースに保存しているので、自分で必要なアルゴリズムを自分で手助けすることができます。

これが役に立ちます。

+0

ありがとう、私は旅行セールスマンのアルゴリズムを検索し、私は私のコードに実装されます、ありがとう! –

関連する問題