template <class IncidenceGraph, class P, class T, class R> void breadth_first_visit(IncidenceGraph& G, typename graph_traits<IncidenceGraph>::vertex_descriptor s, const bgl_named_params<P, T, R>& params); template <class IncidenceGraph, class Buffer, class BFSVisitor, class ColorMap> void breadth_first_visit (const IncidenceGraph& g, typename graph_traits<IncidenceGraph>::vertex_descriptor s, Buffer& Q, BFSVisitor vis, ColorMap color)この関数はカラー・マーカーがアルゴリズム中で初期化されない事を除けば 基本的に breadth_first_search() と同じである。 ユーザはアルゴリズムを呼ぶ前に全ての頂点の色が白色である事を確かめる責任が ある。この違いでグラフの型は Vertex List Graph である代わりに Incidence Graph である事のみが要求される。 更にこの違いはカラー・プロパティ・マップ中のより多くの柔軟性を考慮に入れて いる。例えば頂点上の部分的な関数を実装するだけのマップを使うことができる。 そしてそれは探索がグラフのごく一部にしか及ばない場合、より良い スペース効率である事ができる。
boost/graph/breadth_first_search.hpp
有向グラフまたは無向グラフ。グラフの型は Incidence Graph のモデルでなければならない。IN: vertex_descriptor s
探索が開始される始点。
アルゴリズムの内側で BFS Visitor コンセプトで指定されたイベント・ポイントで呼び出される ビジタ・オブジェクト。ビジタ・オブジェクトは値渡しされる [1]。UTIL/OUT: color_map(ColorMap color)
デフォルト: bfs_visitor<null_visitor>
これはグラフを通る進行過程を保持するためにアルゴリズムによって使われる。 ColorMap の型は Read/Write Property Map のモデルでなければならなく、そのキー型はグラフの頂点記述子型 でなければならなく、カラー・マップの値型は ColorValue をモデルとしなければならない。UTIL: buffer(Buffer& Q)
デフォルト: get(vertex_color, g)
頂点が発見される順序を決定するために使用されるキュー。 もしFIFO キューが使われると、巡回は通常の BFS 順序付けに従う。 他の型のキューも使用できるが、巡回順序は異なる。 例えば Dijkstra のアルゴリズムは優先度付きキューを用いて実装する事が できる。 Buffer の型は Buffer のモデルでなければ ならない。
デフォルト: boost::queue
時間複雑性は O(E) である。
[1]
ビジタのパラメータは値渡しされるので、もしビジタが状態を持っているなら、
アルゴリズムの間のいかなる状態の変更も、送ったビジタ・オブジェクトには
行われずビジタ・オブジェクトのコピーに対して行われる。それゆえポインタ
またはリファレンスによってこの状態をビジタに保持させる事を望むかもしれない。
Copyright © 2000-2001 | Jeremy Siek, Indiana University (jsiek@osl.iu.edu) |
Japanese Translation Copyright © 2003 Takashi Itou
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。
このドキュメントの対象: Boost Version 1.29.0
最新版ドキュメント (英語)