2017-06-22 39 views
0

私は、別のレストランへの距離の束を設定したスプレッドシートを持っています。簡単にするため、列Aのすべてにレストラン名/コードがあるとします(コードは2〜XXXの数字です)。次にBXXX - 1には、レストランとの距離をAに表示する番号と、そのコードが列番号であるレストランが表示されます。VBAでのdijkstraのアルゴリズムの実装

dijkstraのアルゴリズムを実装して、2つのユーザー入力が与えられた最短経路を見つける方法を教えてください。

例スプレッドシートのスクリーンショットは、以下を参照してください: Screenshot of the Spreadsheet

+0

純粋なVBAで書く。入力は、開始ノード、ターゲットノード、および距離の2次元VBA配列とすることができ、戻り値は距離またはおそらくは最短経路そのものとすることができる。あなたのスプレッドシートのレイアウトは、あなたがDijkstraを実装しているときはある程度無関係です。あなたのVBA機能を呼び出す必要があるときだけ重要です。 –

答えて

3

あなたがどうなるのかは、距離情報を持っているし、適切なグラフデータ構造に格納し、すべてのデータをループVBAコードを記述することです。あなたのデータが無向グラフを表しているのか、より低い三角行列表現を持っているのが偶然であるのかはわかりません。

とにかく、適切なVBAデータ構造でデータを変換した後は、既存のソリューションを使用してデータ構造と連携させることができます。あるいは、最初に、データ構造が既存のソリューションに適合することを確認します。あなたはVBA Dijkstraの実装hereを見つけることができます。

自分で実装したい場合は、アルゴリズム自体を理解するのに役立つように、hereのようなネット上で多くの例を見つけることができます。

関連する問題