add_edge - vertex1 + vertex2
Elimizde şöyle bir grap olsun
add_edge - vertex1 + vertex2 + edgeproperty + graph
Örnek - float
Elimizde şöyle bir graph olsun
Elimizde şöyle bir graph olsun.
Elimizde şöyle bir graph olsun
Elimizde şöyle bir graph olsun
Elimizde şöyle bir grap olsun
struct Vertex { int id; double data; };
struct Edge { float distance; };
typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS,
Vertex, Edge> Graph;
Olmayan bir vertex için edge ekleyelim.Otomatik olarak vertex yaratılır. Şöyle yaparız.//add vertices
boost::add_vertex(Vertex{ 1, 1.1 }, g);
boost::add_edge(1, 2, g);
Örnek - float
Elimizde şöyle bir graph olsun
typedef boost::adjacency_list<boost::setS, boost::setS, boost::undirectedS,
uint32_t, float> Graph;
Vertex tipini tanımlamak için şöyle yaparız
Vertexleri birleştiren edge'leri eklemek için şöyle yaparız.
typedef Graph
::vertex_descriptor VertexType;
Vertex'leri eklemek için şöyle yaparız
Graph g;
VertexType v_0 = boost::add_vertex (g);
VertexType v_1 = boost::add_vertex (g);
VertexType v_2 = boost::add_vertex (g);
VertexType v_3 = boost::add_vertex (g);
boost::add_edge (v_0, v_1, 1.0f, g);
boost::add_edge (v_2, v_3, 2.0f, g);
Örnek - shared_ptrElimizde şöyle bir graph olsun.
using Graph = boost::adjacency_list<boost::vecS, boost::vecS,
boost::directedS, boost::no_property, boost::shared_ptr<Obj> >;
using Vertex = Graph::vertex_descriptor;
Şöyle yaparız.void addEdge(Vertex index, Vertex index2, const boost::shared_ptr<Obj> &edgeAttribute) {
auto out = boost::add_edge(index, index2, edgeAttribute, _graph).first;
}
Örnek - charElimizde şöyle bir graph olsun
typedef property<edge_name_t, char> edge_prop;
typedef property<vertex_name_t, char, property<vertex_index_t, int> > vertex_prop;
typedef adjacency_list<vecS, vecS, bidirectionalS, vertex_prop, edge_prop> Graph;
Vertexleri birleştiren edge'leri eklemek için şöyle yaparız.add_edge(v_0,v_1, edge_prop('b'), g);
add_edge(v_2,v_3, edge_prop('a'), g);
Örnek - floatElimizde şöyle bir graph olsun
using EdgeWeightProperty = property<edge_weight_t, float>;
using ColorPropertyType = property<vertex_color_t, default_color_type>;
typedef adjacency_list<setS, // out edge container
vecS, // vertex container
undirectedS, // directed or undirected
ColorPropertyType, // vertex properites
EdgeWeightProperty> // edge properties
;
Vertex'leri eklemeden direkt edge'leri eklemek için şöyle yaparız.GraphType g(4);
EdgeWeightProperty e0 = 4.f;
add_edge(0, 1, e0, g);
EdgeWeightProperty e1 = 10.f;
add_edge(1, 2, e1, g);
EdgeWeightProperty e2 = 3.f;
add_edge(2, 3, e2, g);
Hiç yorum yok:
Yorum Gönder