impulsionar gráfico, compreender o comportamento de criação de vértices
Estou tentando descobrir o comportamento da criação de vértice ao usar a função add_edge. Aqui está um exemplo:
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_traits.hpp>
using namespace boost;
typedef adjacency_list<> Graph;
typedef graph_traits<Graph>::vertex_iterator v_iter;
Graph g;
add_edge(1,2,g);
add_edge(1,4,g);
add_edge(2,3,g);
add_edge(2,6,g);
std::cout << "num edges: " << num_edges(g) << "; num vertices: " << num_vertices(g) << std::endl;
for (std::pair<v_iter,v_iter> vp = vertices(g); vp.first != vp.second; vp.first++) {
std::cout << *vp.first << " ";
}
retorna:
bash-3.2$ ./main
num edges: 4; num vertices: 7
0 1 2 3 4 5 6
Por que esses vértices estão sendo criados? O gráfico possui 1,2,3,4 e 6 como vértices, 5 no total, não 7. Parece que a função cria vértices de 0 ao valor mais alto de um vértice.
Eu realmente não sei o que está acontecendo aqui, então qualquer ajuda é muito apreciada.
Muito obrigado antecipadamente.