// 名前付きパラメータバージョン template <class Graph, class ComponentMap, class P, class T, class R> typename property_traits<ComponentMap>::value_type strong_components(Graph& g, ComponentMap comp, const bgl_named_params<P, T, R>& params = all defaults) // この関数の名前なしパラメータバージョンは存在しない
strong_components() 関数は有向グラフの強連結成分を DFS [41] に基づいた Tarjan の アルゴリズムを用いて計算する。
アルゴリズムの出力はコンポーネント・プロパティ・マップ comp に 記録される。それは各頂点に割り当てられた成分のIDを与える数を 含んでいる。成分数が関数の返却値である。
boost/graph/strong_components.hpp
有向グラフの強連結成分
G=(V,E) は V中の、全ての頂点対 u と v に
おいて、u から v への道と vから uへの道の両方
を持つような最大頂点集合 U である。言うなれば u と vは
互いに到達可能である。
時間複雑性は O(V + E) である。
Parameters
IN: const Graph& g
有向グラフ。グラフの型は Vertex List Graph と Incidence Graph のモデルでなければならない。
OUT: ComponentMap c
アルゴリズムはグラフ中にある連結成分数を計算し、各成分に整数のラベルを
割り当てる。アルゴリズムはそれからコンポーネント・プロパティ・マップ中の
成分番号を記録する事によって
グラフ中の各頂点がどの成分に属しているかを登録する。
ComponentMap の型は
Writable Property
Map のモデルでなければならない。値型は汎整数型であるべきで、できれば
グラフの vertices_size_type に等しい方が望ましい。キー型はグラフの
頂点記述子型でなければならない。
Named Parameters
UTIL: root_map(RootMap r_map)
これは各頂点の候補根頂点を記録するためにアルゴリズムによって
使われる。アルゴリズムの終了までに、各成分のただ一つの根頂点が
存在する。また get(r_map, v) は頂点 v がメンバである成分
のための根頂点を返す。
RootMap は
Read/Write Property Map でなければならず、ここでキー型と値型はグラフの
頂点記述子である。
UTIL: discover_time_map(TimeMap t_map)
デフォルト: サイズが num_vertices(g) の頂点記述子の
std::vector から作られた
iterator_property_map で、添え字マップには i_map
を用いる。
これは頂点の DFS 配列の過程を保持するためにアルゴリズムによって使われる。
TimeMap は Read/Write
Property Map でなければならず、その値型は汎整数型でなければならない。
キー型はグラフの頂点記述子型でなければならない。
UTIL: color_map(ColorMap c_map)
デフォルト: サイズが num_vertices(g) の汎整数型の
std::vector から作られた
iterator_property_map で、添え字マップには i_map
を用いる。
これはグラフを通る進行過程を保持するためにアルゴリズムによって使われる。
ColorMap 型は Read/Write Property Map のモデルでなければならず、かつキー型はグラフの頂点記述子型でなければなら
ず、またカラー・マップの値型は ColorValue をモデルとしなければならない。
IN: vertex_index_map(VertexIndexMap i_map)
デフォルト: サイズ num_vertices(g) の
default_color_type の std::vector から作られた
iterator_property_mapで、添え字マップには
i_map を用いる。
これは各頂点を [0, num_vertices(g)) の範囲において整数に
マップする。
このパラメータは名前付きパラメータの一つにデフォルトが使われた
時にのみ必要である。
VertexIndexMap の型は Readable Property
Map のモデルでなければならない。マップの値型は汎整数型でなければならない。
グラフの頂点記述子型はマップのキー型として使用できる必要がある。
デフォルト: get(vertex_index, g)
Complexity
See Also
connected_components()
and incremental_components()
examples/strong_components.cpp を見よ。
Copyright © 2000-2001 | Jeremy Siek, Indiana University (jsiek@osl.iu.edu) |
Japanese Translation Copyright © 2003 Takashi Itou
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。
このドキュメントの対象: Boost Version 1.29.0
最新版ドキュメント (英語)