Boostのグラフbreadth_first_search()を使用して、重みのない無向グラフのパスを見つける

StackOverflow https://stackoverflow.com/questions/442834

質問

私は、無向エッジと非加重エッジを持つadjacency_listグラフを使用しています。頂点uと頂点vの間の最短経路を見つける必要があります。 uからbreadth_first_search()を使用する必要がありますか? vに達したら、どのようにしてパスを取得し、どのように検索を停止しますか?

ありがとう!

役に立ちましたか?

解決

最短パスアルゴリズムの1つ、 2つの頂点間のパスを見つける必要があるため、Dijkstra Shortest Path が最適です。 がありますブースト分布での使用。その関数から出力を取得するためのオプションがいくつかあります:距離プロパティマップを提供するか、先行マップを作成するか、カスタムビジターを作成します。

他のヒント

はい、uからbreadth_first_search()を実行します。

FOR every vertex i meet
  IF i==v: BREAK
  record predecessor of i as i.p

最短パスを見つけるには、v:から始めます。

PRINT_PATH(u, v)
  IF v==u
    print u
  ELSEIF v.p==NIL
    print 'no path from u to v exists'
  ELSE PRINT_PATH(u, v.p)
    print v

最小スパニングツリー:検索アルゴリズムを使用する必要があります。これは非常に単純で単純な欲張りアルゴリズムです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top