我有一个问题,我将考虑使用什么算法或方法来解决从a点到B点的路径问题,其中两个点不在同一平面上(位于复合物的不同楼层/水平面上-可能不在同一栋建筑上)。
我正在考虑A*Dijkstra's算法然而,根据这个算法,这只(如果我错了,请纠正我)只关注一个地图。对于上述两种算法,拥有不同的地图图(由于许多楼层和许多建筑物)可以有不同的楼层。
为了解决这个困难,我设计了一种格式来显示所有地图的数据一致性。在每个地图中存在建筑物名称、楼层号和每个楼层可能具有的楼层平面图(转换成二维单字符数组)的数据。例如(两个地图位于不同的文件上):

//MainFloor1             //MainFloor2
Main                    Main
1st                     2nd
1:Wall                  1:Wall
2:Door                  2:Door
3:Elevator              3:Elevator
#                       4:Room1
1111441111              5:Room2
1        1              #
1        1              1111441111
1        1              1552  2441
1111221111              1551  1441
#                       1551  1441
//End-MainFloor1        1111221111
                        #
                        //End-MainFloor2

从给定的地图上,如果我想考虑从A点(从主楼层1的最前面开始的第1个'2'下面)到B点(从主楼层2的左上角开始的第1个'4'下面)将返回结果。

// X is the path from Point A to Point B
1111X41111 1111X41111
1   X    1 1552XXXB41
1   X    1 1551  1441
1   X    1 1551  1441
1111A21111 1111221111

我将考虑或采取什么方法从给定的映射输入中产生这样的结果?
谢谢

最佳答案

A*、BFS和其他都是在graphs上工作的算法如果两个节点(顶点)相邻且位于同一楼层,或者它们表示同一电梯但位于不同楼层,则可以将您的问题视为两个节点(顶点)之间存在边的图。
请注意,可以在内存中显式地构建图形,但不必-您可以从探路者的角度将其视为图形。

09-11 18:53