我目前正在从事室内寻路项目。您可以这样想象: enter image description here
在我的应用程序中,我已经实现了起始房间和目标房间的两个搜索视图。进入两个房间之后,应用程序应启动一个算法,例如A *,以计算这两个房间之间的最短路径。突然,用户可以看到这两个房间之间的画线。
您对我如何在Android上实现A *算法(如图片所示)有任何建议吗?
答案 0 :(得分:0)
A *算法依靠图论。
因此,首先,您应该将房间绘制为图形(每个房间/楼层是一个顶点或节点,每个门都是一个边)。我建议您为此使用众所周知的实现(here是一个示例)。
根据您的架构,您的图形应如下图所示
保留HashMap(或其他内容)以跟踪哪个房间映射到哪个节点,以及哪个走廊链接到哪个边缘。
然后,当您的使用要求路径时,请计算A *算法。我链接到的示例看起来像这样
List<Node> path = aStar.findPath();
将节点列表重新映射回房间列表,并显示给您的用户。
注意:如果您想使其非常整洁,可以重写AStar.java
以接受Room
的列表,并使其吐出另一个Room
的列表