Бектрекинг.
Создаешь массив ребер, пока не конечная точка, перемещаешься из текущей вершины в любую соседнюю, ребро до которой пройдено меньше 2 раз. Увеличиваешь в этом массиве число прохождений этого ребра. Кратчайший путь - последовательность ребер, помеченная 1.
Волновой алгоритм (алгоритм Ли)
Помечаешь все соседние вершины с твоей числом 1, перебираешь все соседние непомеченные с вершинами, помеченными n, и помечаешь их n+1, пока не добираешься до конечной точки. Кратчайший путь - последовательность, идущая от N (число в конечной точке) до 1 сверху вниз.
Ответить
|