У меня есть некоторые проблемы с решением конкретной проблемы, которая заключается в поиске кратчайшего пути в графе лабиринта. Вероятно, я застрял из-за того, что лабиринт инициализирован четырехмерным массивом вроде 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]));
Вы слышали * Алгоритм Дейкстры *? –