2016-10-18 11 views
0

私は交通会社情報システムをモデル化している簡単なweb-appを持っています。私は指定された注文の最短ルートの自動計算の機能を実装したいと思います。最短の輸送順序ルートを見つけるためのグラフアルゴリズム

new order form

注文は貨物の集合で表現され、それらのそれぞれは、出発/到着ポイントを持っています。私はデータベース内の各ペア間の都市と距離を保存します。問題は、これらすべての貨物を輸送することを可能にする最短ルートを見つけることです。スタートとフィニッシュの都市は重要ではありませんが、唯一興味深い点は、すべての船積みの積み降ろしを含む最短経路です。

このような問題を解決するのに適したグラフアルゴリズムはありますか?

+0

私が正しく理解していれば、1つのルートですべてのアイテムを配信したいと考えています。これは、[Traveling Salesman Problem](https://en.wikipedia.org/wiki/Travelling_salesman_problem)の変形であり、NP-Hardです(効率的な最適解は知られていません)。問題の規模は?どれくらいのアイテムがあると思われますか? – amit

+0

[Dijkstraのアルゴリズム](https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm)と[A *検索アルゴリズム](https://en.wikipedia.org/wiki/A*_search_algorithm)は役に立ちます。 – Bim

+0

@amitはい、1回の輸送中にすべての商品を配送したいと思います。トレーニングプロジェクトなので、アイテムの数は3〜4になると思います。だから、私は手作業で作ったほうがいいでしょうか?) –

答えて

0

アイテムの数が比較的少ない場合(あなたのコメントが示唆しているように)、問題を​​に減らすことができます。

最初に、各都市の間に最短距離がない場合は、Floyd-Warshall algorithmを使用して見つけることができます。各都市の距離が既にある場合は、この手順を省略できます。

ここで、あなたはブルートフォースを使用している都市の数が少ない場合や、より複雑な動的プログラミングソリューションで簡単に解決できるTSPの問題があります。

私があなただったら、簡単な解決策から始めましょう。十分でない場合は、より複雑なものを実装してください。
都市の数が大きくなると、より洗練されたTSPアルゴリズムが必要になり、問題の性質上、最適ではない解決策を見つける必要があります。それは、あなたがほんの少数の都市の領域にいる間に、既存のソリューションがそのトリックを行うべきだと言いました。

+0

あなたの返事をありがとう。私は問題の正確な定義を見つけました。それは、ピックアップと配送に関する車両のルーティング問題(https://en.wikipedia.org/wiki/Vehicle_routing_problem)です。この機能は私のアプリケーションにとって重要ではありませんが、実装するのは面白いです。このタスクを実行できるJavaライブラリがいくつかあることを願っています。 –

関連する問題