【发布时间】:2016-07-29 13:39:38
【问题描述】:
我有一个表示路线网络的图表 - 路点是顶点,路线是边。问题是航路点之间可能存在在某些时期无法跨越的区域。但这些区域不一定会影响顶点,而只会影响边。
我使用时间作为成本函数,因此对于每个顶点(以及边缘),我可以得到访问者和/或启发式的到达时间。但是,由于权重图是可读的,我无法更改边的权重以使其“太长”。
另一方面,我无法创建自定义权重图,因为我不知道提前到达的时间,因为这取决于路径。
我在论坛中发现的知识是使用启发式并将其设置为 inf 以防“坏”顶点。但我需要的是选择“坏”的边缘。
您是否知道在启发式中访问当前检查的边(默认情况下,它的唯一输入是顶点描述符)?
我知道我可以在 inspect_edge 访问者中做出决定,但是我应该在其中调用什么来让 astar 知道这个边缘很糟糕,不应该使用?也许我可以创建一个外部布尔“坏边缘”属性映射(对于所有顶点),如果当前边缘是“坏的”,则在检查边缘访问者中将目标顶点设置为 true?然后可以通过启发式访问这个“坏边缘”属性映射。 但是,在我看来,这可能不是最好的解决方案。
还有什么想法吗?
提前致谢!
【问题讨论】:
标签: c++ algorithm graph a-star boost-graph