2

私は2つの配列を持っています。1つは8000のエントリを持つノード-ノードコスト配列[a_node、b_node、cost]で、もう1つはノードと座標[node、x、y]の関連付けで、約8000のエントリもあります. これら2つの静的配列を持つ方が良いですか、それともこれらをデータベースに保存し、そこからパフォーマンスの問題として配列を作成する方が良いですか?

これら 2 つの配列は、最短パス アルゴリズムを実行するために使用されます。

4

2 に答える 2

0

テストした場合は、自分で答えを見つけることができます。配列にデータを入力する方法と、既存の配列から要素を逆参照する頻度に大きく依存します。前者は、データがデータベースで保存/操作される場合に非常に高速です。後者は灰色の領域ですが、ほとんどの場合、データベースの方が高速であることがわかります。

(これがあなたの宿題であり、ノードの数を考えると、非決定論的アプローチの使用を検討することをお勧めします-遺伝的アルゴリズムは明らかな候補です)

于 2011-03-04T09:08:56.200 に答える
0

おそらく、反復ごとに問題のごく一部を計算し、すべての中間計算が完了したら最短経路を計算できるようにする中間結果を保存する動的計画法ソリューションを使用したいと思うでしょう。 .

すべての情報をデータベースに保存し、レコードのサブセット (一度に 100 程度?) を選択することをお勧めします。各ノードの中間情報を計算し、それをデータベースに保存します。このパス情報を何千回または何百万回も再利用する場合は、常に再計算する必要はありません。グラフが変化したときにのみ再計算する必要があります。

私が推奨する最短パス アルゴリズムはhttp://en.wikipedia.org/wiki/Dijkstra 's_algorithm であり、効率的な動的プログラミング ソリューションに役立ちます。

于 2011-03-04T03:00:19.240 に答える