问题标签 [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.
boost - 删除顶点并再次添加它会导致 boost::graph 崩溃?
我正在使用带标签的图表
和
这让我可以访问带有字符串 id 的顶点。
我添加一个顶点并以这种方式设置它的相关字段:
并像这样删除它们:
到目前为止,这似乎有效。问题是,如果我想再次使用相同的 id 添加已删除的顶点,我会得到以下信息:
在设置新添加顶点的字段时(上面注释为“这里崩溃”)。
可能是什么原因?我正在使用增强功能来删除/添加东西。
c++ - 解决 C++ 中对象之间的依赖关系
我基本上有一个要创建的对象列表,但其中一些依赖于其他对象。每个对象都包含一个它所依赖的对象的“ID”列表(在我的例子中是字符串)。
从那里我只需要一个有序列表,其中第一个元素将是没有依赖关系的元素,而最新的元素将是最依赖的元素。在此列表中逐个获取元素并创建它们应该可以顺利进行......
所以从下面的代码中,我想从对象中得到这个列表:
我知道BGL(boost图形库可以做到,但是好像有点太复杂了
c++ - 隐式图的 BGL 内部属性
我正在尝试在隐式图上使用来自 Boost BGL 的 A* 搜索。我已经实现了我自己的图形类型,它模拟了 Graph 和 IncidenceGraph 的概念。根据 A* 的文档,我应该使用带有隐式图形的 astar_search_no_init 函数。
为了让整个事情正常工作,我尝试实现所有需要的概念的虚拟版本。这包括图形、访问者、启发式和顶点类型。我的主要功能看起来像这样
在不指定任何命名参数的情况下,实现应该使用一些默认值。显然,这些默认值需要我的图表提供一些支持。该图如下所示:
编译时,第一个也是最有趣的错误是:
错误 C2039:“edge_property_type”:不是“graph”的成员
据我了解,我需要为我的图表添加属性。我相信这些属性应该是内部属性。我的问题是:如何为我自己的隐式图形类型添加内部属性?
c++ - 为什么 BGL A* 需要隐式图来建模 VertexListGraph?
对我之前的隐式图的 BGL 内部属性的一个更具体的后续问题
Boost BGL 有一个 A* 算法版本,它应该与隐式图一起工作,即 astar_search_no_init() 函数。隐式图可以建模为 IncidenceGraphs。A*的文档说“请注意,astar_search_no_init() 必须用于隐式图;基本的 astar_search() 函数需要一个对顶点列表图概念进行建模的图。两个版本还需要图形类型来对事件图概念进行建模”。
这不是说图不必建模Vertex List Graph 的概念吗?如果是这种情况,我是否遗漏了一些东西,因为我无法找到将使用 IncidenceGraphs 的函数 astar_search_no_init() 的任何版本?有两个版本的 astar_search_no_init() 可用,它们似乎都适用于 VertexListGraphs。我正在使用 Boost 1.48 并且 A* 在文件 astar_search.hpp 中。
我看不出首先要求隐式图对顶点列表图进行建模有什么意义。该文档对我来说非常混乱和误导。有任何想法吗?
boost - 如何使用 Boost 库读取点文件
我目前正在使用 boost graph lib 来计算强连接组件,但是他们页面上的示例似乎太旧而无法工作,那么我现在如何使用 Boost 1.48 将文件读入 GraphvizDigraph 对象?
c++ - 如何序列化类型 boost::labeled_graph
我有一个 boost:labeled_graph 对象类型,它似乎没有必要的序列化功能。
任何将labeled_graphs序列化为文件的方法?
c++ - Boost 图形库多态捆绑属性
所以我正在使用以下类型的提升图:
VertexT 和 EdgeT 都是保留我需要的许多属性的类。这些是捆绑的属性。我不确定我想使用 bgl 的某些方式是否可行,因此如果您熟悉它们,我们将不胜感激。
VertexT 和 EdgeT 被认为是多态基类。我的理解是 bgl 并不意味着用于指向这些属性的指针。如何使用 BGL 处理多态顶点和边属性?我想过使用共享指针,但我更愿意自己管理内存。此外,当使用 boost::get 为 boost 布局生成位置图时,这似乎可以防止出现问题。
现在我已经通过让顶点包含另一个指向真正多态类的指针来解决这个问题。但这似乎太复杂了。有什么建议么?
c++ - 是否可以将boost库的广度优先搜索算法应用于矩阵?
我的任务是在矩阵中找到从一个点到另一个点的最短路径。只能在这样的方向上移动(上、下、左、右)。
S - 起点
F - 目的地(完成)
0 - 空闲单元格(我们可以通过它们)
1 - “墙”(我们不能穿过它们)
很明显,广度优先搜索以最优化的方式解决了这个问题。我知道 Boost 库提供了这个算法,但我以前没有 Boost。
在我的情况下,如何使用 Boost 进行广度优先搜索?据我了解,Boost 的广度优先搜索算法仅适用于图形。我想将矩阵转换为带有m*n
顶点和m*(n -1) + (m-1)*n
边的图形并不是一个好主意。
我可以将广度优先搜索算法应用于矩阵(而不将其转换为图形),还是实现我自己的广度优先搜索函数更好?
c++ - 如何置换 boost::adjacency_list 中的节点?
假装以下类型定义和定义:
我有一个算法输出我 g 和 g_to_tc_map (如上)。现在,我需要通过 g_to_tc_map 置换节点(我认为,这类似于整数数组或 std::map)。
注意:我发现有一个 boost/graph/detail/permutation.hpp,但我不知道如何使用它(甚至得到只包括这个文件的错误,与其他标题冲突)。
感谢任何想法/代码如何进行这种排列。
c++ - boost::transitive_closure() 和“错误:没有匹配函数调用 'vertices(const std::vector……”
我在 Linux 机器上使用 GCC 4.5.0 和 boost 1.48.0。
在编译使用 boost::graph 中的 boost::transitive_closure() 函数的源文件时,我遇到了与http://boost.2283326.n4.nabble.com/Problem-in-using-Transitive相同的问题-closure-on-Linux-td2573042.html。但是在我的情况下,在任何其他 Boost 头文件之前包含 boost/graph/vector_as_graph.hpp 并不会改变这种情况。
以前有人遇到过这种情况并知道如何解决吗?