title: How to use Boost 1.41.0 graph layout algorithmes
body: <p>I have problem using boost graph layout algorithmes.
  boost verision 1_41_0 mingw g++ 4.4.0.</p>
  
  <p>So there are issues I have encountered Can you suggest me with them?</p>
  
  <ol>
  <li>The function fruchterman_reingold_force_directed_layout isn't compiled.</li>
  <li>The kamada_kawai_spring_layout compiled but program crashed.</li>
  <li>Boost documentation to layout algorithms is wrong, sample to fruchterman_reingold_force_directed_layout isn't compiled.</li>
  </ol>
  
  <p>This is my example. To use function just uncomment one. String 60, 61, 63.</p>
  
  <pre><code>#include &lt;boost/config.hpp&gt;
  #include &lt;boost/graph/adjacency_list.hpp&gt;
  #include &lt;boost/graph/graph_utility.hpp&gt;
  #include &lt;boost/graph/simple_point.hpp&gt;
  #include &lt;boost/property_map/property_map.hpp&gt;
  #include &lt;boost/graph/circle_layout.hpp&gt;
  #include &lt;boost/graph/fruchterman_reingold.hpp&gt;
  #include &lt;boost/graph/kamada_kawai_spring_layout.hpp&gt;
  #include &lt;iostream&gt;
  
  //typedef boost::square_topology&lt;&gt;::point_difference_type Point;
  typedef boost::square_topology&lt;&gt;::point_type Point;
  
  struct VertexProperties
  {
      std::size_t index;
      Point point;
  };
  
  struct EdgeProperty
  {
      EdgeProperty(const std::size_t &amp;w):weight(w) {}
      double weight;
  };
  
  
  typedef boost::adjacency_list&lt;boost::listS,
              boost::listS, boost::undirectedS,
              VertexProperties, EdgeProperty &gt; Graph;
  
  typedef boost::property_map&lt;Graph, std::size_t VertexProperties::*&gt;::type VertexIndexPropertyMap;
  typedef boost::property_map&lt;Graph, Point VertexProperties::*&gt;::type PositionMap;
  typedef boost::property_map&lt;Graph, double EdgeProperty::*&gt;::type WeightPropertyMap;
  
  typedef boost::graph_traits&lt;Graph&gt;::vertex_descriptor VirtexDescriptor;
  
  int main()
  {
      Graph graph;
  
      VertexIndexPropertyMap vertexIdPropertyMap = boost::get(&amp;VertexProperties::index, graph);
  
      for (int i = 0; i &lt; 3; ++i) {
          VirtexDescriptor vd = boost::add_vertex(graph);
          vertexIdPropertyMap[vd] = i + 2;
      }
  
      boost::add_edge(boost::vertex(1, graph), boost::vertex(0, graph), EdgeProperty(5), graph);
      boost::add_edge(boost::vertex(2, graph), boost::vertex(0, graph), EdgeProperty(5), graph);
  
      std::cout &lt;&lt; "Vertices\n";
      boost::print_vertices(graph, vertexIdPropertyMap);
  
      std::cout &lt;&lt; "Edges\n";
      boost::print_edges(graph, vertexIdPropertyMap);
  
      PositionMap positionMap = boost::get(&amp;VertexProperties::point, graph);
      WeightPropertyMap weightPropertyMap = boost::get(&amp;EdgeProperty::weight, graph);
  
      boost::circle_graph_layout(graph, positionMap, 100);
     // boost::fruchterman_reingold_force_directed_layout(graph, positionMap, boost::square_topology&lt;&gt;());
  
      boost::kamada_kawai_spring_layout(graph, positionMap, weightPropertyMap,
          boost::square_topology&lt;&gt;(), boost::side_length&lt;double&gt;(10), boost::layout_tolerance&lt;&gt;(),
          1, vertexIdPropertyMap);
  
      std::cout &lt;&lt; "Coordinates\n";
      boost::graph_traits&lt;Graph&gt;::vertex_iterator i, end;
      for (boost::tie(i, end) = boost::vertices(graph); i != end; ++i) {
          std::cout &lt;&lt; "ID: (" &lt;&lt; vertexIdPropertyMap[*i] &lt;&lt; ") x: " &lt;&lt; positionMap[*i][0] &lt;&lt; " y: " &lt;&lt; positionMap[*i][1] &lt;&lt; "\n";
      }
  
      return 0;
  }
  </code></pre>