问题标签 [boost-property-map]
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.
c++ - 升压图的外部属性表现得很奇怪?
我正在使用 Boost::Graph 迈出第一步,并遇到了一些(对我而言)意想不到的行为。
我想要的是拥有一系列edge_weight
属性(数量仅在运行时知道),并使用满足某些约束的所有权重中的最小值。首先,typedef
声明:
我将图形初始化如下:
它INT_MAX
一遍又一遍地输出。似乎 (external)weightMaps[j]
都相同并且等于 internal property fastestLinkWeight
。但为什么?如何确保使用单独的地图?
c++ - 与 boost 图形库中的 std::vector 关联的外部属性映射
我目前正在尝试定义升压图的外部属性。我使用一些捆绑的属性作为内部属性:
但是,在算法期间,我需要一些外部属性,即我希望能够将图形的边/顶点映射到存储在 std::vector 中的元素,以便我可以通过 operator[] 访问它们(Edge e)。我毫无头绪地站在 boost 文档前。似乎我需要一个property_map,但我不知道如何将它们与向量一起使用。到目前为止,我发现的唯一示例涉及从顶点到向量的映射,但由于顶点是无符号整数,因此这是微不足道的。
到目前为止,我对 boost 感到非常沮丧,我认为它可以为我节省大量时间来实现和测试一个图形类,我真的没有得到这个疯狂的模板元编程的东西......
c++ - Boost的property_map测试一个key是否存在?
在 BGL 的上下文中,我需要迭代in_edges
andout_edges
但我想排除那些属于反向边缘的部分,即排除那些属于反向边缘的部分property_map
。下面的代码显示了我想做的事情,但当然property_map
没有find
和end
方法。
更新:一种可能的解决方案是在构建图形时维护一个单独的结构,例如包含反向边的地图。如果我可以控制图形构建,这将起作用,但我没有,因为我使用该函数read_dimacs_max_flow
读取 DIMACS 格式的图形文件。所以我只能依靠 BGL 的可访问性方法来弄清楚什么是什么。
图定义:
以及我想做的示例片段(但没有编译并出现以下错误):
和编译器错误:
c++ - 什么是 BOOST 中的属性映射?
有人可以向像我这样的 Boost 初学者解释 Boost 中的属性映射是什么吗?我在尝试使用 BGL 计算强连通分量时遇到了这个问题。我扔了属性映射和图形模块的文档,但仍然不知道该怎么做。以这段代码为例: - make_iterator_property_map 函数在做什么?- 这段代码的含义是什么: get(vertex_index, G) ?
boost - Is it possible to have several edge weight property maps for one graph?
How would I create a graph, such that the property map (weight of edges) is different in each property map? Is it possible to create such a property map? Like an array of property maps?
I have not seen anyone on the Internet using it, could I have an example?
and put each weight in a property map.
c++ - dijkstra_shortest_paths Boost Graph Lib 1.57.0 失败
我正在使用 BGL,最近从 1.46.1 迁移到 1.57.0。我还从在 Mac 上使用 Xcode 切换到了 gcc 4.9.2。
我得到一个不匹配的函数调用来获取并创建了这个小代码片段来说明问题。如果我将 INCLUDE 路径更改为 1.46.1,则此代码运行良好,它在 1.55.0 和 1.57.0 上失败。
任何建议表示赞赏。谢谢。
使用 gcc 构建的错误日志
c++ - Dijkstra 图在每条边上都有一个权重表
我有一个提升图,每个边都有多个权重(想象一天中每小时一组权重)。这些权重值中的每一个都存储在propretyEdge 类中:
我用这些属性创建了一个图表,然后用正确的值填充它。现在的问题是我想在图表上的一组特定权重上启动 Dijkstra 算法:例如一个函数可以是:
那将使用
图的每个边缘的值。
我一遍又一遍地阅读文档,但我无法清楚地了解我必须做什么。我当然需要写这样的东西,但我不知道要开始:
谢谢您的帮助。
编辑
感谢Sehe 的精彩回答,我能够在 MacOS 和 Ubuntu 上做我想做的事。
但是当我们尝试在 Visual Studio 2012 上编译这段代码时,发现 VS 对 boost 的指针函数理解不太好。所以我们修改了 Sehe 的部分:
经过 :
其优点是不使用指针函数。
c++ - Fruchterman Reingold 的吸引力如何与 Boost Graph Library 协同工作
我正在学习 Boost Graph Library 中的 Fruchterman-Reingold 算法。通过阅读文档,我知道该算法是根据图形布局计算所有节点的位置,但我的问题是我无法理解Boost Graph Library中吸引力的计算步骤。
例如,如果拓扑是高 100 宽 100 的矩形,则每个顶点都标记为字符串,并且每对顶点之间的关系为:
每行表示两个标记的顶点是连接的。每个顶点的吸引力公式应该是:
其中d
是两个顶点之间的距离,k
是最佳距离。但我不明白如何d
在 Boost Graph Library 中的 Fruchterman-Reingold 代码中获取距离。在此示例中,它是否将每对顶点之间的 ASCII 值差异计算为距离d
?('0' 的 ASCII 值是 48,'5' 的 ASCII 值是 53。Fruchterman-Reingold 在 BGL 中计算 53 - 48 = 5 是真的吗?)如果有人能帮助我,我真的很感激。
c++ - 为 GraphViz 的 Boost Graph 捆绑输出重载流式操作符
是否可以在 Boost Graph Library 中使用标准库类型的捆绑属性,同时使用该类型的<<
流运算符重载来满足write_graphviz
?
面对 Boost 静态断言,我将代码修改为上面的代码;从这里采纳一个建议,其中<<
实现是在命名空间中定义的boost::detail::has_left_shift_impl
。唉,我现在面临另一个错误:
有没有办法提供可供使用的<<
重载write_graphviz
?我正在使用 Ubuntu 14.10 和 GCC 4.9.1。
c++ - 设置顶点列表时 write_graphviz 不起作用?
以下代码有错误:
无法将 'std::basic_ostream' 左值绑定到 'std::basic_ostream&&
它在 boost::vecS, // 顶点列表时起作用
是预期的吗?