问题标签 [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.

0 投票
1 回答
148 浏览

c++ - boost DFS 不适用于 setS 顶点列表

以下代码未编译。

它在将顶点列表更改为 vecS http://coliru.stacked-crooked.com/a/abeb9e3f96e92af0后工作

这个限制是因为 DFS 需要确定性访问吗?

谢谢,

0 投票
2 回答
1260 浏览

c++ - 使用自定义边缘权重惩罚来提升 A* 访客?

我正在使用 boost A* 算法,从以下示例开始: http: //www.boost.org/doc/libs/1_37_0/libs/graph/example/astar-cities.cpp

我看到你可以覆盖它的启发式方法和它的访问者来进行某种自定义调整,只是我还不太了解下面这样的概念,作为一个学习示例,我希望算法能够不选择边缘城市 - 城市,如果旅行时间(边缘权重)大于 X,例如 100 分钟。(仅在可能的情况下,如果没有找到其他路径,则应选择该城市而不是未找到路径)

我尝试了一个自定义启发式类,它返回比现实更长的时间,以“欺骗”它不选择那个城市,但问题是通过这个技巧,受惩罚的城市被丢弃,即使是进一步的交互。(下面的例子解释了它:B->D 被丢弃,因为找到了更好的路径,但城市 D 没有被丢弃(你会看到它在下面的迭代中被选中)

所以我进一步简化了问题:

通过这个例子(以原始代码为基础),我得到了一条路线:

起始顶点:A

目标顶点:E

从 A 到 E 的最短路径:A -> B -> D -> E

总行程时间:204.5

问题是 B -> D 路径,它是如此长的距离(例如,假设阈值为 100,这将是更可取的路径:A -> B -> C -> D -> E,这样,2个城市之间的距离不超过100(当然只有在可能的情况下,如果没有其他路径,任何必须选择)

我以一种次优的方式解决了它:添加边缘后的自定义函数,即(或手动设置权重)return travelTime > 100 ? travelTime * 2 : travelTime,可以通过以下方式进行测试:

使用这种方法,我得到了想要的A -> B -> C -> D -> E,但这种方法只是解决问题的一种方法,并在内部修改输入数据,我认为这不是最好的解决方案。

有没有更好的方法来实现这一点而无需手动更改距离/旅行时间?

0 投票
1 回答
708 浏览

c++ - BGL - BFS/DFS 访问者,访问顶点颜色

在 BGL 中,我不太清楚如何在 bfs/dfs 搜索期间访问图中顶点的固有颜色(白色表示未触及,灰色表示已访问,黑色表示完成)。

有人可以说明如何从 dfs/bfs 访问者中访问顶点的颜色吗?例如,在编写自定义时examine_edge

0 投票
1 回答
1736 浏览

c++ - 权重图作为 Boost Graph Dijkstra 算法中的函数

我正在使用 Boost Graph Libraries 并且需要使用不是恒定的权重图,但它是参数 K 的函数(即边缘成本取决于 K)。在实践中,给定以下代码:

我想调用 Dijkstra 算法如下:

但错误如下

不能在没有对象的情况下调用成员函数“float Edge::getWeight(int)”

有谁知道如何解决这个问题?

0 投票
1 回答
151 浏览

c++ - BGL - 使用具有捆绑属性的流算法

我似乎无法弄清楚如何让 BGL 的 push-relabel 最大流量算法与捆绑属性一起使用。

像这样设置图表:

我创建一个

并选择

然后我继续向图中添加边,并为每个插入的边添加容量为 0 的反向边。

使用地图

完成后,我尝试像这样调用库函数push_relabel_max_flow

这无法编译(带有非常不可读的错误消息)。

不幸的是,文档提供的示例仍在使用它自己标记为弃用的内部属性,所以我很难在我的方法中找到错误。有没有人碰巧看到它?

当我们在处理它时(并且很可能是相关的),我可以以某种方式使边缘的反向边缘成为(捆绑的一部分!)边缘属性吗?如果是这样,怎么做?

更新

不知道这里发生了什么,但事实证明

将产生错误,而

才不是。

(例如

按预期工作:http: //ideone.com/U3O0p8

编译器错误:http: //ideone.com/uUuiKc

)

0 投票
1 回答
314 浏览

c++ - 在 boost::graph 中访问 std::shared_ptr 的成员函数?

我正在努力将boost::graph算法的使用转变为一组新的实现类。我想知道:如果boost::graph唯一存储std::shared_ptr引用,是否甚至可以访问对象的属性?如下所示:

是否可以访问 a 的成员std::shared_ptr以在图形标签编写器write_graphviz或实现中的任何其他属性中使用?

谢谢!

0 投票
1 回答
341 浏览

c++ - 无法在 Kamada-Kawai 布局中使用整数边权重

问题从这里开始,但在所有更新之后,它已经是一个具有不同标题的不同问题。

我的Graph类型定义如下:

CostType恰好在哪里int

我正在尝试获取 Kamada-Kawai 弹簧布局,如下所示:

gcc版本 4.8.2 抱怨:

这条信息太神秘了,我无法理解。它与无法转换int [2][2]double (*)[2]. 这与事实有关CostTypeint?但为什么不能呢?我将非常感谢帮助理解我做错了什么。

0 投票
1 回答
1011 浏览

c++ - 使用 Boost Graph Library 将 boost 动态属性写入文件

我已经在这里问了一个关于使用 Boost Graph Library 并将图形写入文件的问题。由于我的要求发生了变化,我需要将动态图形属性写入 DOT 文件。经过一番查找,我设法想出了一些代码,但它不起作用。以下是我到目前为止所做的:

Map 类使用 Cell 类作为顶点,而 Cell 类使用单独的 CellProperty 类来设置和获取所有 Cell 属性。

最后是我构建图形并尝试将图形写入 DOT 文件的 Map 类。

地图.h

地图.cpp

我遇到的问题是 boost::get() 的 propertiesOutPut.property() 方法。我无法找出 boost::get() 的正确参数。请帮帮我。谢谢 !!

0 投票
0 回答
206 浏览

c++ - 使用 Boost Graph Library 进行连接组件或反向搜索

是否可以针对BGLconnected_components()中的双向图(用 构建)运行?::boost::bidirectionalS当使用以这种方式构建的图形运行类似的东西时,我遇到了分段违规:

这并不奇怪,因为文档表明它仅可用于无向图。

如果做不到这一点,是否可以反向使用其中一种搜索算法(BFS 或 DFS) ?例如,我想在终端顶点(没有出站边的顶点)开始搜索并向后工作。

我也可能问了一个错误的问题:我要做的是找到所有顶点的子图,其中包含到给定终端顶点的路径。有没有更直接的方法可以用 BGL 做到这一点?

当然,我可以自己做所有这些,但如果可以的话,我更愿意使用 BGL 设施。

0 投票
1 回答
185 浏览

c++ - 标签图中的权重

如何将权重添加到使用 add_edge_by_label 用于 dijkstra_shortest_paths 的标记图?我试图用一个例子 谢谢