C++ Boost

connected_components

// 名前付きパラメータバージョン
template <class VertexListGraph, class ComponentMap, class P, class T, class R>
typename property_traits<ComponentMap>::value_type
connected_components(VertexListGraph& G, ComponentMap comp,
    const bgl_named_params<P, T, R>& params = all defaults);

// この関数の名前なしパラメータバージョンは存在しない

connected_components() 関数は無向グラフの連結成分を DFS に基づく方法 を用いて計算する。無向グラフの連結成分はすべての互いに到達可能 な頂点の集合である。もしグラフが増大する間、連結成分を保持する必要があるなら、 incremental_components() 関数の素集合に基づく方法の方が速い。“静的な”グラフには この DFS に基づく方法の方が速い [8]。

アルゴリズムの出力は成分プロパティ・マップ comp に記録 され、そしてそれは各頂点に割り当てられた成分番号を与える数を含んでいる。 全成分数が関数の返却値である。

Where Defined

boost/graph/connected_components.hpp

Parameters

IN: const Graph& g
無向グラフ。グラフの型は Vertex List Graph かつ Incidence Graph のモデルでなければならない。
OUT: ComponentMap c
アルゴリズムはグラフ中にある連結成分数を計算し、各成分に整数のラベルを 割り当てる。アルゴリズムはそれから成分プロパティ・マップ中の 成分番号を記録する事によってグラフ中の各頂点がどの成分に属しているかを登録 する。ComponentMap 型は Writable Property Map のモデルでなければならない。値型は汎整数型であるべきで、できれば グラフの vertices_size_type に等しい方が望ましい。キー型はグラフの 頂点記述子型でなければならない。

Named Parameters

UTIL: color_map(ColorMap color)
これはグラフの進行過程を保持するためにアルゴリズムによって使われる。 ColorMap 型は Read/Write Property Map のモデルでなければならず、かつキー型はグラフの頂点記述子型でなければなら ず、またカラー・マップの値型は ColorValue のモデルでなければならない。
デフォルト: サイズ num_vertices(g)default_color_typestd::vector から作られた iterator_property_mapで、添え字マップには i_map を用いる。
IN: vertex_index_map(VertexIndexMap i_map)
これは各頂点を [0, num_vertices(g)) の範囲において整数にマップする。 このパラメータはデフォルトのカラー・プロパティ・マップが使われた時にのみ 必要である。 VertexIndexMap の型は Readable Property Map のモデルでなければならない。マップの値型は汎整数型でなければならない。 グラフの頂点記述子型はマップのキー型として使用できる必要がある。
デフォルト: get(vertex_index, g)

Complexity

連結成分のアルゴリズムの時間複雑性もまた O(V + E) である。

See Also

strong_components() and incremental_components()

Example

ファイル examples/connected_components.cpp は無向グラフの連結成分を計算する例を含む。


Copyright © 2000-2001 Jeremy Siek, Indiana University (jsiek@osl.iu.edu)

Japanese Translation Copyright © 2003 Takashi Itou
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。

このドキュメントの対象: Boost Version 1.29.0
最新版ドキュメント (英語)