Pregunta

Estoy tratando de definir un gráfico con bordes no dirigidos de un conjunto de bordes de par (int, int) (donde cada int representa un índice de vértice). Cada uno de estos borde tiene un índice propio.

La captura es que quiero que el índice de vértice interno del gráfico sea consistente con los índices de vértice originales. También me gusta poder extraer el índice de borde original de un descriptor de borde.

De http://www.boost.org/doc/libs/1_47_0/libs/graph/doc/using_property_maps.html (Propiedades exteriores Sección) Entiendo que debería usar el siguiente tipo de gráfico:

typedef adjacency_list<vecS, vecS, udirectedS, 
no_property, property<edge_index_t, std::size_t> > Graph;

Desafortunadamente, no hay explicación sobre cómo usar la propiedad Edge_index_T.

Está claro que podría usar un mapa (par (int, int), int) pero estoy buscando una solución orientada a impulso más elegante.

Gracias Kiril

¿Fue útil?

Solución

Dado que usa vectores para definir la recopilación de vértices, hay una correspondencia uno a uno entre los índices de vértice y los descriptores de vértices. Solo necesita definir su objeto gráfico de la siguiente manera:

Graph g(N);

Donde n es número de vértices. Esto asigna N vértices, cada descriptor de vértice es un número de 0 a N-1.

Para obtener el índice de borde desde el descriptor de borde, puede usar la función Get:get(edge_index, g, edge_descriptor);. El descriptor de borde que puede obtener de los iteradores devueltos por adjacent_vertices(v, g) función.

Espero que sea lo que hayas significado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top