问题标签 [boost-graph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
940 浏览

c++ - 使用 Boost adjacency_list 执行 connected_components where VertexList=listS

我在一个项目中使用 Boost Graph Library,它被声明为:

事情进展顺利,直到我不得不在我的图表上调用 connected_components 。

问题似乎是,如果 VertexList=listS,我没有 vertex_index 作为我的顶点的属性。这使得 connected_components 给我这样的错误:

/usr/local/include/boost-1_39/boost/property_map.hpp:在成员函数'R boost::iterator_property_map::operator[](typename boost::property_traits::key_type) const [with RandomAccessIterator = __gnu_cxx::__normal_iterator , IndexMap = boost::adj_list_vertex_property_map, boost::detail::error_property_not_found, const boost::detail::error_property_not_found&, boost::vertex_index_t>, T = boost::default_color_type, R = boost::default_color_type&]':

所以问题是:如何添加 vertex_index 作为我的顶点的属性?

如果我添加它,是否意味着每当我调用 add_vertex、remove_vertex 等时,我必须为每个顶点更新此信息?

0 投票
3 回答
1507 浏览

c++ - 当图 VertexList=vecS 时 remove_vertex

我有一个带有 VertexList=vecS 的 Boost Graph。

现在我想遍历我的顶点并删除那些具有特定属性的顶点。我怎样才能做到这一点?

问题是每当我调用 remove_vertex 时,图中顶点的迭代器以及顶点描述符都会失效。

0 投票
1 回答
756 浏览

graph - 非平面图的平面化算法

是否存在用于平面化非平面图的流行算法。

我目前正计划在 Boost ( Boost Graph Library ) 中为无向图实现正交平面布局算法。BGL 有一个实现来检查无向图的平面性(Boyer-Myrvold Planarity Testing),我计划使用此方法返回的平面嵌入来进行正交布局。

但是我不确定如果输入图是非平面的应该怎么做。我是否应该对在这种情况下返回的 Kuratowski 子图做一些事情以使图平面化。

Google 搜索“非平面图的平面化”会返回多篇研究论文。我不知道从哪里开始。

0 投票
3 回答
3674 浏览

c++ - 在 dijkstra_shortest_paths 中使用捆绑属性作为权重图

也许这是一个愚蠢的问题,但我正在尝试使用 BGL dijkstra_shortest_paths,特别是使用我的 Edge 捆绑属性的字段作为权重图。我的尝试目前导致了数十页的编译器错误,所以我希望有人知道如何帮助我。这基本上就是我的代码的样子:

我可以毫无问题地填充图表,但是在调用时dijkstra_shortest_paths,我遇到了麻烦。我想使用该length字段。具体来说,我想知道在这样的电话中需要什么提升巫术:

这样 weightmap 将以某种方式将我的图形的特定边缘与length属性中的相应字段相关联。我确信有一种简单的方法可以做到这一点,但是 BGL 的文档对我来说非常不透明。如果您能告诉我该示例在文档中的哪个位置进行了描述,我也会很高兴。

先感谢您!

0 投票
2 回答
127 浏览

multithreading - BGL 并发读访问问题

我需要从多个线程迭代 BGL adjacency_list 的顶点和边缘。如果图形很大(互斥体..),哪种方法可以有效地做到这一点?

BGL 方法不支持可重入调用?

0 投票
1 回答
639 浏览

c++ - 如何在使用 Boost Graph Library 进行广度优先搜索期间访问祖先顶点?

我正在尝试使用 Boost Graph Library 中包含的广度优先搜索算法编写我自己的连接组件发现版本,并且我需要从 withing 访问祖先(导致发现当前顶点的顶点)顶点访问者的 discover_vertex 回调来设置当前顶点的组件号。有什么方法可以轻松完成吗?

0 投票
2 回答
597 浏览

c++ - 使用 BGL 创建生成树

我有一个 BGL 图,想使用 BGL 创建一个生成树。

从指定的顶点开始,我想将最短边添加到与该顶点连接的图形中。从那里开始,我想总是选择与迄今为止存在的图形连接的最短边。

所以,我想添加一个约束,即每个新边都必须已经连接到图,同时保持没有循环的生成树标准。

用手来做这件事并不难。但是因为我想了解一些关于 BGL 的知识,所以我想知道哪种算法最适合我的问题。

0 投票
2 回答
127 浏览

c++ - 仅将 std::vector 属性的元素传递给 BGL 算法

我有一个存储多个边权重的图表

权重都被推到向量上。

现在我想调用prim_minimum_spanning_tree()图表上的函数,向量中的第一个元素用作权重。

如何执行正确的函数调用?

0 投票
2 回答
1183 浏览

c++ - 我可以使用提升图实现潜在场/深度优先避障方法吗?

我在 Matlab 中实现了一个避障算法,它为图中的每个节点分配一个电位并尝试降低这个电位(路径规划的目标是全局最小值)。现在可能会出现局部最小值,因此(全球)规划需要一种方法来摆脱这些。我使用该策略来列出可以从已经访问过的节点访问的开放节点列表。我接下来访问潜力最小的开放节点。

我想在 C++ 中实现它,我想知道 Boost Graph 是否已经有这样的算法。如果没有 - 如果我必须自己编写算法并且我还必须创建自己的图形类,那么使用这个库有什么好处,因为图形太大而不能作为邻接列表/边列表存储在内存中。

任何建议表示赞赏!

0 投票
4 回答
548 浏览

c++ - 如何解决 Boost::BGL 模板<->类循环依赖?

我在使用 Boost 图形库的邻接列表时遇到问题。这似乎是一个循环依赖问题:我有一个模板的 typedef T,它使用了某个类 A。另外,A 存储了一个指向 T 类型对象的指针。现在编译器告诉我,T 没有命名一个类型。

以下是我更具体的文件的摘录:

如何解决这个依赖/包含顺序问题?

另一个编辑:我只是想到 edge_descriptor 的类型可能是像 int 这样的原始类型。这将解决问题,因为我可以用普通的 int 变量替换 Lane 的 edge_descriptors,因此可以删除 tie.hpp 中包含的 graphdefinitions.hpp。不幸的是,我的想法很糟糕,我必须找到另一个解决方案。Edge_descriptor 类型似乎是有原因的......