あめだまふぁくとりー

Boost.Graphとかできますん

Graph Layoutが使えない件

BGLのGraph Layoutは名前そのままグラフのレイアウトを行うアルゴリズム群.
Random LayoutやCircle Layoutなど基本的なものから,Kameda Kawaiアルゴリズムといったものまで揃ってる.
これらのアルゴリズムはTopologyと呼ばれるTraitsを持つことで,いろいろなグラフに適用可能となっている.

Topologyが満たすべき要件はたぶんこれ↓
http://www.boost.org/doc/libs/1_48_0/libs/graph/doc/topology.html
なのだが,これだけだとコンパイルエラーになるアルゴリズムがある.

graph/topology.hppのソースを見ると多分Valid Expressioは多分こんな感じになる

Expression Type Description
Topology::point_type type 空間内の座標を表す型
space.random_point() point_type 戻り値:空間内からランダムに選択した点
space.distance(p1, p2) double 戻り値:座標間の距離
space.move_position_toward(p1, fraction, p2) point_type 戻り値:p1,p2線分上の点p.p1,p:p:p2 = fraction : 1-fraction となる
point_type::dimension int型に変換可能な型 空間の次数
Topology::point_difference_type type 二つのpoint_type p1,p2の差を表す型
point_difference_type::dimension int型に変換可能な型 空間の次数
space.difference(p1, p2) point_difference_type 戻り値:p1とp2の差
space.adjust(p1, delta) point_type 戻り値:difference(p, p1) == deltaとなるようなp
space.pointwise_min(p1, p2) point_type 戻り値:成分iがmin(p1[i], p1[i])となるようなp
space.pointwise_max(p1, p2) point_type 戻り値:成分iがmax(p1[i], p1[i])となるようなp
space.norm(delta) double 戻り値:deltaのユークリッドノルム sqrt(delta[0]^2 + delta[1]^2 + ...)
space.volume(delta) double 戻り値:deltaの各成分の積?

あってるかは知らん

追記

これだけじゃ動かん...boundとかextendがいる模様