Минимальное расстояние между началом и концом при прохождении должно посещать точки в лабиринте
Итак, предположим, у меня есть лабиринт, который имеет начальную и конечную точки, помеченные оранжевым и красным соответственно, и моя цель - найти минимальное расстояние между ними. Заблокированный путь представлен черным цветом, а открытый путь представлен белым цветом. Однако в этом есть две модификации.
Есть несколько клеток, которые нужно посетить, отмеченные серым цветом.Любую ячейку можно посетить любое количество раз (даже точки начала, окончания и посещения)например, B = черный, W = белый, G = серый, R = красный, O = оранжевый
BBBBBB BBBBB
BBGBBB BWGGB
MAZE1 => BOWGRB MAZE2 => BOBBB
BBGBBB BWWRB
BBBBBB BBBBB
Вот в этом случае ANS будет
MAZE1 => M[2][1] => [2][2] => [1][2] => [2][2] => [3][2] => [2][2] => [2][3] => [2][4] = 7
MAZE2 => M[1][1] => [1][2] => [2][2] => [3][2] => [3][3] => [3][2] => [2][2] = 6
Как видите, узлы появляются несколько раз
Сначала я подумал об использовании техники рекурсии (backtracking), но не смог прийти к алгоритму. а также
Поэтому я подумал об использовании этого способа.
Я буду отслеживать все координаты точек посещения, начальной и конечной точекНайти расстояние между каждым узлом (как в сортировке выбора, мы сравниваем каждый член, так же, как мы получаем минимальное расстояние между каждым узлом (используя BFS))Затем примените некоторый алгоритм минимального расстояния. Я думал о TSP, но он говорит, что узлы должны посещаться ровно один раз. Вот это может быть несколько раз. Я обнаружил проблему китайского почтальона, но не знаю, можно ли ее здесь применить. Алгоритм Флойда Уоршолла есть, но он не включает в себя всеКак мне поступить, любая идея?