Eu sou a implementação de um algoritmo em C++ com Boost Graph.
Eu quero encontrar todos os vértices no bairro de v (então, todos os seus vizinhos) e, em seguida, alterar a propriedade de seus e finalmente limpar todas as suas arestas.
Eu encontrei em Aumentar a função adjacent_vertices(v,g)
(onde v é o vértice a e g é o gráfico) para encontrar todos os vizinhos. Então eu quero aplicar em todas elas, a função clear_vertex(v,g)
(novamente, v é o vértice e g é o gráfico) para remover todas as bordas.
Neste ponto, eu tenho um problema. O adjacent_vertices
a função retorna um par de adjacency_iterator
enquanto que , para o clear_vertex
a função que eu preciso vertex_iterator
(se eu entendi corretamente como estas funções de trabalho).
Assim, não há uma maneira fácil de transformar o adjacency_iterator
no vertex_iterator
? Se eu manter o adjacency_iterator
e passar para o clear_vertex
função, o problema é que ele não remover as bordas (ou removê-los aleatoriamente para alguns vértices).
Minha errado código é:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}