【发布时间】:2014-01-15 17:21:50
【问题描述】:
我有一个矩形网格形状的 DAG,其中水平边缘始终指向右侧,垂直边缘始终指向下方。边缘具有与之相关的正成本。由于矩形格式,使用从零开始的行/列来引用节点。这是一个示例图:
现在,我要执行搜索。起始顶点将始终位于左列(索引为 0 的列)和图形的上半部分。这意味着我将选择起点为 (0,0)、(1,0)、(2,0)、(3,0) 或 (4,0)。目标顶点始终位于右列(索引为 6 的列)并且“对应”于起始顶点:
起始顶点(0,0)对应目标顶点(5,6)
起始顶点(1,0)对应目标顶点(6,6)
起始顶点(2,0)对应目标顶点(7,6)
起始顶点(3,0)对应目标顶点(8,6)
起始顶点(4,0)对应目标顶点(9,6)
我提到这个只是为了证明目标顶点总是可以到达的。这对我的实际问题可能不是很重要。
我想知道我应该使用什么搜索算法来找到从起点到终点的路径?我正在使用 C++ 并且可以访问 Boost Graph Library。
对于那些感兴趣的人,我正在尝试实施 Fuchs 在他的 Optimal Surface Reconstruction from Planar Contours 论文中提出的建议。
我查看了 A*,但说实话并没有理解它,也不是启发式的工作原理,甚至我是否能想出一个!
由于矩形形状和规则的边缘方向,我认为可能有一个非常适合的算法。我考虑过 Dijkstra
但我提到的论文说有更快的算法(但对我来说很烦人并没有提供实现),而且那是
单源,我想我想要单对。
【问题讨论】:
标签: c++ graph-algorithm boost-graph