【发布时间】:2015-05-31 13:42:28
【问题描述】:
我在解决一个特定问题时遇到了一些麻烦,即在迷宫图中找到最短路径。可能,我被卡住了,因为迷宫是由一个四维数组初始化的,比如
adjacent = new boolean[height][width][height][width];
第一对和第二对索引以行/列的形式指定图表中的位置。图表如下所示:
XXXXXXXXXXXXX
..........X.X
X.XXX.XXX.X.X
X.X.X...X.X.X
X.X.XXX.XXX.X
X...X.....X..
XXXXXXXXXXXXX
ArrayList 必须保存路径中顶点的位置,从头到尾都包含在内。
构造函数和连接方法我已经写好了;但是,我在寻找最短路径方法时遇到了麻烦。 这是我如何创建迷宫图的示例:
final int edges[][] = {{1, 0, 1, 1}, {1, 1, 1, 2}, {1, 1, 2, 1},
{1, 2, 1, 3}, {1, 3, 1, 4}, {1, 4, 1, 5}, {1, 5, 1, 6},
{1, 5, 2, 5}, {1, 6, 1, 7}, {1, 7, 1, 8}, {1, 8, 1, 9},
{1, 9, 2, 9}, {1, 11, 2, 11}, {2, 1, 3, 1}, {2, 5, 3, 5},
{2, 9, 3, 9}, {2, 11, 3, 11}, {3, 1, 4, 1}, {3, 3, 4, 3},
{3, 5, 3, 6}, {3, 6, 3, 7}, {3, 7, 4, 7}, {3, 11, 4, 11},
{4, 1, 5, 1}, {4, 3, 5, 3}, {4, 7, 5, 7}, {4, 11, 5, 11},
{5, 1, 5, 2}, {5, 2, 5, 3}, {5, 5, 5, 6}, {5, 6, 5, 7},
{5, 7, 5, 8}, {5, 8, 5, 9}, {5, 11, 5, 12}};
MazeGraph maze = new MazeGraph(13, 7);
for (int[] edge : edges)
maze.connect(new Location(edge[0], edge[1]), new Location(edge[2], edge[3]));
【问题讨论】:
-
你听说过Dijkstra算法吗?
标签: java graph shortest-path maze