子图和图连接在提升
subgraph and graph connectivity in boost
我想知道是否有一些预定义的函数可以将这两个测试结果作为 BOOST 中的布尔值获取,然后我将代码(在 UPDATE 中)。
1- 如果图 G1 是 G2 的子图(通过给出 g1 和 g2 作为函数参数)。
这里 http://www.boost.org/doc/libs/1_57_0/libs/graph/doc/subgraph.html 子图用作类而不是函数。
2-图形G连接(通过给出g作为函数参数)。
在这里的官方文档中 http://www.boost.org/doc/libs/1_57_0/libs/graph/doc/connected_components.html 我发现connected_components函数计算图中有多少连接的组件,并为每个组件分配一个整数标签。然后,该算法通过在组件属性映射中记录组件编号来记录图形中每个顶点属于哪个组件。
好吧,这里有两个例子:
测试图 G1是否是 G2 的子图(通过给出 G1 和 G2 作为函数参数):
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/vf2_sub_graph_iso.hpp>
using namespace std;
using namespace boost;
struct my_callback
{
template <typename CorrespondenceMap1To2, typename CorrespondenceMap2To1>
bool operator()(CorrespondenceMap1To2 f, CorrespondenceMap2To1 g) const
{
return false;
}
};
int main() {
typedef adjacency_list<setS, vecS, bidirectionalS> graph_type;
// Build graph1
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
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);
// Create callback to print mappings
//vf2_print_callback<graph_type, graph_type> callback(graph1, graph2);
// Print out all subgraph isomorphism mappings between graph1 and graph2.
// Vertices and edges are assumed to be always equivalent.
cout<<vf2_subgraph_iso(graph1, graph2,my_callback())<<endl;
return 0;
}
测试图形 G 连通性(通过给出 g 作为函数参数):
bool graphconnexe(Graph const& g) {
return num_edges(g) >= num_vertices(g) - 1;
}
相关文章:
- 如何在 boost 中访问现有图的子图
- 以编程方式连接子图
- 需要使用boost ::图形从一个大图中找到子图
- 子图的图形特征
- 提升图相等性和子图
- 如何删除提升图的子图
- 子图和图连接在提升
- Boost子图复制构造函数不适用于Qt 5.0.2和MinGW
- 如何访问提升子图'graph'属性?
- 使用write_graphviz()打印组成的子图
- Boost子图实现和使用Graphml导出
- 是否有任何方法可以使用c++ libgraph为子图设置默认节点属性?
- 我应该用过滤图还是子图,还是别的什么
- 为什么Boost VF2子图同构给出一个不正确的答案
- 图的子图求值问题
- Boost子图和捆绑属性
- 查找子图中的边
- 连接子部件插槽上的信号
- 如何有效地实现具有大量大完整子图的图
- 如何用集合顶点列表创建boost子图