|
Boost Users : |
Subject: [Boost-users] [Boost][Graph] vf2 implementation question
From: Marc Viala (cram.viala_at_[hidden])
Date: 2014-04-20 11:59:50
Hi,
Recently,I tried to use Boost.Graph's VF2 implementation and after having
played few days with this module, I was wondering if this implementation
supports "adjacency_matrix" model as explained by the documentation (cf.
http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/vf2_sub_graph_iso.html).
To demonstrate my point, you will find hereafter an C++ example extracted
from the Boost.Graph's documentation. If the macro "ADJACENCY_LIST_STRUCT"
is commented out, this code can't be compiled w/ VS2012 aka VC11 because
the static assertion @line 837 of "boost/graph/vf2_sub_graph_iso.hpp" is
triggered.
My questions are:
- Does this VF2 implementation supports "adjacency_matrix" model?
- Is there any patch for supporting this model of graph?
FYI: If I comment two static assertations in file
"boost/graph/vf2_sub_graph_iso.hpp", at line 837 and line 843, the code
compiles and runs correctly for "adjacency_matrix" model.
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/adjacency_matrix.hpp>
#include <boost/graph/vf2_sub_graph_iso.hpp>
using namespace boost;
//#define ADJACENCY_LIST_STRUCT
int main()
{
#ifdef ADJACENCY_LIST_STRUCT
typedef adjacency_list<vecS, vecS, undirectedS> graph_type;
#else
typedef adjacency_matrix<undirectedS> graph_type;
#endif
// Build graph1.
const int num_vertices1 = 8;
graph_type graph1(num_vertices1);
add_edge(0, 6, graph1); add_edge(0, 7, graph1);
add_edge(1, 5, graph1); add_edge(1, 7, graph1);
add_edge(2, 4, graph1); add_edge(2, 5, graph1); add_edge(2, 6, graph1);
add_edge(3, 4, graph1);
// Build graph2.
const int num_vertices2 = 9;
graph_type graph2(num_vertices2);
add_edge(0, 6, graph2); add_edge(0, 8, graph2);
add_edge(1, 5, graph2); add_edge(1, 7, graph2);
add_edge(2, 4, graph2); add_edge(2, 7, graph2); add_edge(2, 8, graph2);
add_edge(3, 4, graph2); add_edge(3, 5, graph2); add_edge(3, 6, graph2);
// Compute de subgraph isomorphing.
vf2_print_callback<graph_type, graph_type> cb(graph1, graph2);
vf2_subgraph_iso(graph1, graph2, cb);
}
Best regards,
Marc
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net