web-dev-qa-db-ja.com

グラフを保持するための効率的なデータ構造

問題のリンク- http://opc.iarcs.org.in/index.php/problems/NUMTRIPLE

私の意見では、問題はデータ構造によって解決できます。これは、各数値が別の数値にどのように接続されているかを示し、再帰によって可能な最小の値を見つけます。しかし、私の質問は、どのようなデータ構造(最も効率的)がそのようなデータを保持/表現できるかということです。また、この問題を解決するより良い(より速い)方法があります。

ありがとう

5
7Aces

この問題は、グラフの shortest-path problem と同等です。ここで、頂点はトリプルのそれぞれの最初と3番目の数で与えられ、Edgeは2つの頂点を「接続」するトリプルで与えられます。 、エッジの重みは、各トリプルの2番目の数によって与えられます。これは、たとえば Dijkstraのアルゴリズム によって効率的に解くことができます。ウィキペディアの記事には、グラフが「スパース」である限り、このアルゴリズムに適したグラフのいくつかの異なるヒープデータ構造がリストされています。

2
Doc Brown

多次元配列。行列と呼ぶこともできます。

nxn次元配列(Aとしましょう)を作成します-ここで、nはグラフ内のノードの数です。ノードiとjが接続されている場合は、A[i][j]を1に設定し、それ以外の場合は0に設定します。

0
AMohan