Boost图库undirected_Graph:如何指定顶点类型(例如int)

Boost Graph Library undirected_graph: how to specify the vertex type (e.g. as int)?

本文关键字:类型 顶点 例如 int 何指定 undirected 图库 Graph Boost      更新时间:2023-10-16

是否可以将boost::undirected_graph中的顶点类型固定为例如"int"?

"int"顶点类型似乎是boost::adjacency_list的默认类型,以下代码有效:

boost::adjacency_list< boost::vecS, boost::vecS, boost::undirectedS> g; boost::add_edge(0 , 1 , g);

但是由于无向图而失败。要使用相同的语法向无向图添加顶点,我还应该执行哪些步骤?

我需要使用一个bron_kerbosch_all_cliques算法,它只接受无向图作为输入。

感谢

我需要使用bron_kerbosch_all_cliques算法,该算法只接受无向图作为输入。

来源告诉我它接受通用图(就像BGL一样):

  • http://www.boost.org/doc/libs/1_57_0/boost/graph/bron_kerbosch_all_cliques.hpp

文档很难找到(可能是quickbook定义中的一个错误?),但这里是:

要求:Graph类型必须是AdjacencyMatrix的模型,IncidenceGraph概念与VertexIndexGraph概念。[1实现edge()的任何Graph类型函数将满足AdjacencyMatrix,但由于不恒定,可能会产生额外的开销时间复杂性。

转到BGL文档中的概念页面,查看哪些图形类型符合要求。

我发现可能"缺失的环节"是VertexIndexGraph概念。您可以通过添加vertex_index_t内部属性

来实现这一点