【发布时间】:2015-02-08 17:02:53
【问题描述】:
我的问题主要是关于地图表示的,我想听听您的意见。
有一张由一堆道路和它们之间的连接表示的地图 - 假设道路 A 在一个边缘连接到 B、C、D,但从 A 到 C 和 D 只能转弯。 假设我用一张图来表示这一点,其中每条道路都是一条边,每条道路的交汇点/终点都是一个顶点。
我想在这样的表示上运行 A* 或任何其他,但是......在图中从一个节点移动到另一个节点我严格需要知道我来自哪里......我的意思是 - 从哪个方向。我可以移动的下一个顶点取决于我拥有的开放转弯。
我可以保持我来自哪里,但我也希望它尽可能通用,简单的图形解决方案无法让我知道我来自哪里。
您能告诉我您将如何处理这个问题吗?
谢谢!
【问题讨论】:
-
我猜你要么需要允许对图中的节点或边进行注释,要么有一个单独的数据结构将它们映射到注释(这里的注释只是路径权重和访问的标签)。
-
你不能直接在堆栈上推送你来自哪里吗?
-
@ChiefTwoPencils 我可以做到,但我也想让它尽可能通用......
-
堆栈是一个通用容器,我不确定通用性是堆栈的问题。例如,我们知道这就是您的“位置”在一组递归调用中的方式。
-
@ChiefTwoPencils 但是当我要求图表为我提供连接时,简单的图表实现并没有考虑到我来自哪里......所以即使我把这个信息保存在堆栈,我仍然需要为图表提供一些额外的信息
标签: java algorithm gis dijkstra a-star