提升图形库:资源受限的最短周期
Boost Graph Library: shortest cycle with resource constraints
>问题
在具有任意弧长(行程时间、成本(的有向图中,找到最短(最快、最便宜(的循环(或没有重复顶点的闭合行走(。或者,找到通过给定顶点的最短周期。
走向解决方案
提升图库的r_c_shortest_paths解决了这个确切的问题......最短路径。 该示例清楚地演示了它的用法。
尽管尝试了几种方法,但无法有效地使用r_c_shortest_paths来解决上述问题。
问题
是否可以使用r_c_shortest_paths来解决此问题?如果是这样,如何?
另一种BGL算法?
另一个C++图库?
谢谢
如果你不想写一些东西,比如从原点到达的图的完整遍历(这可能不是那么糟糕或那么难(,这里阻力最小的路径,特别是考虑到你的图是定向的,可能是只在原点的每个邻居上使用r_c_shortest_paths
(在正确方向的意义上(。假设一个实现,它将是这样的:
std::vector<Path<Nodes>> best_paths;
size_t first_step = -1;
for(auto&& [neighbor, weight] : boost::zip(origin.neighbors(), origin.weights())) {
auto paths = r_c_shortest_paths(neighbor, origin);
if(!paths.empty() && (best_paths.empty() || paths[0].cost + weight < best_paths[0].cost + first_step)) {
best_paths = paths
first_step = weight
}
}
事实证明,优秀的 Boost 库有解决方案,r_c_shortest_paths函数能够做到这一点......我猜只需要在文档上花费足够的时间。
周期
从文档中的伪代码可以看出,当资源约束或支配函数命中时,算法会停止扩展路径。在下一步中检查是否已到达终端节点。因此,使用相同的顶点作为开始和结束允许列出周期。
相关文章:
- 提升图形库:资源受限的最短周期
- 提升图形库 - 深度优先 仅通过连接的顶点进行搜索
- 如何在提升图形库中获取属性的类型
- 提升图形库:以高性能的方式检查vertex_descriptor的有效性
- 提升图形库 - 具有正好 N 条边/顶点的图形
- 有没有办法通过 LEMON 图形库中的 Map 值获取节点?
- 提升图形库 - 将矢量推送到边缘属性
- 是否可以同时使用 GUI 和 3D 图形库创建应用程序
- 创建像OpenGL这样的图形库
- 提升图形库:防止 DFS 访问未连接的节点
- 用于将三维模型导入OpenGL/C++项目的推荐文件格式和图形库
- 无法链接 read_graphviz() 示例的提升图形库
- 提升图形库:获取edge_descriptor或通过 int 类型的索引访问边缘
- 使用两个访问者提升图形库
- 提升图形库:顶点过滤图上的 BFS
- 在使用 BOOST 图形库生成的图形中添加随机边
- C/C++图形库查询节点由三个部分组成
- 我正在尝试通过 Boost 图形库从 Graphviz DOT 文件中读取图形.如何读取存储在数组中的未知数量的属性
- 我应该使用图形库吗?
- 提升图形库 - 来自外部向量的权重属性