Boost.Graph是一个包含通用图形组件和算法的C ++库。
基本 Boost Graph read_graphml 用例的问题
我一生都无法理解如何正确设置 read_graphml。 省略明显的文件 IO,到目前为止我有: 结构节点属性{ std::string d{}; std::string e{}; std::string f{};...
基本 boost::grap::read_graphml 用例的问题
我一生都无法理解如何正确设置 read_graphml。 省略明显的文件 IO,到目前为止我有: 结构节点属性{ std::string d{}; std::string e{}; std::string f{};...
有没有一种流行的非平面图平面化算法。 我目前正计划在 Boost 中为无向图实现正交平面布局算法(Boost Graph Libr...
对于给定的有向无环图 G,如何最好地创建所有新边的列表以保持图无环?
我有一个有向非循环图G。我想生成一些数据结构,它可以告诉我在保持图非循环的同时允许哪些新的给定边(u,v)。 例如,给定 gr...
dijkstra_shortest_paths()中vertex_descriptor的一致性
在 BGL 介绍性示例中, 使用命名空间提升; int main(int,char*[]) { // 为 Graph 类型创建一个 typedef typedef adjacency_list 图; //
如何制作一个简单的ColorMap供Boost Graph Library BFS访问?
假设我有一个 3D 晶格,用坐标 (x,y,z) 标识每个单元,并且类 Cell 保存其属性。我想用它作为BGL的顶点对象,首先构造一个空图...
boost.graph:在过滤图上使用 kruskal 算法无法编译
我正在使用boost graph,我正在尝试在过滤图上运行kruskal_minimum_spanning_tree算法。遗憾的是它无法编译。 这是显示问题的示例: #包括 我正在使用 boost graph,并且尝试在过滤图上运行 kruskal_minimum_spanning_tree 算法。遗憾的是它无法编译。 这是一个显示问题的示例: #include <boost/graph/adjacency_list.hpp> #include "boost/graph/graph_utility.hpp" #include <boost/graph/filtered_graph.hpp> #include <boost/property_map/function_property_map.hpp> #include <boost/graph/kruskal_min_spanning_tree.hpp> using Graph = boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS>; using Vertex = boost::graph_traits<Graph>::vertex_descriptor; using Edge = boost::graph_traits<Graph>::edge_descriptor; int main() { Graph G; // create a complete graph with 4 nodes. for (int i = 0; i < 5 ; ++i) { for (int j = i+1; j< 5; ++j) boost::add_edge(i, j, G); } boost::print_graph(G); /* 0 <--> 1 2 3 4 1 <--> 0 2 3 4 2 <--> 0 1 3 4 3 <--> 0 1 2 4 4 <--> 0 1 2 3 */ struct Filter { bool operator()(Vertex const & v) const { if (v != 0 && v != 2) return true; return false; } }; boost::filtered_graph G_f(G, boost::keep_all(), Filter()); boost::print_graph(G_f); /* 1 <--> 3 4 3 <--> 1 4 4 <--> 1 3 */ auto wmap = boost::make_function_property_map<Edge, double>([](Edge const & e){ return 1.0; }); std::vector<Edge> mst; // Works: kruskal_minimum_spanning_tree(G, std::back_inserter(mst), boost::weight_map(wmap)); // Does not compile: kruskal_minimum_spanning_tree(G_f, std::back_inserter(mst), boost::weight_map(wmap)); double result = 0; for (auto const & e : mst) result += wmap[e]; std::cout << result << "\n"; // prints 4 } 我可以将 kruskals 算法应用于原始图,并且效果很好。 但是当我尝试在过滤后的图表上运行它时,我收到以下编译错误: error C2039: 'type': is not a member of 'boost::vertex_property_type<Graph>' error C2039: [ error C2039: with error C2039: Graph=boost::filtered_graph<Graph,boost::keep_all,main::Filter> error C2039: ] error C3203: 'type': unspecialized class template can't be used as a template argument for template parameter 'Property', expected a real type 我做错了什么? 我认为问题在于,为了运行 Kruskal 算法,你的图应该有边权重,但你的示例中并非如此: using Graph = boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS>; using Vertex = boost::graph_traits<Graph>::vertex_descriptor; using Edge = boost::graph_traits<Graph>::edge_descriptor; 应该是这样的: using namespace boost; typedef adjacency_list< vecS, vecS, undirectedS, no_property, property< edge_weight_t, int > > Graph; typedef graph_traits< Graph >::edge_descriptor Edge; typedef std::pair< int, int > E; 请查看官方文档中的完整示例: https://www.boost.org/doc/libs/1_85_0/libs/graph/example/kruskal-example.cpp
我想要两种类型的图表(具有不同的捆绑属性,下面进行了简化)。其中一种类型用于表示另一种类型的子图,所以我希望能够映射顶点...
我正在尝试使用 emscripten 从源代码构建 Boost。 我的一个可执行 CMake 项目依赖于以下 boost 库: 提升::提升 提升::文件系统 升压::程序选项
读取 Boost Graph Library 中的 GraphML 文件时出现解析错误
我在使用 Boost Graph Library 读取 GraphML 文件时遇到问题。该文件创建时没有问题,但读回它会引发解析错误。以下是我正在做的事情的总结: 我创建我的
当存在没有边的顶点时如何使用boost::connected_components?
boost中的例子来自文档 https://www.boost.org/doc/libs/1_85_0/libs/graph/example/connected_components.cpp //================================================== ======================= //
我正在尝试创建 boost::adjacency_list 的 boost::subgraph,但我在创建时遇到了一个我不明白的错误。专门使用 boost::adjacency_list 构建的类似代码和
我正在尝试通过Boost图形库创建一个图形,它具有自定义索引(删除顶点时稳定), 我复制了此处提出的解决方案来创建非常有效的图表
我想做一个改变的拓扑排序。在任何给定的级别,我们可以采取多种选择。 例如,该图的拓扑顺序可以是 1 -> 2 -> 3 或 2 -> 1 ...
C++ Boost kamada_kawai_spring_layout 问题
为了实现某些顶点位置固定的平面嵌入, 我目前正在使用力导向布局方法。这种做法可行吗? 我目前面临编译问题...
将 EdgeList 作为 unordered_set 存储在 Boost Graph Library 上
我正在重现一个科学实验,我需要将图的边集存储为无序集。我正在尝试使用 BGL adjacency_graph,我认为最后一个参数是 hash_...
Boost Graphs - 来自 JSON 的确定性图行为
我正在从 JSON 数组文件创建图形,我希望这样当我遍历图形的边和顶点(例如 in_edges()、vertices() 或 topological_sort() )时,它位于准确
我正在根据 JSON 文件中的数据创建图形,并且我希望这样当我遍历图形的边和顶点(例如 in_edges()、vertices() 或 topological_sort() )时,它位于该...
我有一个升压有向图的包装器。每个顶点都有一个整数 id 字段,我想在 typedef 中编写一组按 id 排序的顶点描述符。本质上我有: 结构 VertexDat...
如何使用 add_vertex() 将自定义 vertex_descriptor 设置为自己的值 - Boost Graph Library
我正在学习 Boost Graph Library (BGL) 的工作原理,并使用以下示例来尝试根据文本文件中的某些数据创建图形。数据从文本文件中读入...