2011-12-17 19 views
1

まず、構造が正しいことを確認したいと思います。 は、私の知る限りでは、グラフを表す隣接リストは、次のようになります。非加重グラフ内の隣接リストの最短経路

an adjacent list

AdjListは、各要素がオブジェクトであるArrayListを、です。各オブジェクトには、連結された頂点を表すための内部のArrayListが含まれています。たとえば、上記の画像では、Vertext 1(AdjListの最初のインデックス)がAdjListのインデックス2,4,5の頂点に接続されています。この隣接リストの表現は正しいですか? (PS:インデックスは0から始まることを知っています。私は簡単/簡単のためにここに1を入れます)。

正しい場合は、2つの頂点間の最短経路を見つけるのにどのアルゴリズムを使用する必要がありますか?

答えて

4

と一緒にJavaでDijkstra's shortest pathアルゴリズムの例です。一つの頂点と他のすべての間の最短経路を見つける(そして、あなたが必要なものを選択)する

  1. Dijkstra's algorithmを:あなたがいずれかを使用することができます。
  2. Roy-Floyd algorithm可能なすべての頂点ペア間の最短経路を見つける。

リンクには擬似コードも含まれます。

+6

重み付けされていないグラフの場合、ダイクストラは過剰です。 BFSを使用して、目的地に到着するとすぐに停止することができます。 – niteria

+0

さらに、Dijkstraのalgを読んで、グラフに重みを付けなければならないようですね。 – sqram

+0

@lyrae:グラフの重み付けがない場合は、すべての重みを1に設定するだけです。 – Tudor

2

はここで、あなたに2つの頂点の間だけの最短経路を与えるために何のアルゴリズムはありません説明

1

Dijkstra'sとFloyd Warshallを使用できます。重み付けされていないグラフについては、各エッジの重みを1とし、アルゴリズムを適用する。